作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么我要在声明时隐式向上转型?我的问题来自教科书中的以下代码。
private readonly IList<Inventory> _cars = new ObservableCollection<Inventory>();
我为什么不直接这样做。
private readonly ObservableCollection<Inventory> _cars = new ObservableCollection<Inventory>();
如果我只是为了节省空间,为什么不这样做呢?
private readonly var _cars = new ObservableCollection<Inventory>();
谢谢,
最佳答案
这与节省击键无关;这是关于“最小权限”的原则。
这个:
private readonly var _cars = new ObservableCollection<Inventory>();
还有这个:
private readonly ObservableCollection<Inventory> _cars = new ObservableCollection<Inventory>();
明确声明 _cars
是可观察的。您之后编写的代码可能会依赖于此,即使它不是您的原始设计。一般来说,您希望使用最简单的接口(interface)来完成这项工作,因此如果您的代码的某些部分不需要知道某些东西是可观察的,那么静态类型变量是一个很好的做法,这样它们就可以使用不可观察的接口(interface)。
当你写的时候:
private readonly IList<Inventory> _cars = new ObservableCollection<Inventory>();
你明确表示你不想编写依赖于可观察的 _cars
的代码,如果你这样做,编译器会出错并向你尖叫,这很好。
关于c# - 为什么在声明中隐式向上转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62413961/
我是一名优秀的程序员,十分优秀!