Enum拥有letention可访问性而不是属性Outcome1

Fil*_*son 1 .net c# asp.net webforms

public class SecretNumber
{
    //Construktor
    public SecretNumber()
    {
        Initialize();
        _previousGuesses = new List<int>();
    }

    //Constant
    public const int MaxNumberOfGuesses = 7;

    //Field
    private int _number;
    private List<int> _previousGuesses;

    //Property
    public bool CanMakeGuess
    {
        get;
    }

    public int Count
    {
        get;
    }

    public int? Number
    {
        public get;
    }

    //Lite oklart hur man ska göra när fälten är autoimplementerade
    public Outcome Outcome1
    {
        get
        {
            return Outcome1;
        }
        private set
        {
            Outcome1 = value;
        }
    }

    public ReadOnlyCollection<int> PreviousGuesses
    {
        get;
        set;
    }

    //Methods
    public void Initialize()
    {
        Random random = new Random();

        _number = random.Next(1, 100);

        _previousGuesses.Clear();

        Outcome1 = Outcome.Indefinite;
    }

    private Outcome MakeGuess(int guess)
    {
        if (Number > 1 && Number < 100)
        {
            if (PreviousGuesses.Contains(guess))
            {
                return Outcome.PreviousGuess;
            }
            else if (PreviousGuesses.Count >= MaxNumberOfGuesses)
            {
                return Outcome.NoMoreGuesses;
            }
            if (Number == guess)
            {
                return Outcome.Correct;
            }
            else if (Number < guess)
            {
                return Outcome.High;
            }
     //       else if (Number > guess)
       //     {
                return Outcome.Low;
         //   }
        }
        else
        {
            throw new ArgumentOutOfRangeException("Måste vara inom intervallet 1-100");
        }
    }

    //Enumerator
    enum Outcome
    {
        Indefinite,
        Low,
        High,
        Correct,
        NoMoreGuesses,
        PreviousGuess
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误消息是我的枚举密码具有可访问性而不是属性Outcome1,但我不明白为什么.

该属性称为Outcome1,因为否则名称在Visual Studio中混淆.

Jon*_*eet 5

你的枚举具有private可见性,因为你没有给它一个明确的可见性,它嵌套在你的SecretNumber类中.

你不能使用类型作为参数或者返回类型属于公开暴露成员1时,该类型是不是也公开-否则呼叫者不知道怎么用它做.

你可以把它公之于众:

public enum Outcome
Run Code Online (Sandbox Code Playgroud)

1这不是一样"的公共成员".例如,类型中的public(非重写)方法internal可以将其他内部成员称为参数 - 因为该方法仍然只能由另一个知道"包含" internal类型的类型调用.