C#:在运行时使用类型名称创建变量(rtti?)
C#: Create variable with typename in runtime (rtti?)
我需要创建一些具有某些预定义类型的变量,这些变量存储在其他变量值中。
在伪代码中它看起来像:
string typeName = "int";
object refToObj;
create data refToObj type typename.
write refToObj.getSize();
此伪代码必须创建类型为 int 的 var refToObj,然后在输出中 return 4(写入指令..)。
如何在 C# 中执行此操作?
类似下面的内容?
Type t = Type.GetType("System.Int32");
Console.WriteLine("Sizeof: " + System.Runtime.InteropServices.Marshal.SizeOf(y));
Console.WriteLine("Type: " + t);
var x = Activator.CreateInstance(t);
Console.WriteLine("Value: " + x);
将输出:
Sizeof: 4
Type: System.Int32
Value: 0
注意: int
是基础系统类型的别名,在 32/64 位操作系统上会有所不同。对于 Activator.CreateInstance
你需要适当的系统类型才能成功,尽管你可以有某种形式的 Dictionary
映射。
我需要创建一些具有某些预定义类型的变量,这些变量存储在其他变量值中。 在伪代码中它看起来像:
string typeName = "int";
object refToObj;
create data refToObj type typename.
write refToObj.getSize();
此伪代码必须创建类型为 int 的 var refToObj,然后在输出中 return 4(写入指令..)。
如何在 C# 中执行此操作?
类似下面的内容?
Type t = Type.GetType("System.Int32");
Console.WriteLine("Sizeof: " + System.Runtime.InteropServices.Marshal.SizeOf(y));
Console.WriteLine("Type: " + t);
var x = Activator.CreateInstance(t);
Console.WriteLine("Value: " + x);
将输出:
Sizeof: 4
Type: System.Int32
Value: 0
注意: int
是基础系统类型的别名,在 32/64 位操作系统上会有所不同。对于 Activator.CreateInstance
你需要适当的系统类型才能成功,尽管你可以有某种形式的 Dictionary
映射。