C# 添加到另一个列表集合后,如何添加到列表集合?
理想情况下,我希望添加到NumberList,而不删除它,生成另一个NumberList,并将其添加到NumberRanges,ListC# 添加到另一个列表集合后,如何添加到列表集合?,c#,list,C#,List,理想情况下,我希望添加到NumberList,而不删除它,生成另一个NumberList,并将其添加到NumberRanges,List //How to add 8 to NumberRanges.NumberGroup.GroupEven //How to add 9 to NumberRanges.NumberGroup.GroupOdd AddEvenNumberToRange(oNumberRanges, 8); AddOddNumberToRange(oNumberRanges, 9
//How to add 8 to NumberRanges.NumberGroup.GroupEven
//How to add 9 to NumberRanges.NumberGroup.GroupOdd
AddEvenNumberToRange(oNumberRanges, 8);
AddOddNumberToRange(oNumberRanges, 9);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace AddToList
{
class Program
{
static void Main(string[] args)
{
NumberList oGroupEven = new NumberList();
InitialLoadEvenNumbers(oGroupEven);
NumberList oGroupOdd = new NumberList();
InitialLoadOddNumbers(oGroupOdd);
NumberRanges oNumberRanges = new NumberRanges();
CombineNumberRanges(oGroupEven, oGroupOdd, oNumberRanges);
OutPutRanges(oNumberRanges);
Console.ReadKey();
//This code below will throw execption unitl implemented.
//How to add 8 to NumberRanges.NumberGroup.GroupEven
//How to add 9 to NumberRanges.NumberGroup.GroupOdd
AddEvenNumberToRange(oNumberRanges, 8);
AddOddNumberToRange(oNumberRanges, 9);
OutPutRanges(oNumberRanges);
Console.ReadKey();
}
private static void AddOddNumberToRange(NumberRanges oNumberRanges, int p)
{
//I'm stuck on the best approach to add a number to existing collection
throw new NotImplementedException();
}
private static void AddEvenNumberToRange(NumberRanges oNumberRanges, int p)
{
//I'm stuck on the best approach to add a number to existing collection
throw new NotImplementedException();
}
private static void OutPutRanges(NumberRanges oNumberRanges)
{
foreach (NumberList olist in oNumberRanges)
{
foreach (int iNum in olist)
{
Console.WriteLine(iNum.ToString());
}
}
}
private static void CombineNumberRanges(NumberList oGroupEven, NumberList oGroupOdd, NumberRanges oNumberRanges)
{
oNumberRanges.NumberGroups.Add(oGroupEven);
oNumberRanges.NumberGroups.Add(oGroupOdd);
}
private static void InitialLoadOddNumbers(NumberList oGroupOdd)
{
oGroupOdd.Number.Add(3);
oGroupOdd.Number.Add(5);
oGroupOdd.Number.Add(7);
}
private static void InitialLoadEvenNumbers(NumberList oGroupEven)
{
oGroupEven.Number.Add(2);
oGroupEven.Number.Add(4);
oGroupEven.Number.Add(6);
}
}
public class NumberList : IEnumerator, IEnumerable
{
public List<int> Number = new List<int>();
#region GetEnumeratorSetup
private int m_iPosition = -1;
public IEnumerator GetEnumerator()
{
return Number.GetEnumerator();
}
public object Current
{
get
{
return Number;
}
}
public bool MoveNext()
{
m_iPosition++;
return true;
}
public void Reset()
{
m_iPosition = 0;
}
#endregion
}
public class NumberRanges: IEnumerator, IEnumerable
{
public List<NumberList> NumberGroups = new List<NumberList>();
#region EnumerationSetup
private int m_iPosition = -1;
public object Current
{
get
{
return NumberGroups;
}
}
public bool MoveNext()
{
m_iPosition++;
return true;
}
public void Reset()
{
m_iPosition = 0;
}
IEnumerator IEnumerable.GetEnumerator()
{
return NumberGroups.GetEnumerator();
}
#endregion
}
}
//如何将8添加到NumberRanges.NumberGroup.GroupEven
//如何将9添加到NumberRanges.NumberGroup.GroupOdd
AddEventNumberToRange(oNumberRanges,8);
AddOddNumberToRange(oNumberRanges,9);
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用系统集合;
名称空间添加列表
{
班级计划
{
静态void Main(字符串[]参数)
{
NumberList ogroup偶数=新NumberList();
InitialLoadEvenNumber(OGroup偶数);
NumberList ogroupOqd=新NumberList();
InitialLoadOddNumber(oGroupOdd);
NumberRanges oNumberRanges=新的NumberRanges();
CombineNumberRanges(Ogroup偶数、Ogroup奇数、oNumberRanges);
输出范围(oNumberRanges);
Console.ReadKey();
//下面的代码将抛出执行选项unitl实现。
//如何将8添加到NumberRanges.NumberGroup.group偶数
//如何将9添加到NumberRanges.NumberGroup.GroupOdd
AddEventNumberToRange(oNumberRanges,8);
AddOddNumberToRange(oNumberRanges,9);
输出范围(oNumberRanges);
Console.ReadKey();
}
私有静态void AddOddNumberToRange(NumberRanges oNumberRanges,int p)
{
//我一直在寻找向现有收藏中添加数字的最佳方法
抛出新的NotImplementedException();
}
专用静态void addEventNumberToRange(NumberRanges oNumberRanges,int p)
{
//我一直在寻找向现有收藏中添加数字的最佳方法
抛出新的NotImplementedException();
}
专用静态无效输出范围(NumberRanges oNumberRanges)
{
foreach(ONUMBERANGES中的数学家)
{
foreach(在olist中为int iNum)
{
Console.WriteLine(iNum.ToString());
}
}
}
私有静态无效组合EnumberRanges(NumberList Ogroup偶数、NumberList Ogroup奇数、NumberRanges oNumberRanges)
{
oNumberRanges.NumberGroups.Add(ogroup偶数);
oNumberRanges.NumberGroups.Add(oGroupOdd);
}
私有静态void initialLoadOddNumber(NumberList oGroupOdd)
{
oGroupOdd.Number.Add(3);
oGroupOdd.Number.Add(5);
oGroupOdd.Number.Add(7);
}
私有静态void initialLoadEvenNumber(NumberList Ogroup偶数)
{
Ogroup偶数.Number.Add(2);
Ogroup偶数.Number.Add(4);
Ogroup偶数.Number.Add(6);
}
}
公共类编号列表:IEnumerator,IEnumerable
{
公共列表编号=新列表();
#区域GetEnumerators设置
私有int m_i位置=-1;
公共IEnumerator GetEnumerator()
{
返回编号。GetEnumerator();
}
公共对象流
{
得到
{
返回号码;
}
}
公共图书馆
{
m_i位置++;
返回true;
}
公共无效重置()
{
m_i位置=0;
}
#端区
}
公共类编号排列:IEnumerator,IEnumerable
{
public List NumberGroups=新列表();
#区域枚举设置
私有int m_i位置=-1;
公共对象流
{
得到
{
返回数字组;
}
}
公共图书馆
{
m_i位置++;
返回true;
}
公共无效重置()
{
m_i位置=0;
}
IEnumerator IEnumerable.GetEnumerator()
{
返回NumberGroups.GetEnumerator();
}
#端区
}
}
列表
确实是一条路(正如斯维克所指出的),但如果你必须这样做,在我看来,以下是最简单的:
private static void AddOddNumberToRange(NumberRanges oNumberRanges, int p)
{
oNumberRanges.NumberGroups[1].Number.Add(p);
}
private static void AddEvenNumberToRange(NumberRanges oNumberRanges, int p)
{
oNumberRanges.NumberGroups[0].Number.Add(p);
}
这将在第二次调用OutPutRanges时产生以下输出:
2
4
6
8
3
5
7
9
2.
4.
6.
8.
3.
5.
7.
9
使用列表
如果要使用List
,则需要两个List
(ogroup偶数和ogroup奇数),一个List
用于oNumberRanges。如果需要,您可以实际删除Ogroup偶数和Ogroup奇数,并使用一个List
来获取上述代码,并在Main方法中将其压缩为几行代码:
static void Main(string[] args)
{
// Create the oNumberRanges and initialize it with the even and odd lists
List<List<int>> oNumberRanges = new List<List<int>>() { new List<int>(){ 2, 4, 6}, new List<int>() { 3, 5, 7 } };
OutPutRanges(oNumberRanges);
Console.ReadKey();
// Add 8 to the even list
oNumberRanges[0].Add(8);
// Add 9 to the odd list
oNumberRanges[1].Add(9);
OutPutRanges(oNumberRanges);
Console.ReadKey();
}
private static void OutPutRanges(List<List<int>> oNumberRanges)
{
foreach (List<int> olist in oNumberRanges)
{
foreach (int iNum in olist)
{
Console.WriteLine(iNum.ToString());
}
}
}
static void Main(字符串[]args)
{
//创建oNumberRanges并用偶数和奇数列表初始化它
List oNumberRanges=new List(){new List(){2,4,6},new List(){3,5,7};
输出范围(oNumberRanges);
Console.ReadKey();
//将8添加到偶数列表中
oNumberRanges[0]。添加(8);
//将9添加到单数列表中
oNumberRanges[1]。添加(9);
输出范围(oNumberRanges);
Console.ReadKey();
}
专用静态void输出范围(列表oNumberRanges)
{
foreach(列出ONUMBERANGES中的olist)
{
foreach(在olist中为int iNum)
{
Console.WriteLine(iNum.ToString());
}
}
}
这将产生以下输出:
2
4
6
3
5
7
2
4
6
8
3
5
7
9
2.
4.
6.
3.
5.
7.
2.
4.
6.
8.
3.
5.
7.
9
为什么要实现自己的集合?看起来直接使用
List
对你来说应该很好。这可能是一个家庭作业问题吗?如果是,请贴上标签。您是否需要使用提供的方法签名(AddEventNumberToRange(NumberRanges,int)和AddOddNumberToRange(NumberRanges,int)?感谢列表建议。Tim,这正是您想要的。是否可以命名列表,然后访问L