我正在爲使用C#和XAML的Windows創建一種接口生成器,並且想知道是否可以從字符串中創建變量名稱(Label label_string =「Something」;) 。例如,每次創建新標籤時,變量都將被命名爲{label1,label2,label3,...}。我正在考慮創建一組標籤並更改每個標籤的Name屬性,但是我想知道我的其他想法是否可行。使用字符串創建變量名稱
回答
簡短的回答是否定的。如果你想堅持使用CLR和強類型對象,那麼這些對象定義在編譯時間,並且之後它們的定義不能被改變。
現在,如果你想變得更復雜,有辦法使用反射來做到這一點,併發布新的IL/Wrapper類,以及類似的東西。還有DLR,您可以在其中使用動態對象(ala Javascript),其中定義的對象定義爲運行時間而不是編譯時間。但是,對於你想要做的事情,這可能比維護一組Label
控件更爲複雜和低效,因爲你可以在其中更改Name
屬性,如上所述。
UPDATE
這是出的範圍的SO回答,試圖解釋你如何能真正做到這一點,因爲它是非常複雜的。但是如果你有興趣,你可以研究幾種方法。
其中之一是實際生成c#代碼並在運行時通過編譯器運行,然後動態加載該程序集。快速Bing!搜索打開了這個鏈接,描述了這樣的事情:http://support.microsoft.com/kb/304655
另一種方法是使用System.Reflection.Emit
命名空間來發出CIL指令以構建內存組合。再次,快速Bing!搜索出現了這個鏈接,它談到了這樣的事情:http://msdn.microsoft.com/en-us/library/3y322t50(v=vs.110).aspx
注意:上述鏈接並不精確地解釋你如何要求,但他們給你一個關於方法的想法,你會需要做更多的研究來弄清楚如何使它適合你的特定場景。
這只是一個快速有趣的程序,不是一個專業的程序,雖然我知道它最好使用良好的做法,我不介意它是否有點低效。 – Kinggadino
@Kinggadino查看我的更新 – CodingGorilla
好吧,我看看我的另一臺電腦上的msdn網站,因爲它似乎無法連接,因爲某些原因,這很奇怪,因爲它今天早上工作;謝謝您的幫助! – Kinggadino
- 1. 使用字符串名稱在功能上創建變量
- 2. 名稱使用字符串變量.NET
- 3. 字符串變量名稱
- 4. sql創建字符串變量列名
- 5. 使用字符串變量創建mainscreen
- 6. 從另一個字符串的值創建字符串變量名稱
- 7. 使用C#中的字符串數組中的項創建變量名稱
- 8. 創建一個從字符串命名變量或創建一個字符串從一個變量命名
- 9. Python從字符串和其他變量中創建變量名
- 10. JavaScript中的字符串變量名稱
- 11. vb.net按名稱從字符串變量
- 12. 字符串到變量名稱MATLAB
- 13. 轉換變量的名稱字符串
- 14. .replace()變量字符串名稱
- 15. 從字符串名稱訪問變量
- 16. 字符串中的Java變量名稱
- 17. 如何從字符串變量名稱?
- 18. PHP字符串名稱作爲變量
- 19. 字符串作爲變量名稱
- 20. 從字符串構造變量名稱
- 21. 雙字符串變量名稱(Javascript)
- 22. Python中的字符串變量名稱
- 23. 使用部分變量名創建字典名稱
- 24. 用變量創建一個字符串
- 25. 使用字符串+第二個變量創建變量
- 26. 從字符串創建對象名稱
- 27. 創建變量名稱與變量
- 28. 如何用Java中的變量字符串名稱創建類的實例?
- 29. 創建引用變量和值的字符串名稱的函數
- 30. Java:如何用一個字符串的名稱創建一個新變量?
動態編譯的代碼可能會幫助你...... – Darek
只是一個簡單的問題,如果我不選擇動態編譯代碼我的其他數組方法的工作?就在我付出努力之前。每次創建新變量時,該方法是否需要完整重新編譯並鏈接? – Kinggadino
你可以用'Dictionary'來模擬,並用它作爲你的「內存」。您可以創建一個與您的初始思想非常相似的語義類。 –
Mephy