自动遍历结构体中的变量

时间:2022-06-15 10:31:02
比方说有个结构体,如何自动遍历整个结构体中的每一个变量呢

public struct Site
  {
  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 30)]
  public string Country;   
  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
  public string StationNumber;   
  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
  public string RadarType;   
    
  public int LongitudeValue;   
  public short MangFreq; 
  }


for ()
{
//遍历结构体中的变量
}

对于数组有Foreach,对于结构体用什么方法呢?

11 个解决方案

#1


foreach (System.Reflection.FieldInfo fieldInfo in typeof(Site).GetFields())
{
System.Console.Write(fieldInfo.Name);
}

#2



        foreach(var fieldInfo in typeof(Site).GetFields())
        {
            Console.WriteLine("Name:{0},Type{1}",fieldInfo.Name,fieldInfo.FieldType);
        }

#3



        foreach(var fieldInfo in typeof(Site).GetFields())
        {
            Console.WriteLine("Name:{0},Type{1}",fieldInfo.Name,fieldInfo.FieldType);
        }



注意使用var关键字进行结构体的类型推断就行了

#4


采用数组循环

#5


哎兄弟我还停留在VS2005中,不能用VAR关键字,“用var关键字进行结构体的类型推断”是啥意思?


另外,1楼的
foreach (System.Reflection.FieldInfo fieldInfo in typeof(Site).GetFields())
{
    System.Console.Write(fieldInfo.Name);
}
显示的是变量名啊,改成System.Console.Write(fieldInfo.Tostring());也还是变量名

#6


你要的是什么

#7


VS2005也支持啊,var关键字是.net 3.0推出的。你安装.net 3.0的SDK应该就可以用了

,“用var关键字进行结构体的类型推断”,因为不知道你的结构体总有什么类型的数据,所以使用类型推断var关键字来遍历结构体中的所有变量啊。

#8



foreach (System.Reflection.FieldInfo fieldInfo in typeof(Site).GetFields())
{
  System.Console.Write(fieldInfo.GetValue(site对象实例).ToString());
}

#9


反射 得到 变量Info   
变量Info.getValue(obj) 反射获得 值

#10


引用 8 楼 timzhufaith 的回复:
foreach (System.Reflection.FieldInfo fieldInfo in typeof(Site).GetFields())
{
  System.Console.Write(fieldInfo.GetValue(site对象实例).ToString());
}


出来了,能说说是什么原理么?谢谢了!

#11


foreach里面的东西你看懂就够了。。。反射!

#1


foreach (System.Reflection.FieldInfo fieldInfo in typeof(Site).GetFields())
{
System.Console.Write(fieldInfo.Name);
}

#2



        foreach(var fieldInfo in typeof(Site).GetFields())
        {
            Console.WriteLine("Name:{0},Type{1}",fieldInfo.Name,fieldInfo.FieldType);
        }

#3



        foreach(var fieldInfo in typeof(Site).GetFields())
        {
            Console.WriteLine("Name:{0},Type{1}",fieldInfo.Name,fieldInfo.FieldType);
        }



注意使用var关键字进行结构体的类型推断就行了

#4


采用数组循环

#5


哎兄弟我还停留在VS2005中,不能用VAR关键字,“用var关键字进行结构体的类型推断”是啥意思?


另外,1楼的
foreach (System.Reflection.FieldInfo fieldInfo in typeof(Site).GetFields())
{
    System.Console.Write(fieldInfo.Name);
}
显示的是变量名啊,改成System.Console.Write(fieldInfo.Tostring());也还是变量名

#6


你要的是什么

#7


VS2005也支持啊,var关键字是.net 3.0推出的。你安装.net 3.0的SDK应该就可以用了

,“用var关键字进行结构体的类型推断”,因为不知道你的结构体总有什么类型的数据,所以使用类型推断var关键字来遍历结构体中的所有变量啊。

#8



foreach (System.Reflection.FieldInfo fieldInfo in typeof(Site).GetFields())
{
  System.Console.Write(fieldInfo.GetValue(site对象实例).ToString());
}

#9


反射 得到 变量Info   
变量Info.getValue(obj) 反射获得 值

#10


引用 8 楼 timzhufaith 的回复:
foreach (System.Reflection.FieldInfo fieldInfo in typeof(Site).GetFields())
{
  System.Console.Write(fieldInfo.GetValue(site对象实例).ToString());
}


出来了,能说说是什么原理么?谢谢了!

#11


foreach里面的东西你看懂就够了。。。反射!