使用通用方法在 C# 中计算值类型(int、float、string)的大小

Calculate Value Types (int, float, string) Sizes In C# With Generic Method

我想编写计算值类型大小的方法。但我不能将值类型(int、double、float)作为方法参数。

   /*
    *When i call this method with SizeOf<int>() and 
    *then it returns 4 bytes as result.
    */
   public static int SizeOf<T>() where T : struct
   {
       return Marshal.SizeOf(default(T));
   }

   /*
    *When i call this method with TypeOf<int>() and 
    *then it returns System.Int32 as result.
    */
   public static System.Type TypeOf<T>() 
   {
       return typeof(T);
   }

我不想 way.I 想把这个方法写成下面这样。

   /*
    *When i call this method with GetSize(int) and 
    *then it returns error like "Invalid expression term 'int'".
    */
   public static int GetSize(System.Type type)
   {
       return Marshal.SizeOf(type);
   }

那么我如何将值类型(int、double、float、char ..)传递给方法参数以计算它的通用大小。

您现有的代码可以正常工作:

public static int GetSize(System.Type type)
{
    return Marshal.SizeOf(type);
}

不确定您发布的错误来自何处,但不是来自这里。如果你愿意,你可以使这个通用:

public static int GetSize<T>()
{
    return Marshal.SizeOf(typeof(T));
}

您收到 GetSize(int) 错误的原因是 int 不是一个值。您需要像这样使用 typeofGetSize(typeof(int)),或者如果您有一个实例,则:GetSize(myInt.GetType()).