C# 为什么没有定义 sizeof(constant)
本文关键字:constant sizeof 定义 为什么 | 更新日期: 2023-09-27 17:56:16
对不起,我只是写了一些东西来表达我的观点。
下面是一个实际的示例代码:
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);
}
}
}
如果我有一个常量,为什么我会收到错误:严重性代码说明项目文件行抑制状态错误 CS0233 'a' 没有预定义的大小,因此 sizeof 只能在不安全的上下文中使用(考虑使用 System.Runtime.InteropServices.Marshal.SizeOf)
为什么固定大小变量需要元帅?
来自 MSDN: sizeof (C# 参考)
对于所有其他类型,包括结构,sizeof 运算符可以是仅用于不安全的代码块。虽然您可以使用Marshal.SizeOf 方法,此方法返回的值并不总是与 SizeOf 返回的值相同。Marshal.SizeOf 返回类型封送后的大小,而 sizeof 返回由公共语言运行库分配的大小,包括任何填充。
用于获取非托管类型的大小(以字节为单位)****
很有可能,实际上没有理由需要获取托管类型的字节大小,这就是您正在执行的操作。
"为什么我需要一个固定大小变量的元帅?"
如果您正在寻找的只是局部变量的大小,则不一定必须这样做。您可以简单地拨打var size = sizeof(int)
或sizeof(short)
将分别返回 4 和/或 2。