对于先前从解决方案中删除的成员,类不包含成员定义错误?

时间:2015-02-25 01:34:04

标签: c#

我遇到了运行代码时遇到错误的问题。错误是" 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;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我仍然不知道为什么解决方案引用了不再存在的成员。我在新的解决方案中测试了代码,这有助于我找出问题所在。

基本上发生的事情是我的数组为空。我将此代码添加到VariableManager中解决问题的方法中。

if(originalPoints == null)
        {
            originalPoints = new int[(int)InfluencePointManager.Influence.numberOfInfluenceItems];
        }

非常奇怪的错误仍然如此,我猜这只是部分解决了。