【发布时间】:2021-10-29 21:59:47
【问题描述】:
免责声明:这个问题只是出于好奇,显然人们不应该尝试这样做。
我知道常量不是变量。但是常量的值必须存储在内存中的某个地方,对吗?并且那个内存位置有一个地址。所以一定有办法得到那个地址,对吧?
类似这样的:
const int seven = 7;
void Test()
{
Console.Write(seven);//7
int* pointerToSeven = GetThePointerOfConstSeven();//here we get the pointer to the constant
Increment(pointerToSeven);
Console.Write(seven);//8
}
void Increment(int* value)
{
(*value)++;
}
忽略这是一件愚蠢的事情,有没有办法在 C# 中做到这一点?
【问题讨论】:
-
主要答案是否定的,这是不可能的。这是因为
7不必存储在任何地方的(数据)内存中——它只是在 IL 和机器代码中直接称为数字。但是,const的一种类型确实需要存储 -const string。然后你可以得到一个char*并修改字符串。