C# 搜索功能超出范围? 公共静态int PlanetToIndex(字符串planetToSearch,列表pl) { 对于(int i=0;i
它的C#简单的搜索功能,似乎容量=16,但超出范围为14 14是正确的值,为什么MessageBox显示16 还有,这里列出了我传递给函数的内容(Planet是抽象类)C# 搜索功能超出范围? 公共静态int PlanetToIndex(字符串planetToSearch,列表pl) { 对于(int i=0;i,c#,list,search,range,C#,List,Search,Range,它的C#简单的搜索功能,似乎容量=16,但超出范围为14 14是正确的值,为什么MessageBox显示16 还有,这里列出了我传递给函数的内容(Planet是抽象类) class星系 { public List galaxy=新列表(); 行星Ceres=新行星.Ceres(); 行星冥王星=新行星。冥王星(); 欧罗巴行星=新行星。欧罗巴(); 金星=新行星。金星(); 行星Sedna=新行星.Sedna(); 木星=新行星。木星(); 行星空洞=新行星。空洞(); 行星Eris=新行星.E
class星系
{
public List galaxy=新列表();
行星Ceres=新行星.Ceres();
行星冥王星=新行星。冥王星();
欧罗巴行星=新行星。欧罗巴();
金星=新行星。金星();
行星Sedna=新行星.Sedna();
木星=新行星。木星();
行星空洞=新行星。空洞();
行星Eris=新行星.Eris();
火星=新行星。火星();
天王星=新行星。天王星();
行星海王星=新行星。海王星();
土星=新行星。土星();
行星地球=新行星。地球();
水星=新行星。水星();
公共银河()
{
银河系(Ceres);
银河系(冥王星);
加上(欧罗巴);
加上(金星);
galaxy.Add(Sedna);
加上(木星);
galaxy.Add(Void);
galaxy.Add(Eris);
galaxy.Add(火星);
银河系(天王星);
银河系(海王星);
加上(土星);
加上(地球);
加上(水星);
}
}
我建议使用count
class Galaxy
{
public List<Planet> galaxy = new List<Planet>();
Planet Ceres = new Planet.Ceres();
Planet Pluto = new Planet.Pluto();
Planet Europa = new Planet.Europa();
Planet Venus = new Planet.Venus();
Planet Sedna = new Planet.Sedna();
Planet Jupiter = new Planet.Jupiter();
Planet Void = new Planet.Void();
Planet Eris = new Planet.Eris();
Planet Mars = new Planet.Mars();
Planet Uranus = new Planet.Uranus();
Planet Neptune = new Planet.Neptune();
Planet Saturn = new Planet.Saturn();
Planet Earth = new Planet.Earth();
Planet Mercury = new Planet.Mercury();
public Galaxy()
{
galaxy.Add(Ceres);
galaxy.Add(Pluto);
galaxy.Add(Europa);
galaxy.Add(Venus);
galaxy.Add(Sedna);
galaxy.Add(Jupiter);
galaxy.Add(Void);
galaxy.Add(Eris);
galaxy.Add(Mars);
galaxy.Add(Uranus);
galaxy.Add(Neptune);
galaxy.Add(Saturn);
galaxy.Add(Earth);
galaxy.Add(Mercury);
}
}
for(int i=0;i
我想您应该使用pl.Count
,而不是pl.Capacity
Capacity
是内部数据结构在不调整大小的情况下可以容纳的元素总数。而Count
是列表中实际包含的元素数 容量与计数不同。试试这个:
for (int i = 0; i < pl.Count(); i++)
在for循环中,您需要使用
return pl.FindIndex(planet => planet.Equals(planetToSearch));
for(int i=0;i
容量是指其可存储的元素数量。试试这个,看看有什么区别:
for (int i = 0; i < pl.Count; i++)
List intlist=new List();
intlist.容量=32;
Console.WriteLine(intlist.Count);
Console.WriteLine(intlist.Capacity);
Console.In.Read();
输出为0和32。因为数组中实际上没有元素,而是有32个元素的空间。与大小固定的数组不同,列表随着大小的增长而调整大小<代码>列表。容量是允许您在需要调整大小之前获取/设置列表大小的属性 : Capacity是列表在需要调整大小之前可以存储的元素数,Count是列表中实际存在的元素数。 容量始终大于或等于计数。如果在添加元素时计数超过容量,则在复制旧元素并添加新元素之前,通过自动重新分配内部数组来增加容量
因此,在您的示例中,容量计数哇。。。是的,这解释了一切。。。
return pl.FindIndex(planet => planet.Equals(planetToSearch));
for (int i = 0; i < pl.Count; i++)
List<int> intlist = new List<int>();
intlist.Capacity = 32;
Console.WriteLine(intlist.Count);
Console.WriteLine(intlist.Capacity);
Console.In.Read();