一个变量我有这样的代码:声明使用类型变量
Type leftType = workItem[LeftFieldName].GetType();
那么我想声明该类型的变量:
leftType someVar;
这可能吗?
一个变量我有这样的代码:声明使用类型变量
Type leftType = workItem[LeftFieldName].GetType();
那么我想声明该类型的变量:
leftType someVar;
这可能吗?
你可以做这样的事情,并将它们投射到一个已知的界面。
var someVar = Convert.ChangeType(someOriginalValue, workItem[LeftFieldName].GetType());
var someVar = Activator.CreateInstance(workItem[LeftFieldName].GetType());
如果您要更换var
与dynamic
(和你使用的是.NET 4),你可以叫你预期的someVar对象的方法。如果它们不存在,你只会得到一个MissingMethodException。
你不能那样做。
您可以使用dynamic类型对于.NET 4,但对于早期版本的.Net,将适合的唯一类型是object
,您将需要手动通过您指定给object
什么再次测试.GetType()
后投型变量。
不知道这是如何适用。 'var'的使用在这里并不重要。 – Joe 2011-01-26 00:46:11
您可能会注意到我将`var someVar;`更改为`var someVar =`,然后将其指定为隐式输入`someVar`。这会得到专门输入“someVar”,这是OP后的。就像不需要弄清数据库列类型一样。 – RichardTheKiwi 2011-01-26 00:48:49
我希望你知道* var * ALWAYS将在编译时解析为特定类型! – 2011-01-26 00:52:40
这是不可能的。
变量类型是编译时的概念;声明类型的变量是没有意义的,该变量直到运行时才知道。
你不能对变量做任何事情,因为你不知道它是什么类型。
您可能正在寻找dynamic
关键字。
不,这是不可能的。编译时必须知道变量的类型。
您可以声明一个object
类型的变量,它将能够存储任何数据类型。
GetType
在运行时进行评估,非dynamic
声明处于编译时(它确实比这更具体,是的),所以没有。即使var
也要求您为其指定一个明确类型的值。
object x = Activator.CreateInstance(Type)将让你创建对象。无论你在这点上能做得多多,我都不确定。
不,你不知道。仔细考虑一下,你会发现这样一个变量是完全无用的。 – SLaks 2011-01-26 00:45:22
你想完成什么?还有另一种方法可以解决你的实际问题。 – Trinidad 2011-01-26 01:11:32