【发布时间】:2016-07-11 15:22:33
【问题描述】:
对不起,我刚刚写了一些东西来表达我的观点。
这是一个实际的示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CacheScratch
{
class Class1
{
public const int a = 0xABAC;
int test()
{
return sizeof(a);
}
}
}
如果我有一个 const,为什么会出现错误: 严重性代码 描述 项目文件行抑制状态 错误 CS0233 'a' 没有预定义的大小,因此 sizeof 只能在不安全的上下文中使用(考虑使用 System.Runtime.InteropServices.Marshal.SizeOf)
为什么我需要一个 Marshal 用于固定大小的变量?
【问题讨论】:
-
您的代码尚未接近编译。你引用了一个不存在的变量,你没有使用类型参数并且
0xA4B4不适合简短。 -
sizeof 采用 C# 中的类型,而不是任意表达式。
-
在 .Net 中您甚至不需要知道这一点,因为它是托管代码。
-
在 C# 中,int 的大小始终为 4。但是你为什么关心尺寸是多少? 在此处说出您实际要解决的问题。如果您尝试在 C# 中获取整数的大小,则很有可能您做错了什么。