ねえ、私はそのようなものが欲しいです
int a=0;
a=5(be unchangeable);
a=3;
Console.WriteLine(a);//which will print 5 and not 3
基本的に、変数を数値として宣言し、最終的で変更できないようにします。周りを見回してみましたが、intが宣言されているときに機能するものだけが見つかり、新しい値が宣言されているわけではありません。
ねえ、私はそのようなものが欲しいです
int a=0;
a=5(be unchangeable);
a=3;
Console.WriteLine(a);//which will print 5 and not 3
基本的に、変数を数値として宣言し、最終的で変更できないようにします。周りを見回してみましたが、intが宣言されているときに機能するものだけが見つかり、新しい値が宣言されているわけではありません。
const int a = 0;
const キーワードは、フィールドまたはローカル変数の宣言を変更するために使用されます。フィールドまたはローカル変数の値が定数であることを指定します。これは、変更できないことを意味します。
参考文献
const
キーワードが欲しい。
const int a = 5;
MSDNから:
const キーワードは、フィールドまたはローカル変数の宣言を変更するために使用されます。フィールドまたはローカル変数の値を変更できないことを指定します。
編集:あなたの要件は奇妙で役に立たないように聞こえます。ただし、本当に必要な場合は、カスタム タイプを作成する必要があります。bool
変更可能かどうかを示すプロパティを持つクラスをお勧めします。
public class MyCustomInt
{
public bool IsMutable { get; set; }
private int _myInt;
public int MyInt
{
get
{
return _myInt;
}
set
{
if(IsMutable)
{
_myInt = value;
}
}
}
public MyCustomInt(int val)
{
MyInt = val;
IsMutable = true;
}
}
次に、それを使用する場合:
MyCustomInt a = new MyCustomInt(0);
a.MyInt = 5;
a.IsMutable = false;
a.MyInt = 3; //Won't change here!
Console.WriteLine(a); //Prints 5 and not 3
それはあなたが得ることができるのと同じくらい良いと思います。
使用readonly
:
コンストラクターによって変更できますが、再度変更することはできません。
public class MyClass {
private readonly int a = 0;
public MyClass(int a) {
this.a = a;
}
public void DoSomethingWithA() {
Console.WriteLine(this.a);
//a = 5 // don't try this at home kids
}
}
new MyClass(5).DoSomethingWithA();
const
との素敵な比較readonly
const
キーワードで定数を使用できます。
const int a = 5;
ただし、そうすると、別の値に変更できなくなります。
ポインターの使用を確認することもできます。
int x = 5;
int y = 3;
int *ptr1 = &x; // point to x memory address
int *ptr2 = &y; // point to y memory address
Console.WriteLine(x); // print 5
Console.WriteLine(y); // print 3
Console.WriteLine((int)ptr1); // print 5
Console.WriteLine((int)ptr2); // print 3
Console.WriteLine(*ptr1); // print 5
Console.WriteLine(*ptr2); // print 3
*
char はポインタを識別し&
、メモリ アドレスを指定します。ただし、参照型とは異なり、ポインタ型はデフォルトのガベージ コレクション メカニズムによって追跡されないため、ポインタには注意が必要です。