Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有时列表并不';无法初始化_C#_List_Initialization - Fatal编程技术网

C# 有时列表并不';无法初始化

C# 有时列表并不';无法初始化,c#,list,initialization,C#,List,Initialization,解决:我自己解决了。2天内我无法选择我的答案。谢谢大家 我有一只奇怪的虫子。有时我的列表是0,但我不知道为什么。每次我通过调试器时,它都会工作。这让我发疯了。请帮忙!顺便说一下,这是旅行推销员分店 public static BSSFPair generateBSSF(ref City[] Cities, int numberOfTrials) { int n = Cities.Length; //Declare variable for updati

解决:我自己解决了。2天内我无法选择我的答案。谢谢大家

我有一只奇怪的虫子。有时我的列表是0,但我不知道为什么。每次我通过调试器时,它都会工作。这让我发疯了。请帮忙!顺便说一下,这是旅行推销员分店

 public static BSSFPair generateBSSF(ref City[] Cities, int numberOfTrials)
    {
        int n = Cities.Length;

        //Declare variable for updating.
        double minCostOfBSSF = double.PositiveInfinity;
        List<int> minRandomCityOrder = new List<int>();

        //Try many random paths, and keep track of the minimum-cost path. Then select the minimum-cost path as the BSSF.
        for (int iteration = 0; iteration < numberOfTrials; iteration++)
        {
            //Choose a random path.
            List<int> randomCityOrder = new List<int>(generateRandomOrderInts(n)); //a list of ints of cities. Each city int only occurs once.

            //Determine cost of route using the TSPSolution class.
            System.Collections.ArrayList cities = new System.Collections.ArrayList(); //a list of City objects
            foreach (int i in randomCityOrder)
            {
                cities.Add(Cities[i]);
            }
            ProblemAndSolver.TSPSolution bssf = new ProblemAndSolver.TSPSolution(cities);
            double costOfBSSF = bssf.costOfRoute();

            //Update the minimums.
            if (costOfBSSF < minCostOfBSSF)
            {
                minCostOfBSSF = costOfBSSF;
                minRandomCityOrder = new List<int>(randomCityOrder);
            }
        }

        //return the path and the cost of the BSSF.

//<---- This is where the method with the bug was called.

        return new BSSFPair(minCostOfBSSF, convertCityListToEdges(minRandomCityOrder)); //<---- THIS IS WHERE THE METHOD WITH THE BUG WAS CALLED.
    }
公共静态BSSFPair generateBSSF(参考城市[]城市,国际号码)
{
int n=城市长度;
//声明要更新的变量。
double MinCostOfBSF=double.PositiveInfinity;
List minRandomCityOrder=新列表();
//尝试许多随机路径,并跟踪最小成本路径。然后选择最小成本路径作为BSSF。
for(int iteration=0;iteration// 我猜这个条件是
true
,您的列表会被重置:

//Update the minimums.
if (costOfBSSF < minCostOfBSSF)
{
    minCostOfBSSF = costOfBSSF;
    minRandomCityOrder = new List<int>(randomCityOrder);
}

…但我不知道这在您的算法中是否有意义。我只是展示可能的情况。

我发现了问题所在。在这种方法中:

  public static BSSFPair generateBSSF(ref City[] Cities, int numberOfTrials)
    {
        int n = Cities.Length;

        //Declare variable for updating.
        double minCostOfBSSF = double.PositiveInfinity;
        List<int> minRandomCityOrder = new List<int>();//<--------------here
    ...
公共静态BSSFPair generateBSSF(参考城市[]城市,国际号码)
{
int n=城市长度;
//声明要更新的变量。
double MinCostOfBSF=double.PositiveInfinity;

列出MnReaveCITyOrths=新的ListLee(;)/ /不是答案,但是考虑使用而不是<代码> NoTimPrimeNeTestExpPo> <代码> >我对<代码> MnReaveCythyRead =新列表(RealthCITIORY)感到好奇。
。您真的希望每次迭代都有一个全新的列表,还是希望附加到现有列表中?@JamesThorpe或更好的
ArgumentOutOfRangeException
是一个
列表
,这意味着它正在使用,因此没有内容(假设
randomCityOrder
有内容),而不是初始容量,我将
长度
修正为
容量
.Thx以指出这一点。
//Update the minimums.
if (costOfBSSF < minCostOfBSSF)
{
    minCostOfBSSF = costOfBSSF;
    minRandomCityOrder = new List<int>(randomCityOrder);
}
minRandomCityOrder = Enumerable.Range(0, randomCityOrder).ToList();
  public static BSSFPair generateBSSF(ref City[] Cities, int numberOfTrials)
    {
        int n = Cities.Length;

        //Declare variable for updating.
        double minCostOfBSSF = double.PositiveInfinity;
        List<int> minRandomCityOrder = new List<int>();//<--------------here
    ...
  public static BSSFPair generateBSSF(ref City[] Cities, int numberOfTrials)
    {
        int n = Cities.Length;

        //Declare variable for updating.
        double minCostOfBSSF = double.PositiveInfinity;
        List<int> minRandomCityOrder = new List<int>(generateRandomOrderInts(n)); //<---fixed
  ...