自动遍历结构体中的变量

winbq5 2011-02-24 01:28:28
比方说有个结构体,如何自动遍历整个结构体中的每一个变量呢

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,对于结构体用什么方法呢?
...全文
548 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
TimZhuFaith 2011-02-24
  • 打赏
  • 举报
回复
foreach里面的东西你看懂就够了。。。反射!
winbq5 2011-02-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 timzhufaith 的回复:]
foreach (System.Reflection.FieldInfo fieldInfo in typeof(Site).GetFields())
{
System.Console.Write(fieldInfo.GetValue(site对象实例).ToString());
}
[/Quote]

出来了,能说说是什么原理么?谢谢了!
shaofei830927 2011-02-24
  • 打赏
  • 举报
回复
反射 得到 变量Info
变量Info.getValue(obj) 反射获得 值
TimZhuFaith 2011-02-24
  • 打赏
  • 举报
回复

foreach (System.Reflection.FieldInfo fieldInfo in typeof(Site).GetFields())
{
System.Console.Write(fieldInfo.GetValue(site对象实例).ToString());
}
yalan 2011-02-24
  • 打赏
  • 举报
回复
VS2005也支持啊,var关键字是.net 3.0推出的。你安装.net 3.0的SDK应该就可以用了

,“用var关键字进行结构体的类型推断”,因为不知道你的结构体总有什么类型的数据,所以使用类型推断var关键字来遍历结构体中的所有变量啊。
TimZhuFaith 2011-02-24
  • 打赏
  • 举报
回复
你要的是什么
winbq5 2011-02-24
  • 打赏
  • 举报
回复
哎兄弟我还停留在VS2005中,不能用VAR关键字,“用var关键字进行结构体的类型推断”是啥意思?


另外,1楼的
foreach (System.Reflection.FieldInfo fieldInfo in typeof(Site).GetFields())
{
System.Console.Write(fieldInfo.Name);
}
显示的是变量名啊,改成System.Console.Write(fieldInfo.Tostring());也还是变量名
yuexingfu 2011-02-24
  • 打赏
  • 举报
回复
采用数组循环
yalan 2011-02-24
  • 打赏
  • 举报
回复

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



注意使用var关键字进行结构体的类型推断就行了
bloodish 2011-02-24
  • 打赏
  • 举报
回复

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

Snowdust 2011-02-24
  • 打赏
  • 举报
回复
foreach (System.Reflection.FieldInfo fieldInfo in typeof(Site).GetFields())
{
System.Console.Write(fieldInfo.Name);
}

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧