百科问答小站 logo
百科问答小站 font logo



c#里的属性是不是鸡肋? 第1页

  

user avatar   yinfupai 网友的相关建议: 
      

get/set属性编译后set,实际上会生成get或set方法包装,可以简单的视它为一种语法糖。

如果曾经写过java就知道了,大量的书写实体类的get,set方法会让你想吐,所以C#属性相对它会带来一定的便利性。

当然java实际开放发里,也可以采用IDEA的插件Lombok所提供的@setter及@getter的注解来实现,然后就会清爽很多。

那么,get/set,为什么是必要的?

深入一点的,如果一个字段,业务发生了变化,你突然发现它不应该对外暴露get或set其中的一个,那么你将可以很轻易地修改它。

再深入一点的,比如你返回某一个属性,在get或set时候必须进行一番处理,最典型的一种情况是利用特性进行validate,那么可以很轻易的在现有基础上扩展,而不会影响到其它业务。

最典型的场景,姓与名,可以分开成两个属性,而姓名加在一起可以作为一个计算属性,在外部看来,这三个属性应该都是对象本身所提供,如果又是方法又是属性,会显得代码不那么清晰整洁。

所以属性与方法在本质上其实是一样的东西,但是为了人的书写与阅读的便利性,所以表现形式会有不同。




  

相关话题

  “C++”读作「C 加加」,为什么“C#”不能读作「C 井」呢? 
  学了 3 年 Java,包括自学和大学学习,如今工作一开始需要我学 C#,觉得不甘心怎么办? 
  除了跨平台和平台成本以外,Java 还有什么特性是 C# 不具备的? 
  c#有没有简洁的方法跳出外层循环,类似Java那样使用标记的方式? 
  既然.NET平台如此优秀,为什么微软不推广到Linux、Mac等平台上? 
  为什么不能能向方法同时传入dynamic 类型,和lambda类型的参数? 
  为什么大部分程序员都喜欢用黑色界面? 
  如何看待 .NET Native,真能达到 C++ 的性能、C# 的生产效率吗? 
  C# 大数据量如何高效率读取解析数据库大字段? 
  c#表达式目录树的作用是什么?利与弊是什么?应用场景有哪些? 

前一个讨论
女孩子想修道很麻烦么?
下一个讨论
据说 iPhone 仅凭A13 和 iOS,而其他参数都比不过国产手机却达到销量第一,是真的吗?





© 2025-01-19 - tinynew.org. All Rights Reserved.
© 2025-01-19 - tinynew.org. 保留所有权利