我刚刚开始学习c#。我对列表有问题,但无法解决:如果"个人",我需要生成一个列表。每个 inidivid 都是整数序列。(我在这里使用遗传算法解决旅行推销员问题)例如,我有一个类初始化:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace TravellingSalesman
{
public class individ
{
public int[] individSequence { set; get; }
public int fitnessFunction { set; get; }
public individ(int size)
{
individSequence = new int[size];
individSequence = RandomNumbers(size).ToArray(typeof(int)) as int[];
}
public ArrayList RandomNumbers(int max)
{
// Create an ArrayList object that will hold the numbers
ArrayList lstNumbers = new ArrayList();
// The Random class will be used to generate numbers
Random rndNumber = new Random();
// Generate a random number between 1 and the Max
int number = rndNumber.Next(1, max + 1);
// Add this first random number to the list
lstNumbers.Add(number);
// Set a count of numbers to 0 to start
int count = 0;
do // Repeatedly...
{
// ... generate a random number between 1 and the Max
number = rndNumber.Next(1, max + 1);
// If the newly generated number in not yet in the list...
if (!lstNumbers.Contains(number))
{
// ... add it
lstNumbers.Add(number);
}
// Increase the count
count++;
} while (count <= 10 * max); // Do that again
// Once the list is built, return it
return lstNumbers;
}
}
现在我想创建一个这个对象的列表: 列表列表;...在 C-Tor 中: 列表 = 新列表();
现在我正在尝试将对象添加到列表中并获取它们以供将来工作
private void createFirstGeneration()
{
for (int i = 0; i != commonData.populationSize; ++i)
{
individ newIndivid = new individ(commonData.numberOfcities);
list.Add(newIndivid);
for (int j = 0; j != commonData.numberOfcities; ++j)
System.Console.Write(((individ)list[i]).individSequence[j]);
System.Console.WriteLine();
}
for (int i = 0; i != commonData.populationSize; ++i)
{
for (int j = 0; j != commonData.numberOfcities; ++j)
System.Console.Write(((individ)list[i]).individSequence[j]);
System.Console.WriteLine();
}
}
commonData.populationSize是人口中的一些inidivid。但是我从此示例的两个输出中具有不同的输出。
312
213
213
213
213
312
213
213
213
213
我是 c# 的新手,所以,拜托,你能帮我吗?
如果我只是按照你问题的后半部分的代码(它确实缺少变量,如commonData,populationSize和numberOfCities)
第一个"for"循环是在循环作用域本身内将项添加到列表中
individ newIndivid = new individ(commonData.numberOfcities);
list.Add(newIndivid); ----> This line
因此,尽管您正在循环访问相同的"commonData.PopulationSize",但两个循环中的列表计数/内容并不相同。