首页 文章

如何声明和使用读/写属性

提问于
浏览
0

我刚刚开始学习C#,并在以下代码的具体测试答案中提到:

Tak的set属性缺失或不正确 .

代码由2个类组成 .

1级主要:

namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {
            Takis obj = new Takis();

            obj.Val = 23.4;
            Console.WriteLine(obj.Val);
        }
    }
}

第2类:

namespace ConsoleApplication6
{
    class Takis
    {
        double val;

        public double Val
        {
            get
            {
                return val;
            }
            set
            {
                val = 3.14;
            }
        }

        public Takis()
        {    
        }
    }
}

在Visual Studio中,我得到 NOT ALWAYS 以下内容:

'ConsoleApplication6.vshost.exe'(CLR v4.0.30319:ConsoleApplication6.vshost.exe):已加载'C:\ Windows \ Microsoft.Net \ assembly \ GAC_32 \ System.Data \ v4.0_4.0.0.0__b77a5c561934e089 \ System . Data.dll” . 跳过加载符号 . 模块已经过优化,调试器选项“Just My Code”已启用 . 'ConsoleApplication6.vshost.exe'(CLR v4.0.30319:ConsoleApplication6.vshost.exe):已加载'C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System.Xml \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Xml .dll文件” . 跳过加载符号 . 模块已经过优化,调试器选项“Just My Code”已启用 . 线程0x1610已退出,代码为259(0x103) . 线程0x1638已退出,代码为0(0x0) . 线程0x13f4已退出,代码为259(0x103) . 'ConsoleApplication6.vshost.exe'(CLR v4.0.30319:ConsoleApplication6.vshost.exe):已加载'c:\ users \ stefanos \ documents \ visual studio 2013 \ Projects \ ConsoleApplication6 \ ConsoleApplication6 \ bin \ Debug \ ConsoleApplication6.exe' . 符号已加载 . 线程0x1480已退出,代码为259(0x103) . 线程0x1498已退出,代码为259(0x103) .

因为我对Visual Studio和C#都很陌生,所以如果有人能告诉我错误或向我解释有什么问题,我会很感激 .

3 回答

  • 4

    set 属性 Val 始终将属性设置为相同的值 . 相反,它应该很可能将属性设置为用户输入的值:

    set { val = value; }
    

    或者,如果意图是 always 的值为3.14(即只读),则可以删除setter并获取将返回值:

    class Takis
    {
        public double Val
        {
            get { return 3.14; }
        }
    
        public Takis()
        {    
        }
    }
    
  • 0

    Val属性中的集合应为val = value; value 在C#中是一个关键字,是实例化赋值的属性值 .

  • 0

    您的 property 的行为与通常的 property 状态不同 . 当我设置像23.4这样的值时,我希望能够坚持下去 . 在你的情况下,你的 class 不关心我设置的内容 . 当我设置一些东西,真的,属性将是3.14 .

    您的属性应设置给定的值(在本例中为23.4) . 您可以使用 value 关键字执行此操作:

    public double Val
        {
            get
            {
                return val;
            }
    
            set
            {
                val = value;
            }
        }
    

相关问题