找回密码
 立即注册
楼主: stonstad

C#中有了字段和方法,属性和索引是不是多此一举?

[复制链接]
发表于 2021-11-16 15:59 | 显示全部楼层
先说结论:就C#而言,字段和方法不足以代替属性。
    属性和字段功能上有区别:因为属性获得的值是副本。当它们是结构类型时候,表现完全不一样。另外,属性具有更灵活的权限分配,还可以在里面添加调试代码。属性和方法有区别:方法允许作为函数传递,而属性不允许。反过来说,属性有限制作为函数直接传递的能力。另外,设计DSL时,可以绑定一个属性,就同时支持读写,方法就不行了。在前两点中,很容易找出一个交集,那是刚需属性的地方。
发表于 2021-11-16 16:00 | 显示全部楼层
我倒觉得90%的java的getter setter实际上都只是直接操作一个私有变量才是多此一举
发表于 2021-11-16 16:04 | 显示全部楼层
C#很多特性都是语法糖,属性和索引就是这样。理论上你确实可以利用getAge和getIndex代替.Age和调用,但是少打几个字它不香吗,它不香吗
发表于 2021-11-16 16:11 | 显示全部楼层
这么说吧,C#有了接口,那委托是不是多此一举呢?
发表于 2021-11-16 16:13 | 显示全部楼层
语法糖可以简化语法,你说是不是多此一举?
没有属性和索引都封装成方法的话,写代码就没那么简洁和优雅了,
发表于 2021-11-16 16:23 | 显示全部楼层
属性是:为了读写权限,逻辑处理。get;set;方法
索引器:为了方便你使用类的内部集合。
发表于 2021-11-16 16:30 | 显示全部楼层
既然有if else,为啥还要有三元运算符?弄的很多初学者看不懂。(手动狗头
发表于 2021-11-16 16:37 | 显示全部楼层
对外只读对内可写,字段怎么实现,还不是要上属性。
发表于 2021-11-16 16:39 | 显示全部楼层
请问有了属性还要写getXXX是不是多此一举?
发表于 2021-11-16 16:41 | 显示全部楼层
属性和索引器的本质也是方法。C#中用属性替代了java中自写的get和set方法。实际上算是C#的语法糖。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-23 05:25 , Processed in 0.064987 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表