搞明白这一点就ok了!(1)const是编译时常量(2)readonly是运行时常量Demo: 比如我一个类库中某一个类生明了一个const和readonly常量 namespace AA { public class A { public const string a1="1"; public readonly string a2="1"; } }现在我有另外一个程序集引用了改程序集,我再这个程序集中调用a的变量 namespace BB { public class B { public void Print() { A a=new A(); console.writeline(a.a1); console.writeline(a.a2); } } } 然后我编译AA程序集,在编译BB,控制台中执行Print,输出结果:1,1好接下来AA程序集发生了变化 namespace AA { public class A { public const string a1="2"; public readonly string a2="2"; } } 这时我只编译AA程序集,不编译BB,问此时输出什么?这是很经典的例子,帮助你理解运行时与编译时,自己验证下吧!
比如我一个类库中某一个类生明了一个const和readonly常量
namespace AA
{
public class A
{
public const string a1="1";
public readonly string a2="1";
}
}现在我有另外一个程序集引用了改程序集,我再这个程序集中调用a的变量
namespace BB
{
public class B
{
public void Print()
{
A a=new A();
console.writeline(a.a1);
console.writeline(a.a2);
}
}
}
然后我编译AA程序集,在编译BB,控制台中执行Print,输出结果:1,1好接下来AA程序集发生了变化
namespace AA
{
public class A
{
public const string a1="2";
public readonly string a2="2";
}
}
这时我只编译AA程序集,不编译BB,问此时输出什么?这是很经典的例子,帮助你理解运行时与编译时,自己验证下吧!
readonly 运行时常量,在运行时才加载其值。