C# 关于自定义类属性的问题,为什么只读属性不能更改?

classtest{publicboolSql_Open{getreturnSql_Open=false;}publicvoidstop_data(){Sql_Open=... class test{
public bool Sql_Open
{
get return Sql_Open = false;
}

public void stop_data()
{
Sql_Open = false;
}
}

定义的只读类属性为什么不能被改变?
-------------------------------
如何只允许 test 类的代码gei
如何只允许 test 类的代码改变 sql_Open 属性的值
展开
 我来答
阳光的雷咩咩
推荐于2017-12-15 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7820万
展开全部

最简单的办法使用private set,示例:

    class Program
    {
        static void Main(string[] args)
        {
            C c = new C();
            //c.S = "编译错误";
            c.V("正确运行");
            Console.WriteLine(c.S);
            Console.ReadLine();
        }
    }

    public class C
    {
        private string s;
        public string S
        {
            get
            {
                return this.s;//注意返回私有的
            }
            private set//重要
            {
                this.s = value;
            }
        }

        public void V(string s)
        {
            this.S = s;
            //下面也行
            this.s = s;
        }
    }

 另外你的代码有明显的问题,属性里return的应该是另一个私有字段,通常是属性名的首字母小写。像你那样写运行时一般会出现循环引用,堆栈溢出。

tony18888
2015-04-24
知道答主
回答量:49
采纳率:0%
帮助的人:9.6万
展开全部
没有set块,你怎么改!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式