class Constants
{
public const int A = 1;
public const int B = A + 1; //常数也能修改???
}
class Test
{
static void Main()
{
Console.WriteLine("A = {0}, B = {1}", Constants.A, Constants.B);
Console.ReadLine();
}
} const不是声明为常数吗????怎么也能修改他的值》?????
{
public const int A = 1;
public const int B = A + 1; //常数也能修改???
}
class Test
{
static void Main()
{
Console.WriteLine("A = {0}, B = {1}", Constants.A, Constants.B);
Console.ReadLine();
}
} const不是声明为常数吗????怎么也能修改他的值》?????
public const int A = 1;
public const int B = 2;
而不是B=A+1;
以前看过一个例子。就是
在Assembly A里面,有
class AA
{
public static const int a = 100;
}
在Assembly B里面,有
Class BB{
public static const int b = A.AA.a;
}
这时如果都编译了(生成了A.dll,B.dll),然后修改了Assembly A
class A
{
public const int a = 200;
}
此时因为B.dll没有重新编译,这个b仍然是100,呵呵。
readonly初始值可以用变量(在构造函数里初始化),初始化后是只读的。如果
public int A = 1;
public const int B = A + 1; //常数也能修改???
这样就不行了。6楼说得编译后直接赋值为常量完美解释。