char* str = "1234";
int nonStr = *((int*)str);
(我故意将字符串设为4个字符,因此在平均情况下它将具有与整数相同的字节数。)这将取消引用存储str
的内存,并为其提供值(如果是一个整数(522207554
如果我做了正确的转换)。
有没有办法在C#中做同样的事情?我知道这是一个低级别的内存操作,通常对C#程序员来说是幸福的隐藏,我只是为了教学而这样做。
答案 0 :(得分:5)
您可以使用不安全的上下文和fixed
语句:
static unsafe void Main(string[] args)
{
string str = "1234";
fixed(char* strPtr = str)
{
int* nonStr = (int*)strPtr;
Console.WriteLine(*nonStr);
}
}
打印
3276849
答案 1 :(得分:1)
您正在寻找C#的unsafe
功能。
这是one reference。对“C#unsafe指针取消引用”的一般搜索会产生许多结果。
答案 2 :(得分:0)