2013-06-22 36 views
3

我有一個dbf文件(dBase),它想讀取,將每行放入一個列表(因爲一行表示一個shapefile對象的數據),然後能夠modyfy(例如轉換代表字符串名稱的字段)。這意味着數據類型需要能夠保存Ints,字符串,布爾等,並添加項目。在python中,我可以用列表來做這件事,但由於套件不能被修改,所以我不能使用它們。C#替代元組

這聽起來像(確切)重複例如。 Alternative to Tuples 但事實並非如此。這些問題基於假設你知道你事先想要哪些對象。我不。

我在.net 4.5 btw上。

+0

你能提供一些示例代碼? – simonlchilds

回答

2

使用dynamic - 這是一個完美的使用情況吧:

的Visual C#2010介紹了一種新型的,動態的。該類型是靜態類型,但動態類型的對象繞過靜態類型檢查。在大多數情況下,它具有類型對象的功能。在編譯時,假定輸入爲動態的元素支持任何操作。因此,您不必關心對象是從COM API,IronPython等動態語言,HTML文檔對象模型(DOM),反射還是從程序中的其他位置獲取其值。但是,如果代碼無效,則會在運行時捕獲錯誤。

+1

不要太挑剔,但這是C#4.0的功能,而不是Visual C#2010; Visual C#2010是一種產品,而C#4.0是一種語言。您可以在VS 2010和VS 2012上使用C#4.0。只是想確保清楚。 :-) –

+0

@Karl - 你必須要挑剔MSDN,這是引用的地方;) – Oded

+0

去微軟! FTW! – jpaugh

1

如果您希望能夠輕鬆地在運行時添加屬性,並更改它們的類型,你可以使用ExpandoObjectdynamic,例如:

dynamic expando = new ExpandoObject(); 

expando.SomeProperty = "1234"; 

Console.WriteLine(expando.SomeProperty); 
Console.WriteLine(expando.SomeProperty.GetType().FullName); // string 

expando.SomeProperty = int.Parse(expando.SomeProperty); 

Console.WriteLine(expando.SomeProperty); 
Console.WriteLine(expando.SomeProperty.GetType().FullName); // int