c#为什么数据类型后面要加上属性{set;get;}?

如题所述

在C#编程中,数据成员的使用是否需加上属性{get;set;},这与成员的用途和安全性紧密相关。不加{get;set;},数据成员仅作为字段,通过反编译工具只能找到字段,且建议保持私有性,避免使用更广泛的访问修饰符如public。

而加上{get;set;}后,数据成员成为属性。属性在反编译后可见三个成员,两个方法和一个私有字段。属性将取值与赋值紧密连接,使代码更紧凑,数据访问更加安全。通过属性使用,代码结构清晰,是否能取值、赋值一目了然,避免了混乱和错误的思维判断。

属性的特殊之处在于,它们可以被封装在接口中,方便在项目中重用。当项目有类继承或抽象需求时,属性可以被抽象或虚拟,子类可根据需要重写父类的抽象或虚拟属性,添加具体逻辑。

总结属性的优点,字段功能则不具备。回到问题,属性数据{get;set;}中如无执行逻辑,是否能保护数据?答案是否定的。因为缺少合法性判断,数据保护作用有限。若后期需保护数据,可直接在"get"与“set”中添加代码,实现数据校验,简化了外部校验流程,利于代码扩展和维护。C#的设计旨在实现这种优雅与高效,提高代码可读性和灵活性。
温馨提示:内容为网友见解,仅供参考
无其他回答

c#为什么数据类型后面要加上属性{set;get;}?
在C#编程中,数据成员的使用是否需加上属性{get;set;},这与成员的用途和安全性紧密相关。不加{get;set;},数据成员仅作为字段,通过反编译工具只能找到字段,且建议保持私有性,避免使用更广泛的访问修饰符如public。而加上{get;set;}后,数据成员成为属性。属性在反编译后可见三个成员,两个方法和...

程序类设计get方法和set方法的作用是什么
一般类的成员变量被设置为private(私有的),这样设置安全性比较高,但是设置为私有的后其他的类和对象则无法调用该对象了,所以会有get和set方法,这两个方法一般设置为public,在其他的类中通过对象调用set或get方法即可操作私有的变量,增强程序的安全性,set为给对象赋值的方法,而get则是取得变量值的...

c# 中的GET 和SET ,到底有什么用?到底应该在什么时候用?
set\/get一般都是用来处理具体某一对象的,比如说学生对象。在写set\/get的时候,也一般把其成员设置成private属性,而另外对每个属性分别写一个set和get方法来设置和获取它的值。在一个网页中,如果要用来该bean,通常把个控件的名字写成与bean中定义的各属性名字一样,这样有一个好处就是可提交表单的时...

c#get和set用法详解
访问器必须在return或throw语句中终止,并且控制不能超出访问器体。2、set访问器与返回void的方法类似,它使用称为value的隐式参数,此参数的类型是属性的类型。set访问器被添加到Name属性:publicstringName { get{returnname;} set{name=value;} } 当对属性赋值时,用提供新值的参数调用set访问器。...

C#数据类型问题
C#中 public int i {set;get;} 是在类中使用 这是属性声明的简写形式,完整的是:private int I;public int i { set{I=value} get{return I} } 其中,I是私有的,类里面才能访问;i是公共的,其他类可以访问 而int i;是定义变量

如何理解c#类中的字段、属性、方法以及事件?
属性 public string Name 其它类可访问,但只能赋值,不能取值。 { 注释了get就只能给Name赋值,而不能取值。反之依然 get{return name;} set { TODO:可以调用方法等其它操作。 这里就是一个方法,方法名为set,参数为value; name=value; } } } .方法 方法定义类可以执行的操作。方法可以接受提供输入数据的参数...

C#中的属性定义为public和定义为private再使用get()set()方法有区别吗...
1. 有。2. 首先更正下那个不叫属性那个叫成员变量,C#中的属性就和方法差不多,也能起到保护成员变量的作用。使用public的成员变量不太安全,什么样的类型都能赋值。如果是用private,在set、get方法中可以对其进行验证合法性,私有的成员变量就被方法保护起来了。

C#中,不懂属性的声明和使用
根据面向对象封装特性,一般将字段设为私有,以防止被实例修改;属性是类给外部访问字段提供的Public方法,供实例访问字段,一般与字段同名,只是首字母大写。在属性中可以对字段的访问进行限制,如只读或只写,或有条件改变,如你代码中value>0才修改。

关于C#索引器的问题,求解
1、索引器的定义 C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作。定义索引器的方式与定义属性有些类似,其一般形式如下:[修饰符] 数据类型 this[索引类型 index]{ get{\/\/获得属性的代码} set{ \/\/设置属性的代码} } ...

请问C#中的特性有什么用呢?就是方法或字段上面的[]
public class Test { } 再比如,我们想描述一个属性已经被废弃(例如在低版本中曾经有这个属性,但高版本的接口中已经废弃,出于兼容性考虑依旧保留声明而不是单纯的把代码段删除了)class Test{ [System.Obsolete] public string A { get; set; }} ...

相似回答
大家正在搜