我知道我可以使用string
类型:
string someString = "This is my string";
我不确定如何使用Type
Type someType = someString.GetType();
我如何根据该类型创建变量。我想做像
这样的事情someType someOtherString = "here is another string";
//string
换句话说,我怎么能根据某种类型创建变量?
答案 0 :(得分:2)
有几种方法可以解决这个问题,但最简单的方法是使用Activator类。
http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx
示例:
Type t = someClassInstance.GetType();
object o = Activator.CreateInstance(t);
答案 1 :(得分:2)
必须在声明时知道变量类型。您可以声明类型为object
的变量,然后动态创建一个在执行时只知道的类型的实例,但是您无法动态声明这样的变量。
您可以获得的最接近的是创建泛型类型并使用使用反射指定的类型参数来实例化该类型。然后你真的会有一个正确类型的变量 - 但你不能做任何特别有用的事情。
区分变量的类型和变量值可能引用的对象类型非常重要。例如:
object foo = Activator.CreateInstance(someType);
最终将使用object
类型的变量,但foo
的值将是对someType
所指的任何类型的实例的引用
答案 2 :(得分:1)
尝试
var object = Activator.CreateInstance(myType);
答案 3 :(得分:0)
从C#3开始,你可以这样做:
var someOtherString = "here is another string";
这样你不关心什么是类型,var
是类型“joker”并且你需要在声明时知道类型。
希望你的意思是什么?
答案 4 :(得分:0)
使用Assembly.CreateInstance()
Type type = typeof(String);
Assembly asm = Assembly.GetExecutingAssembly();
object blah = asm.CreateInstance(type.FullName);