2

我在 c# 中有以下课程。如何在运行时计算数据成员的数量?

public static class ABC
{
  public static string A;
  public static string B;
  public static string C;
}

基本上,我必须迭代每个数据成员并将其一一传递给某个函数,这将为它分配一些值。这就是为什么我需要这个。

如果不可能,有没有其他方法可以做同样的事情

4

2 回答 2

5

这是一种方法:

var count = typeof(ABC).GetFields().Length;

由返回的数组的每个元素GetFields对应一个数据成员。除了获取计数之外,您还可以进一步检查每个字段 - 获取其名称、检查其类型等。您还可以使用FieldInfo对象来获取和/或设置目标类的字段。

ideone 上的演示。

于 2013-05-02T11:04:03.423 回答
3

沿着这些路线的东西会起作用。通常,您会对此类事情使用反射。

int count = typeof(ABC)
    .GetFields()
    .Count();

@dasblinkenlight解决方案更好,因为.Length执行 in O(1),而 my .Count()is O(N)

旁注,我相信您知道这一点,公共字段是邪恶的,请考虑使用属性。

于 2013-05-02T11:02:52.957 回答