RhinoFreak 发表于 2021-11-16 15:59

先说结论:就C#而言,字段和方法不足以代替属性。
属性和字段功能上有区别:因为属性获得的值是副本。当它们是结构类型时候,表现完全不一样。另外,属性具有更灵活的权限分配,还可以在里面添加调试代码。属性和方法有区别:方法允许作为函数传递,而属性不允许。反过来说,属性有限制作为函数直接传递的能力。另外,设计DSL时,可以绑定一个属性,就同时支持读写,方法就不行了。在前两点中,很容易找出一个交集,那是刚需属性的地方。

xiaozongpeng 发表于 2021-11-16 16:00

我倒觉得90%的java的getter setter实际上都只是直接操作一个私有变量才是多此一举

maltadirk 发表于 2021-11-16 16:04

C#很多特性都是语法糖,属性和索引就是这样。理论上你确实可以利用getAge和getIndex代替.Age和调用,但是少打几个字它不香吗,它不香吗

Arzie100 发表于 2021-11-16 16:11

这么说吧,C#有了接口,那委托是不是多此一举呢?

johnsoncodehk 发表于 2021-11-16 16:13

语法糖可以简化语法,你说是不是多此一举?
没有属性和索引都封装成方法的话,写代码就没那么简洁和优雅了,

Ylisar 发表于 2021-11-16 16:23

属性是:为了读写权限,逻辑处理。get;set;方法
索引器:为了方便你使用类的内部集合。

XGundam05 发表于 2021-11-16 16:30

既然有if else,为啥还要有三元运算符?弄的很多初学者看不懂。(手动狗头

ainatipen 发表于 2021-11-16 16:37

对外只读对内可写,字段怎么实现,还不是要上属性。

jquave 发表于 2021-11-16 16:39

请问有了属性还要写getXXX是不是多此一举?

RhinoFreak 发表于 2021-11-16 16:41

属性和索引器的本质也是方法。C#中用属性替代了java中自写的get和set方法。实际上算是C#的语法糖。
页: 1 [2] 3
查看完整版本: C#中有了字段和方法,属性和索引是不是多此一举?