Tag: sizeof

这个C#结构的大小是多少?

存储在List时是12个字节还是16个字节? public struct DataPoint { DateTime time_utc; float value; } C#中有任何sizeof函数吗?

C#sizeof(枚举)替代? (解决方法resharper false error)?

在C#中,我有一些与UAC提升相关的“安全”API代码。 它涉及获取枚举的大小(如下) int myEnumSize = sizeof (MyEnum); 代码本身是有效的,编译,正常工作等。但Resharper在解决方案中错误地将其标记为错误(“不能在安全上下文中使用不安全的构造”)。 ( 从C#2.0版开始,将sizeof应用于内置类型不再需要使用不安全模式。 )我喜欢Resharper,我喜欢解决方案分析,但是在解决方案中使用此代码我有一个很大的红点让我觉得有些东西被打破的角落。 如果我告诉resharper忽略这个错误,它会在几分钟内回来。 我会提出JetBrains的问题,但我看了他们的跟踪器,他们已经有一个记录,自3月以来一直被忽略。 进一步观察他们至少还有两个这样的记录事件可以追溯到几年前,两者都被解雇,并且处于“无重复”状态。 我不想只是为了对这个错误进行投票而注册他们的跟踪器。 我可能最终屏住呼吸多年了。 最快的方法就是解决这个问题。 什么是最好的替代方案,仍然是正确的,并且最小的机会导致维护者以后遇到麻烦? 我可以硬编码: int myEnumSize = 4; 有更正确的解决方案吗? – 哪个不使用sizeof(枚举)? BTW: Marshal.SizeOf() 是完全“安全”但返回错误的大小。 PS。 问题中的代码很大程度上受到Microsoft的UACSelfElvation演示代码的影响。 如果您想了解更多细节。 但我不认为它们是相关的。

通用结构的大小

我需要找出一个通用结构的大小(我不能像sizeof(T)或使用Marshal.SizeOf(…)0>给我一个错误) 所以我写道: public static class HelperMethods { static HelperMethods() { SizeOfType = createSizeOfFunc(); } public static int SizeOf() { return SizeOfType(typeof(T)); } public static readonly Func SizeOfType = null; private static Func createSizeOfFunc() { var dm = new DynamicMethod(“SizeOfType”, typeof(int), new Type[] { typeof(Type) }); ILGenerator il = dm.GetILGenerator(); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Sizeof); //needs to be il.Emit(OpCodes.Sizeof, […]

获取给定System.Type的结构的sizeof

给定一个结构MyStruct ,我可以在不安全的代码中使用sizeof(MyStruct)来获取该结构的实例大小。 但是,我想获得给定结构的Type对象的结构的sizeof(typeof(MyStruct)) ,即sizeof(typeof(MyStruct)) 。 有Marshal.SizeOf ,但是返回非托管编组大小,而我想要该结构的托管大小。

sizeof()结构未知。 为什么?

为什么我不能在简单的结构上使用sizeof()? 例如: private struct FloatShortPair { public float myFloat; public short myShort; }; int size = sizeof(FloatShortPair); //CS0233 错误CS0233:’FloatShortPair’没有预定义的大小,因此sizeof只能在不安全的上下文中使用(考虑使用System.Runtime.InteropServices.Marshal.SizeOf) MSDN声明: sizeof运算符只能用于编译时常量类型。 如果您收到此错误,请确保可以在编译时确定标识符的大小。 如果不能,则使用SizeOf而不是sizeof。 float和short如何不编译时间常量? 8 /