2013-06-22 37 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