Vector.Value由于其保护级别

时间:2016-12-07 14:19:00

标签: c#

我正在学习C#并遇到了错误。我所有的方法都是公开的。我正在模拟一本书中的代码,该书说明“假设你已经定义了一个名为Vector的类,而Vector是一个引用类型,并且有一个名为Value的int成员变量:”它继续使用Program.cs代码(我复制了) 。所以我试图模仿Vector类,当我去编译时,由于其保护级别,Vector.Value无法访问。

的Program.cs:

using System;

namespace ReferenceType
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Vector x, y;
            x = new Vector();
            x.Value = 30;
            Console.WriteLine(y.Value);
            y.Value = 50;
            Console.WriteLine(x.Value);
        }
    }
}

Vector.cs:

namespace ReferenceType
{
    public class Vector
    {
        private int Value;

        public int GetterSetter{
            get { return Value; }
            set { Value = value; }
        }
    }
}

1 个答案:

答案 0 :(得分:3)

您正在尝试访问Vector类的private成员,但您有一个public属性公开private字段Value,应该使用此属性。

试试这段代码,

using System;

namespace ReferenceType
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Vector x, y;
            x = new Vector();
            // Assign integer value to our public property "GetterSetter"
            x.GetterSetter= 30;
            // Access value of "Value" via "GetterSetter" property
            Console.WriteLine(x.GetterSetter);
            y.GetterSetter= 50;
            Console.WriteLine(y.GetterSetter);
        }
    }
}

更新最好将您的代码更改为

using System;

namespace ReferenceType
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Vector x, y;
            x = new Vector();
            x.Value = 30;
            Console.WriteLine(x.Value);
            y.Value = 50;
            Console.WriteLine(y.Value);
        }
    }
}


//Vector.cs
using System;

namespace ReferenceType
{
    public class Vector
    {
        private int _value;

        public int Value{
            get { return _value; }
            set { _value = value; }
        }
    }
}

您可以在此处详细了解访问修饰符msdn.microsoft.com/en-us/library/wxh6fsc7.aspx

相关问题