5

我有一个要读取的 dbf 文件 (dBase),将每一行放入一个列表中(因为一行代表有关一个 shapefile 对象的数据),然后能够修改列表(例如,转换代表名称的字段到一个字符串)。这意味着数据类型需要能够同时保存 Ints、strings、bool 等,并向其中添加项目。在 python 中,我可以使用列表来执行此操作,但由于无法修改集合,因此我无法使用它们。

这听起来像是Alternative to Tuples的(完全)重复,但事实并非如此。这些问题基于您事先知道想要哪些对象的假设;我不。

我在.NET 4.5上,顺便说一句。

4

3 回答 3

3

使用dynamic- 这是一个完美的用例:

Visual C# 2010 引入了一种新类型动态。该类型是静态类型,但动态类型的对象绕过静态类型检查。在大多数情况下,它的功能就像它具有类型对象一样。在编译时,假定类型为动态的元素支持任何操作。因此,您不必担心对象是否从 COM API、IronPython 等动态语言、HTML 文档对象模型 (DOM)、反射或程序中的其他位置获取其值。但是,如果代码无效,则会在运行时捕获错误。

于 2013-06-22T20:36:03.423 回答
2

如果您希望能够在运行时轻松添加属性并更改其类型,则可以使用ExpandoObjectwith 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
于 2013-06-22T20:54:16.873 回答
1

您是否尝试过使用该dynamic类型?

于 2013-06-22T20:35:09.560 回答