已有56人关注
为什么字段要私有,但属性为公有?
发表在C#图书答疑 2022-07-05 《C#从入门到精通(第4版)》第8章 属性和方法
是否精华
版块置顶:

在教程视频中:为何字段要私有,但属性为公有?


private int age;

        public int Age


这样做是为防止别人删除修改数据而造成数据不合法吗?



分享到:
精彩评论 3
game99258
学分:2266 LV10
2022-07-06
沙发

属性是共有的,有具体字义是特定的,不一定公有

小禾斗
学分:7303 LV13
TA的每日心情
奋斗
2017-04-21 14:00:25
2022-07-06
板凳

按照面向对象的要求来说,属性是通过get()、set()来给外界调用的,而字段是给类内部使用的。所以从安全性、严谨性来说,应该避免使用公有字段,尽量用私有字段和属性来做代替。

如果某个变量在赋值时候会有一些计算或者限制要求,通过属性赋值对它进行动态修改效果更好,另外如果某个变量对类外只允许引用或者只允许修改时候属性可以通过只有set或者只有get来提供这样一个功能,公有字段等于就是全部开放的形式了。


亨瑞_1706227971
学分:224 LV4
2022-07-08
地板

小禾斗 发表于2022-07-06 17:11

按照面向对象的要求来说,属性是通过get()、set()来给外界调用的,而字段是给类内部使用的。所以从安全性、严谨性来说,应该避免使用公有字段,尽量用私有字段和属性来做代替。

如果某个变量在赋值时候会有一些计算或者限制要求,通过属性赋值对它进行动态修改效果更好,另外如果某个变量对类外只允许引用或者只允许修改时候属性可以通过只有set或者只有get来提供这样一个功能,公有字段等于就是全部开放的形式了。


感谢您的指导


再请教一下:1、public是公有,private是私有,那internal也和private一样是私有吗?

2、

student stu = new student();

            stu.Age = Convert.ToInt32(Console.ReadLine);

            Console.WriteLine(stu.Age);

            Console.ReadLine();

为什么会报

严重性 代码 说明 项目 文件 禁止显示状态

错误 CS1503 参数 1: 无法从“方法组”转换为“object” ConsoleApp62 E:\C#project\ConsoleApp62\ConsoleApp62\Program.cs 37 活动


首页上一页 1 下一页尾页 3 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照