使用通用方法在 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
不是一个值。您需要像这样使用 typeof
:GetSize(typeof(int))
,或者如果您有一个实例,则:GetSize(myInt.GetType())
.
我想编写计算值类型大小的方法。但我不能将值类型(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
不是一个值。您需要像这样使用 typeof
:GetSize(typeof(int))
,或者如果您有一个实例,则:GetSize(myInt.GetType())
.