猿问

C#中使用结构体,在结构体的定义中又包含另一个结构体的数组,该怎么定义?

struct a
{
int start;
int end;
};
struct b
{
int id;
a[] suba=new a[10];
};

编译时提示错误:结构中不能有实例字段初始值设定项,
改成a [10]suba; 也不行

青春有我
浏览 493回答 3
3回答

largeQ

struct b{int id;a[] suba;};程序调用时:采用 b ab; ab.suba=new a[10];的方式。但是不推荐这样用,可以用类去代替struct ;注:结构体内的变量最好加public 关键词。即:struct b{public int id;public a[] suba;}struct a{public int start;public int end;}struct b{public int id;public a[] suba;}static void Main(string[] args){b newb;newb.id = 1;newb.suba = new a[10];newb.suba[0].start = 1;newb.suba[0].end = 2;newb.suba[1].start = 3;newb.suba[1].end = 4;Console.WriteLine("{0},{1},{2},{3}", newb.suba[0].start, newb.suba[0].end,newb.suba[1].start,newb.suba[1].end);Console.Read();}结果输出1,2,3,4 

MMMHUHU

方法还是在struct内部实现比较好。以C#为例,参考.NET框架源代码中的int类型定义之Int32: using System.Globalization;using System.Runtime.InteropServices;namespace System{// 摘要:// 表示 32 位有符号的整数。[Serializable][ComVisible(true)]public struct Int32 : IComparable, IFormattable, IConvertible, IComparable<int>, IEquatable<int>{// 摘要:// 表示 System.Int32 的最大可能值。此字段为常数。public const int MaxValue =&nbsp;2147483647;//// 摘要:// 表示 System.Int32 的最小可能值。此字段为常数。public const int MinValue = -2147483648; // 摘要:// 将此实例与指定的 32 位有符号整数进行比较并返回对其相对值的指示。//// 参数:// value:// 要比较的整数。//// 返回结果:// 一个有符号数字,指示此实例和 value 的相对值。 返回值 说明 小于零 此实例小于 value。 零 此实例等于 value。 大于零 此实例大于// value。public int CompareTo(int value); 源代码来自于微软。
随时随地看视频慕课网APP
我要回答