在 c# 中使用列表



我刚刚开始学习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",但两个循环中的列表计数/内容并不相同。

相关内容

  • 没有找到相关文章

最新更新