来自 C 的 Iirc,您可以按照以下行进行声明:
char* str = "1234";
int nonStr = *((int*)str);
(我故意将字符串设为 4 个字符,因此在一般情况下它将具有与整数相同的字节数。)这将取消引用存储 str
的内存并为您提供值如果它是一个整数(522207554
如果我转换正确的话)。
有没有办法在 C# 中做同样的事情?我知道这是一个低级的内存操作,通常对 C# 程序员很高兴地隐藏起来,我这样做只是为了进行教学练习。
最佳答案
您可以使用不安全的上下文和fixed
语句来做到这一点:
static unsafe void Main(string[] args)
{
string str = "1234";
fixed(char* strPtr = str)
{
int* nonStr = (int*)strPtr;
Console.WriteLine(*nonStr);
}
}
打印
3276849
关于c# - 强制执行内存级别转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21652944/