遍历类中的字符串

时间:2018-07-19 13:55:32

标签: c# .net loops for-loop

我在C#中有一个课程:

public static class Constants
{
    public static class Animals
    {
        public const string theDog = "dog";
        public const string theCat = "cat";
    }
}

我想遍历该类的“赋值”(而不是属性)。我想获得值而不必 明确指定属性。我要这样做是因为我有很多常量的类,并且想将它们添加到列表中。

所以,我想要的输出/代码看起来像这样:

foreach (string animal in Constants.Animals)
{
       Console.WriteLine(animal)
}

输出:

dog
cat

我已经尝试过反射,但这只能使我拥有财产。

2 个答案:

答案 0 :(得分:1)

请参阅此反思: GetValue将为您提供价值。

foreach (PropertyInfo propertyinfo in typeof(yourClass).GetProperties())
        {
           if(propertyinfo !=null){
            var valueOfField=propertyinfo.GetValue(yourobject);
            var fieldname = propertyinfo.Name;

            if (valueOfField!=null && fieldname != null)
            {
              string data=fieldname +"="+valueOfField
            }
          }
        }

答案 1 :(得分:1)

尝试使用 Reflection

  using System.Reflection;

  ...

  var animals = typeof(Constants.Animals)
    .GetFields(BindingFlags.Public | BindingFlags.Static)
    .Where(field => field.IsLiteral)
    .Where(field => field.FieldType == typeof(String))
    .Select(field => field.GetValue(null) as String);

  Console.Write(string.Join(Environment.NewLine, animals));

结果:

  dog
  cat

如果您想循环播放

  foreach (string animal in animals) {
    Console.WriteLine(animal); 
  }