C# 有时列表并不';无法初始化
解决:我自己解决了。2天内我无法选择我的答案。谢谢大家强> 我有一只奇怪的虫子。有时我的列表是0,但我不知道为什么。每次我通过调试器时,它都会工作。这让我发疯了。请帮忙!顺便说一下,这是旅行推销员分店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
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
...