我遇到了运行代码时遇到错误的问题。错误是" VariableManager.characteristicPoints' AmericanPresident.VariableManager'不包含' characteristicPoints'"。
的定义当InfluencePointManager方法调用VariableManager类中的UpdateInfluencePoints或UpdateOriginalPoints时,我收到此错误。我尝试清理解决方案以及删除bin和obj文件夹。我还在整个解决方案中搜索了" characteristicPoints"而且它再也找不到了。我不知所措。
提前致谢!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AmericanPresident
{
class InfluencePointManager
{
public enum Influence
{
homeland,
military,
political,
economic,
legal,
criminal,
numberOfInfluenceItems
}
private int[] _originalPoints = new int[(int)Influence.numberOfInfluenceItems];
private static int[] _influencePoints = new int[(int)Influence.numberOfInfluenceItems];
public int[] InitialPointDistribution()
{
Random rand = new Random();
int i = 0, j, k = 0;
foreach (int l in _originalPoints)
{
_originalPoints[k] = 0;
k++;
if (k < 6)
{
Console.Write(_originalPoints[k]);
};
}
do
{
j = rand.Next(6);
Console.Write(j);
switch (j)
{
case (int)Influence.homeland:
if (_originalPoints[(int)Influence.homeland] != 10)
{
_originalPoints[(int)Influence.homeland]++;
i++;
Console.Write(_originalPoints[(int)Influence.homeland]);
break;
}
else break;
case (int)Influence.military:
if (_originalPoints[(int)Influence.military] != 10)
{
_originalPoints[(int)Influence.military]++;
i++;
Console.Write(_originalPoints[(int)Influence.military]);
break;
}
else break;
case (int)Influence.political:
if (_originalPoints[(int)Influence.political] != 10)
{
_originalPoints[(int)Influence.political]++;
i++;
Console.Write(_originalPoints[(int)Influence.political]);
break;
}
else break;
case (int)Influence.economic:
if (_originalPoints[(int)Influence.economic] != 10)
{
_originalPoints[(int)Influence.economic]++;
i++;
Console.Write(_originalPoints[(int)Influence.economic]);
break;
}
else break;
case (int)Influence.legal:
if (_originalPoints[(int)Influence.legal] != 10)
{
_originalPoints[(int)Influence.legal]++;
i++;
Console.Write(_originalPoints[(int)Influence.legal]);
break;
}
else break;
case (int)Influence.criminal:
if (_originalPoints[(int)Influence.criminal] != 10)
{
_originalPoints[(int)Influence.criminal]++;
i++;
Console.Write(_originalPoints[(int)Influence.criminal]);
break;
}
else break;
default:
break;
}
} while (i < 18);
//the next line s where the error occurs
VariableManager.VariableManagerInstance.UpdateOriginalPoints(_originalPoints, this);
VariableManager.VariableManagerInstance.UpdateInfluencePoints(_originalPoints, this);
return _influencePoints;
}
}
这是另一个班级。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AmericanPresident
{
class VariableManager
{
private static VariableManager variableManagerInstance;
private VariableManager() { }
public static VariableManager VariableManagerInstance
{
get
{
if (variableManagerInstance == null)
{
variableManagerInstance = new VariableManager();
}
return variableManagerInstance;
}
}
public string playerName { get; private set; }
public int[] experiencePoints { get; private set;}
public int[] resources { get; private set; }
public int[] originalPoints { get; private set; }
public int[] influencePoints { get; private set; }
public StartPage startPage { get; private set; }
public int availableInfluencePonts { get; private set; }
public void UpdatePlayerName(string name, object o)
{
if(o is CharacterBuildManager)
{
playerName = name;
}
}
//error occurs when the either of the next to methods are called by the
//InfluencePointManager
public void UpdateInfluencePoints(int[] p, object o)
{
if(o is InfluencePointManager)
{
p.CopyTo(influencePoints,0);
}
}
public void UpdateOriginalPoints(int[] p, object o)
{
if(o is InfluencePointManager)
{
p.CopyTo(originalPoints, 0);
}
}
public void UpdateStartPage(StartPage sp, object o)
{
if(o is StartPage)
{
startPage = sp;
}
}
public void UpdateAvailableInfluencePoints(int i, object o)
{
if(o is InfluencePointManager)
{
availableInfluencePonts = i;
}
}
}
答案 0 :(得分:0)
我仍然不知道为什么解决方案引用了不再存在的成员。我在新的解决方案中测试了代码,这有助于我找出问题所在。
基本上发生的事情是我的数组为空。我将此代码添加到VariableManager中解决问题的方法中。
if(originalPoints == null)
{
originalPoints = new int[(int)InfluencePointManager.Influence.numberOfInfluenceItems];
}
非常奇怪的错误仍然如此,我猜这只是部分解决了。