精华内容
下载资源
问答
  • c#遍历结构体成员
    2022-03-31 14:29:18

    有一个类,里面定义很多常量:

    public class RoleTitles
    {
    	public const string TOP_USR_WORK = "TOP_USR_Work";
    	public const string TOP_USR_SPECIFIC = "TOP_USR_Specific";
    }

    可以通过反射,得到类中所有成员的值:

    RoleTitleConst t= new RoleTitles();
    FieldInfo[] fields = t.GetType().GetFields();
    foreach (var field in fields)
    {
    	field.GetValue(t);
    }

    更多相关内容
  • C#遍历结构体

    2014-05-05 21:10:21
    C#遍历结构体
  • C# 遍历结构体

    千次阅读 2019-11-25 21:29:22
    /// 遍历结构体示例 /// void enum_strust() { sample sp = new sample(); foreach (FieldInfo field in typeof(sample).GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)...

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using System.Text;

    namespace 修改显示器分辨率
    {
    class strustapi
    {
    ///
    /// 示例
    ///
    struct sample
    {
    int i;
    string str;
    }
    ///
    /// 遍历结构体示例
    ///
    void enum_strust()
    {
    sample sp = new sample();
    foreach (FieldInfo field in typeof(sample).GetFields(BindingFlags.Instance |
    BindingFlags.NonPublic |
    BindingFlags.Public))
    {
    System.Windows.MessageBox.Show(field.Name + “=” + field.GetValue(sp).ToString());
    }
    }
    }
    }

    展开全文
  • foreach (FieldInfo field in typeof(Cpicturexif.Metadata).GetFields(BindingFlags.Instance | BindingFlags.NonPublic | ...//遍历结构体里面含结构体的所有成员及值,里面重点是metaTest = (Cpicturexif.Metada...
    foreach (FieldInfo field in typeof(Cpicturexif.Metadata).GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public))
         
    //遍历结构体里面含结构体的所有成员及值,里面重点是metaTest = (Cpicturexif.MetadataDetail)field.GetValue(m);GetValue()是得到的结构体对象m里面嵌套结构体,@Jski17761263313
    
    
       {
     
                     
                    foreach (FieldInfo field2 in typeof(Cpicturexif.MetadataDetail).GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public))
                    {
                        Cpicturexif.MetadataDetail metaTest = new Cpicturexif.MetadataDetail() ;
                        metaTest = (Cpicturexif.MetadataDetail)field.GetValue(m);
                                           
                    }
       }
    
    展开全文
  • C语言-结构体成员遍历

    千次阅读 2021-08-24 15:59:38
    C语言-结构体成员遍历 此方法试用的前提:结构体成员的数据类型相同 。话不多说,直接上手。 “结构体成员遍历”进阶版:当结构体里的成员数据类型不一样,可以计算出每个结构体成员的偏移量,并将偏移量放到一个...

    C语言-结构体成员遍历

    大家好,我是鸟哥

    此方法试用的前提:结构体成员的数据类型相同 。话不多说,直接上手。

    “结构体成员遍历”进阶版:当结构体里的成员数据类型不一样,可以计算出每个结构体成员的偏移量,并将偏移量放到一个数组中,遍历数组获取偏移量后再根据偏移去获取成员变量。这样取出了不同类型的结构体,直接进行赋值取值即可。进阶版的详细实现方法会在后期的另一篇文章中说明。

    问题:
    假设现在有一个结构体,成员都是int类型,现在需要对结构体的成员进行赋值或者取值。
    将数值1-10分别赋给结构体成员Member_0到Member_9。

    typedef struct
    {
    	int Member_0;
    	int Member_1;
    	int Member_2;
    	int Member_3;
    	int Member_4;
    	int Member_5;
    	int Member_6;
    	int Member_7;
    	int Member_8;
    	int Member_9;
    }Member_t;
    

    问题解决思路:
    给结构体的成员赋值,最基本的方法就是结构体直接赋值,具体的几种实现方法如下。

    • 结构体初始化赋值
        Member_t Member = { 1,2,3,4,5,6,7,8,9,10 };	//结构体初始化赋值
    
    • 单一成员赋值
    	Member.Member_0 = 1;	//结构体成员分别赋值
    	Member.Member_1 = 2;
    	Member.Member_2 = 3;
    	Member.Member_3 = 4;
    	Member.Member_4 = 5;
    	Member.Member_5 = 6;
    	Member.Member_6 = 7;
    	Member.Member_7 = 8;
    	Member.Member_8 = 9;
    	Member.Member_9 = 10;
    

    上述两种方法适用于成员较少的结构体,当成员数量很多,并且需要统一赋值操作的时候,这两种方法就显得十分繁琐,低效。

    为了让编写程序更加高效,让代码篇幅更少,可扩展性强,笔者总结了几种利用指针对结构体成员统一赋值的方法。具体实现如下:

    	Member_t Member;		//结构体命名
    	Member_t* P_Member = &Member;		//指向结构体的指针
    	int* P = (int*)P_Member;		//结构体指针强制转换为int类型
    	int i;
    	for (i = 0; i < sizeof(Member) / sizeof(int); i++)
    	{
    		(*P++) = i + 1;
    	}
    

    我们可以定义一个int类型的指针,指针类型与结构体的成员类型保持一致,再通过强制类型转换,将结构体指针类型强制转换为int类型的指针,把指针P指向结构体指针。

    注:不能直接把int类型的指针指向结构体或者结构体指针。这样的话,程序就会报错。因为结构体名字是经过typedef后的类型,而P指针是int类型,两者类型不一样,无法通过编译器的类型检查,程序会直接报错,所以不能直接将P指向结构体或者结构体指针。

    	int* P = &Member;		//这是错误的指针访问
    

    上述强制转化结构体指针类型的方法可以实现结构体成员的统一赋值,但是这种方法很危险,因为它避开了编译器的类型检查。

    利用指针遍历结构体成员最正确安全的方法就是使用&操作符取得一个指向结构体内部int类型成员的指针P_Member->Member_0。具体实现如下:

    	Member_t Member;		//结构体命名
    	Member_t* P_Member = &Member;		//指向结构体的指针
    	int i, * P;
    	P = &P_Member->Member_0;		//int类型的指针P指向结构体的第一个成员
    	for (i = 0; i < sizeof(Member) / sizeof(int); i++)
    	{
    		(*P++) = i + 1;
    	}
    

    结构体成员遍历输出结果:
    在这里插入图片描述
    我的微信公众号(ID:00后开发者)从00后的角度出发,专注但不局限于分享电气、嵌入式、机器视觉以及芯片行业的算法、技术文章和最新资讯。如果想查看更多内容,可以关注我的微信公众号。

    展开全文
  • 对应某个类的实例化的对象tc, 遍历获取所有属性(子成员)的方法(采用反射): 代码如下: Type t = tc.GetType();//获得该类的Type //再用Type.GetProperties获得PropertyInfo[],然后就可以用foreach 遍历了 foreach ...
  • 读取结构体的所有成员(Engine为结构体) FieldInfo[] fieldInfos = typeof(Engine).GetFields(); 转载于:https://www.cnblogs.com/Wonderful-Life/p/9831369.html
  • C# 遍历Struct

    千次阅读 2018-07-22 18:06:45
    可以用C#的反射机制来实现。不是很懂反射,就先把代码贴到这里了,进一步了解了再写一下~ 反射的耗时大概是直接放问的两三倍,所以还是尽量直接访问吧~ 如果大家有更好的办法,欢迎补充。 public User(string ...
  • C# 如何遍历一个实体的所有字段并给另外一个实体赋值,包含子实体也可以 把一个实体的值,根据名称一样的赋值给另外一个实体,名称不一样的不进行赋值。实体可以是嵌套结构的也可以进行赋值。 /// <summary>...
  • C# foreach循环遍历结构

    千次阅读 2019-07-26 16:55:30
    按顺序循环遍历所有数组的元素,变量每次循环都代表数组特定索引的值 } foreach使用 foreach虽然属于循环结构,但不能对数组变量做赋值操作。 作用: 主要作用是遍历元素 //定义数组nums int[] nums = {1,2...
  • 不然对结构体成员操作时 会提示’“Testroutingtable.SmipleRoutingTable.SourceNode”不可访问,因为它具有一定的保护级别 public void InitRoutingTable() { for (int i = 0; i ; i++) { for (int j = 0; j ...
  • C# 结构体列表的使用

    2022-04-22 10:35:57
    目录 引言1、结构体定义2、结构体列表初始化3、结构体列表赋值4、结构体列表遍历5、结构体列表删除6、结构体列表全清除 引言   我们在使用大量相同的结构体的时候,就可以使用结构体列表来实现是十分不错的选择,...
  • } } 利用反射遍历成员中的所有属性,然后判断其Type,写入流中。 但是问题又来了,读怎么办呢?好像还得一个一个读。。。没有办法归一化。。 二、使用StructLayout [StructLayout(LayoutKind.Sequential, Pack = 1,...
  • (1)用结构体变量名作为参数。 代码如下: #include<iostream> #include<string> using namespace std; struct Student{ string name; int score; }; int main(){ Student one; void Print(Student ...
  • 在复习c语言中结构体时,遇到如下问题。 定义结构体: typedef struct student{ char sex; int age; char status; }STUDENT; int main() { printf("%d",sizeof(STUDENT)); return 0; } 试着去计算结构所...
  • 总结了C#结构体、枚举和数组的知识点
  • C#:利用结构体数组完成简单信息输入、计算 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace norm_program { class Program { ...
  • 之前没怎么用过c#开发,由于工作原因开始学习c#。今天发现创建了一个list集合(里面的元素是结构体类型),后面再想给它修改和赋值就出现错误了。 代码大致是这样的: //这里定义了一个学生结构体 public struct stu...
  • 该方法可以很方便地遍历所有的枚举值。 valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常:IllegalArgumentException。 toString():...
  • 第02部分 C#复杂数据结构 1> 复杂数据类型 数据类型的本质时固定的内存大小区域的别名,其作用时编译器预算对象(变量)的内存大小,从而为其分配。 类型特点: 枚举:整型常量的集合,可以自定义常量名。 ...
  • 结构体内存布局: 许多受管辖的动态链接库函数期望你能够传递一个复杂的参数类型给函数,譬如一个用户定义的结构类型成员或者受管辖代码定义的一个类成员,这时你必须提供额外的信息格式化这个类型,以保持参数原有...
  • 图的遍历C#

    2014-09-29 14:26:15
    C#与数据结构--图的遍历   8.2 图的存储结构 图的存储结构除了要存储图中各个顶点的本身的信息外,同时还要存储顶点与顶点之间的所有关系(边的信息),因此,图的结构比较复杂,很难以数据元素在存储区中的...
  • 目录 一、互调的基本原理 二、基本数据类型的传递 ...五、结构体的传递 六、完整代码 最近在编写Warensoft3D游戏引擎,并预计明年年初发布测试版本,底层引擎使用DirectX和MONO来编写,上层...
  • 英文:devblogs.microsoft.com译文:cnblogs.com/xiaoxiaotank/p/13206569.html译者:xiaoxiaotank前言Task类是在.NET Framework 4引入的,位于System.Threading.Tasks命名...也是以async/await(C# 5引入的)语法糖为...
  • C# 集合的学习总结

    2018-12-30 17:40:56
    IList是值的集合,其成员可通过索引访问,如ArrayList类,次类集合与数组相比,可以认为是可变的集合,优点有,长度自动增长等。 IEnumerable和IEnumerable是所有集合或集合接口的基接口,所有集合接口或集合都...
  • 摘要:简单介绍一下C语言中结构体的乱序初始化方法,在linux内核中比较常见。 关键词:C语言 结构体 struct 初始化 正如下面代码所示: 1: struct __st_t 2: { 3: int a; 4: int b; 5: }; 6: ...
  • 大一新生,自学总结的笔记,分享给大家,适合萌新看看。
  • 学习C#很久了,但可能你也和我一样,总有那么一两个关键词,说不清楚它是什么意思,有什么用,那么这篇文章就带你一一讲解。
  • C#系列知识点梳理.pdf

    2021-11-30 13:21:50
    介绍文章:https://blog.csdn.net/Czhenya/article/details/120825835

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,577
精华内容 1,030
关键字:

c#遍历结构体成员

c# 订阅