C# 结构数组如何动态增加?

sunylf 2009-08-24 11:10:16
//农历节日
private struct LunarHolidayStruct
{
public int Month;
public int Day;
public int Recess;
public string HolidayName;

public LunarHolidayStruct(int month, int day, int recess, string name)
{
Month = month;
Day = day;
Recess = recess;
HolidayName = name;
}
}
//初始化
private static LunarHolidayStruct[] lHolidayInfo = new LunarHolidayStruct[]{
new LunarHolidayStruct(1, 1, 1, "春节"),
new LunarHolidayStruct(1, 15, 0, "元宵节"),
new LunarHolidayStruct(5, 5, 0, "端午节"),
new LunarHolidayStruct(7, 7, 0, "七夕情人节"),
new LunarHolidayStruct(7, 15, 0, "中元节 盂兰盆节"),
new LunarHolidayStruct(8, 15, 0, "中秋节"),
new LunarHolidayStruct(9, 9, 0, "重阳节"),
new LunarHolidayStruct(12, 8, 0, "腊八节"),
new LunarHolidayStruct(12, 23, 0, "北方小年(扫房)"),
new LunarHolidayStruct(12, 24, 0, "南方小年(掸尘)")
};
如何动态增加一项:
new LunarHolidayStruct(12, 25, 0, "ABCDE")
使之变为:
private static LunarHolidayStruct[] lHolidayInfo = new LunarHolidayStruct[]{
new LunarHolidayStruct(1, 1, 1, "春节"),
new LunarHolidayStruct(1, 15, 0, "元宵节"),
new LunarHolidayStruct(5, 5, 0, "端午节"),
new LunarHolidayStruct(7, 7, 0, "七夕情人节"),
new LunarHolidayStruct(7, 15, 0, "中元节 盂兰盆节"),
new LunarHolidayStruct(8, 15, 0, "中秋节"),
new LunarHolidayStruct(9, 9, 0, "重阳节"),
new LunarHolidayStruct(12, 8, 0, "腊八节"),
new LunarHolidayStruct(12, 23, 0, "北方小年(扫房)"),
new LunarHolidayStruct(12, 24, 0, "南方小年(掸尘)"),
new LunarHolidayStruct(12, 25, 0, "ABCDE")

};
...全文
1439 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
showjim 2009-08-24
  • 打赏
  • 举报
回复
数组不够修改长度,除非重新new一个数组替换.
要执行效率,new一个长度大1的新数组,然后循环赋值.
要简单一点,ToList(),Add(),ToArray()就可以了.
如果需要频繁修改数组长度且数组较大,就要考虑用其它数据结构了,如List<valueType>...
robin521 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ncjcz 的回复:]
.net 2.0楼上正解
.net 1.1用ArrayList吧
[/Quote]
这个我赞同!
泛型讲老实话我还用不太好.只在一次项目开发中用过一两次,还没有完全理解其中深意!
zhongjiekangping 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qqiuzaihui 的回复:]
引用 1 楼 zgke 的回复:
List <LunarHolidayStruct> _Test = new List <LunarHolidayStruct>(lHolidayInfo);
            _Test.Add(new LunarHolidayStruct(12, 25, 0, "ABCDE"));
            lHolidayInfo = _Test.ToArray();

UP, 也可以使用ArrayList.
[/Quote]

还是 推荐 泛型
qqiuzaihui 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zgke 的回复:]
List <LunarHolidayStruct> _Test = new List <LunarHolidayStruct>(lHolidayInfo);
            _Test.Add(new LunarHolidayStruct(12, 25, 0, "ABCDE"));
            lHolidayInfo = _Test.ToArray();
[/Quote]
UP, 也可以使用ArrayList.
ncjcz 2009-08-24
  • 打赏
  • 举报
回复
.net 2.0楼上正解
.net 1.1用ArrayList吧
whushuguang 2009-08-24
  • 打赏
  • 举报
回复
楼上正解
zgke 2009-08-24
  • 打赏
  • 举报
回复
List<LunarHolidayStruct> _Test = new List<LunarHolidayStruct>(lHolidayInfo);
_Test.Add(new LunarHolidayStruct(12, 25, 0, "ABCDE"));
lHolidayInfo = _Test.ToArray();
ProjectDD 2009-08-24
  • 打赏
  • 举报
回复
List<T> 即可
或者
Dictionary<T1,T2>

数组是本身是一个引用对象
mythad 2009-08-24
  • 打赏
  • 举报
回复
c#中数组不能动态增长,用List吧
redleafe 2009-08-24
  • 打赏
  • 举报
回复
ArrayList
sz_xd 2009-08-24
  • 打赏
  • 举报
回复
up
wangping06 2009-08-24
  • 打赏
  • 举报
回复
up
微创社(MCC) 2009-08-24
  • 打赏
  • 举报
回复
int count = lHolidayInfo.Length;
LunarHolidayStruct[] lunarHolidayStructNew = new LunarHolidayStruct[count+1];
lunarHolidayStructNew[count] = new LunarHolidayStruct(12, 25, 0, "ABCDE");
Array.Copy(lHolidayInfo, 0, lunarHolidayStructNew, 0, count);
liffe 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zgke 的回复:]
List <LunarHolidayStruct> _Test = new List <LunarHolidayStruct>(lHolidayInfo);
            _Test.Add(new LunarHolidayStruct(12, 25, 0, "ABCDE"));
            lHolidayInfo = _Test.ToArray();
[/Quote]

顶这个
xiaoyue520 2009-08-24
  • 打赏
  • 举报
回复
List 一楼正解
binhu12332100 2009-08-24
  • 打赏
  • 举报
回复
恩,还是赞成一楼的泛型,好的没话说,用Arraylist不太好,因为要是现在又有一个需求,说是要求你输出其中任意一个节日,形式如:“7月7日七夕情人节”这时候有的是int型的有string型的,要遍历输出的话,类型是什么呢?不好确定吧?所以从长远考虑,还是泛型好些吧……
zhouzangood 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ncjcz 的回复:]
.net 2.0楼上正解
.net 1.1用ArrayList吧
[/Quote]

都说完了......
jking1989 2009-08-24
  • 打赏
  • 举报
回复
大家说的都好啊
顶一个
深海之蓝 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zgke 的回复:]
    List <LunarHolidayStruct> _Test = new List <LunarHolidayStruct>(lHolidayInfo);
            _Test.Add(new LunarHolidayStruct(12, 25, 0, "ABCDE"));
            lHolidayInfo = _Test.ToArray();
[/Quote]
泛型很强大
云霄飞车 2009-08-24
  • 打赏
  • 举报
回复
1楼正解,现在正在用VS2008 是.NET 3.0 ,里面的初始化器非常好用, 呵呵 建议哈..

110,534

社区成员

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

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

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