C#里面为什么有时候要用get set设置属性?
- 提问者网友:星軌
- 2021-05-08 23:31
- 五星知识达人网友:神鬼未生
- 2021-05-09 01:07
你所说的情况应该是定义一个属性,使之为private私有,然后一个public方法可以获取或设置该属性值吧
这就是体现代码的封装性,因为如果你直接把属性定义为公开的话,那么任意地方创建该实例,就都可以使用该属性,就难以确保安全性等。。
而如果写成一个方法来调用的话。那么你就可以设置相应的访问权限,是子类访问,还是包内访问,抑或是单例等之类的。。。操作更灵活
- 1楼网友:撞了怀
- 2021-05-09 05:49
这是C# oop封装属性
public string name{get;}//只有get 就是只读属性
public string name{set;}//只有set 就是只写属性
public string name{get;set;}//get;set;读写属性
- 2楼网友:woshuo
- 2021-05-09 04:37
C#中使用属性,可以对字段进行封装。比如:(不使用时)
class Employee
{
public int age;
//private int age;
//public int Age
//{
//set{ age=value<0?0:value;}//在这里可以进行安全检查,好处是很明显的,当然可能还不只这些。
//get{return value;}
//}
}
class client
{
static void Main(string[] args)
{
Employee emp=new Employee();
emp.age=-1;//这是不对的,年龄怎么可以为负呢,你可能会想使用一个方法来对age赋值,同时
//把age改为private,如果这样的话为什么不使用属性呢。
}
}
- 3楼网友:归鹤鸣
- 2021-05-09 03:30
- 4楼网友:逃夭
- 2021-05-09 02:15
这是一种设计原则,称之为面向对象的封装性。从现在的开发角度说,是不建议直接将成员(指的是变量)直接用公开的方法供其它类访问的,因为这可能会导致有其它不可预见的时候意外修改了变量,或导致其它类似的问题。
当使用get、set将变量封装为属性以后,可以控制它们的可见性(能否被读取、能否被修改、能被谁操作等),修改的时候可以对将要修改的值进行验证是否合法,防止被其它类意外修改。这些都是面向对象设计的方法。
想知道详细的资料,可以搜索面向对象的相关特性:继承、封装和多态。
建议