一個變量我有這樣的代碼:聲明使用類型變量
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