C# 怎样通过索引号访问到结构体中的每个成员

number007cool 2020-12-21 09:52:10
public struct dbConfig
{
public int a;
public int b;
public float c;
};


对于这个结构体而言,a,b,c 的索引号为0 、1、2,

怎样通过0、1、2 这个索引位号来得到 a,b, c的值?
...全文
9322 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
number007cool 2021-01-16
  • 打赏
  • 举报
回复
引用 12 楼 张天星 的回复:
[quote=引用 3 楼 number007cool 的回复:]在下不才, 你给贴几行代码呗
虽然不明白,你要怎样的设计才会出现这种需求,不过,一楼的代码不能用么?我感觉那个就可以达到你想要的?[/quote]可以,但是成员多了写起来就麻烦
张天星 2020-12-27
  • 打赏
  • 举报
回复
引用 3 楼 number007cool 的回复:
在下不才, 你给贴几行代码呗
虽然不明白,你要怎样的设计才会出现这种需求,不过,一楼的代码不能用么?我感觉那个就可以达到你想要的?
wllllll 2020-12-25
  • 打赏
  • 举报
回复
public class GlobalEnum { public static GlobalEnum SETSYSTEMRUIN = new GlobalEnum(64); public static GlobalEnum SETSYSTEMTIME = new GlobalEnum(64); public String Name = ""; public Int32 Length = 0; public GlobalEnum(Int32 dLength) { this.Length = dLength; this.ToString(); } public new String ToString() { if (this.Name == "") { FieldInfo[] aFields = typeof(GlobalEnum).GetFields(BindingFlags.Static | BindingFlags.Public); foreach (FieldInfo aField in aFields) { if (this == aField.GetValue(typeof(GlobalEnum))) { this.Name = aField.Name; } } } return this.Name; } }
number007cool 2020-12-23
  • 打赏
  • 举报
回复
引用 6 楼 一抹艳阳高照的晴天 的回复:
其实我不明白什么样的场景下非要这样去拿实体的值
把结构体的每个值依次添加到datadridview的某一列的每一行
  • 打赏
  • 举报
回复
其实我不明白什么样的场景下非要这样去拿实体的值
  • 打赏
  • 举报
回复
引用 9 楼 number007cool 的回复:
[quote=引用 8 楼 一抹艳阳高照的晴天 的回复:]那我是否可以理解为可以用反射获取结构体属性值,然后遍历添加?
能按结构体里面的排列次序依次取值就可以,比如访问第一个,参数是0,访问第2个,参数就是1.[/quote] 如果你非要用0123这些参数来进行依次访问的话,你可以用反射遍历获取结构体属性值和0 1 2 3.....依次组成键值对,然后再通过参数0 1 2 3获取对应的值
number007cool 2020-12-23
  • 打赏
  • 举报
回复
引用 8 楼 一抹艳阳高照的晴天 的回复:
那我是否可以理解为可以用反射获取结构体属性值,然后遍历添加?
能按结构体里面的排列次序依次取值就可以,比如访问第一个,参数是0,访问第2个,参数就是1.
  • 打赏
  • 举报
回复
那我是否可以理解为可以用反射获取结构体属性值,然后遍历添加?
renxin001 2020-12-22
  • 打赏
  • 举报
回复
跟大神们学习了
number007cool 2020-12-21
  • 打赏
  • 举报
回复
引用 2 楼 อาเหว่ย 的回复:
[quote=引用 楼主 number007cool 的回复:]public struct dbConfig { public int a; public int b; public float c; }; 对于这个结构体而言,a,b,c 的索引号为0 、1、2, 怎样通过0、1、2 这个索引位号来得到 a,b, c的值?
这个用字典就可以了。先序列化为字典。然后直接访问序号即可。 我经常这么使用,不知道是否适合你。 [/quote] 在下不才, 你给贴几行代码呗
number007cool 2020-12-21
  • 打赏
  • 举报
回复
在下不才, 你给贴几行代码呗
  • 打赏
  • 举报
回复
引用 楼主 number007cool 的回复:
public struct dbConfig { public int a; public int b; public float c; }; 对于这个结构体而言,a,b,c 的索引号为0 、1、2, 怎样通过0、1、2 这个索引位号来得到 a,b, c的值?
这个用字典就可以了。先序列化为字典。然后直接访问序号即可。 我经常这么使用,不知道是否适合你。
Denuin 2020-12-21
  • 打赏
  • 举报
回复

public struct dbConfig
{
    public int a;
    public int b;
    public float c;

    public object this[int n]
    {
        get
        {
            switch (n)
            {
                case 0: return a;
                case 1: return b;
                case 2: return c;
                default: throw new NotImplementedException();
            }
        }
    }
}

110,533

社区成员

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

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

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