2016-11-02 9 views
3

PHPでは、簡単にアクセスできるconst値を持つクラスを定義することができますが、どのようにC#でそれを行うのですか?C#で静的クラスを定義せずにconst値にアクセスするには?

<?php 
class MyClass 
{ 
    const CONSTANT = 'constant value'; 
} 

echo MyClass::CONSTANT; 

phpクラスは一般的なクラスにすることができますが、同じ関数を取得するにはC#で静的なクラスにする必要がありますか?その性質上

答えて

1

const変数は静的な値です。そのため、クラス内で定数を宣言した場合、暗黙的に静的であるため、定数をstaticとして宣言することはできません。

public class Values 
{ 
    public const int CONSTANT_VALUE = 12; 
} 

静的フィールドへのアクセスと同じ方法で定数へのアクセスが行われます。

int i = Values.CONSTANT_VALUE; 

constの制限は、しかしながら、それは唯一の値型と一緒に使用することができることです。これは、プログラムがコンパイルされるときに、定数が参照されている場所であれば、実際には定数がリテラル値に変換されるからです。プログラムがコンパイルされた後、定数に上記のアクセスは基本的にこれに変換されます:

int i = 12; 

constフィールドが暗黙的に静的であるという理由だけで、それが唯一の静的クラス内で宣言することができますという意味ではありません。静的クラスは、インスタンスメンバーを含まない特別なクラスです。通常のクラスは、静的メンバとインスタンスメンバの両方を保持できます。

public class Values 
{ 
    public const int CONSTANT_VALUE = 12; 
    public int Val; 
} 

このクラスは、そのまま使用することができます。

Values v = new Values; 
v.Val = Values.CONSTANT_VALUE; 
+0

おかげでそんなにそれは私の問題を解決し、私が使用してアクセスしようとしているまま「::」の代わりに「」 – Gavin

関連する問題