c# const string s="hello"
为什么,随着程序的单步调试,s在内存中的地址指向一直在变化,什么原因,想知道内部是如何分配地址的??????????、
const类型的对象不是变量,是常量,以下语句等同:
const string s="hello";
string s1 = s;
string s1="hello";
当你在语句中使用到const对象的时候,编译系统是直接把const对象定义的内容复制到使用这个对象的地方。
一下练习你会了解const的特点(与static readonly对象比较):
Dll1:
namespace Dll1
{
public class Data
{
public readonly static string s1="version 1 hello1";
public const string s2="version 1 hello2";
}
}
Dll2:
namespace Dll2
{
class App
{
public string GetDll1S1()
{
return Dll1.Data.s1;
}
public string GetDll1S2()
{
return Dll1.Data.s2;
}
}
}
以上代码存在于两个模块中。当你因为某种原因(比如DLL1是由第三方提供的)修改了DLL1时,比如把内容修改为:
namespace Dll1
{
public class Data
{
public readonly static string s1="version 2 hello1";
public const string s2="version 2 hello2";
}
}
此时,如果你不重新编译DLL2,你会发现DLL2中两个函数返回结果的不同。