我有一个我想要读取的dbf文件(dBase),将每一行放入一个列表中(因为一行代表一个shapefile对象的数据),然后能够修改列表(例如,转换字段,表示字符串的名称)。这意味着数据类型需要能够同时保存Ints,string,bool等,并向其中添加项目。在python中,我可以使用列表执行此操作,但由于集不能修改,我无法使用它们。
这听起来像Alternative to Tuples的(确切)重复, 但事实并非如此。这些问题是基于您事先知道自己想要哪些物体的假设;我没有。
我在.NET 4.5上,顺便说一下。
答案 0 :(得分:2)
使用dynamic
- 这是一个完美的用例:
Visual C#2010引入了一种新的动态类型。类型是静态类型,但动态类型的对象绕过静态类型检查。在大多数情况下,它的功能类似于它具有类型对象。在编译时,假定键入为动态的元素支持任何操作。因此,您不必担心对象是从COM API,动态语言(如IronPython),HTML文档对象模型(DOM),反射还是程序中的其他位置获取其值。但是,如果代码无效,则会在运行时捕获错误。
答案 1 :(得分:1)
您是否尝试过使用dynamic
类型?
答案 2 :(得分:1)
如果您希望能够在运行时轻松添加属性并更改其类型,则可以将ExpandoObject
与dynamic
一起使用,例如:
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