静态 From 和 To 方法与隐式和显式 Casting 方法
static From and To methods vs implicit and explicit Casting methods
我已经阅读了 here 如何实现类型转换,我知道如何实现 ToType
和 FromType
方法。我需要知道为什么许多开发人员在可以轻松构建指定的转换时选择构建 FromType
和 ToType
方法?
是否有性能优势,或者它只是开发人员为 readability/comprehension 选择的东西?
我有一个案例,ViewModel 和 Model 极其相关,但我必须从一个转换到另一个。当我查看很多库时,很明显人们不会强制转换或编写转换方法,而是使用静态的 From 和 To 方法,例如在 solazrizr 中。我简直分裂了,不知道能写成ViewModel vm = new Model();
(隐式cast),ViewModel vm = (ViewModel)(new Model());
(显式cast),还是ViewMode vm = ViewModel.FromModel(new Model());
(static from to method)
为什么首选 From/To 方法有什么具体原因吗?
我选择方法的原因列表:
- 方法匹配规则比 implicit/explicit 转换更容易理解。即使对于基本数字类型,此类规则有时也不直观 - 如
1/2 < 1/10f
,两个基本不相关的类型的转换会导致更多混乱。
- 不可能 "auto-discover" 转换 - 虽然智能会很容易地建议方法(包括扩展),但转换并非如此
- 阅读带有隐式转换的代码更难,因为通常 reader 不知道允许进行哪些转换。
对于 public API,搜索优化的其他原因适用 - 搜索方法名称比搜索 "implicit conversion from ZZZ to YYY".
这样的东西要容易得多
我已经阅读了 here 如何实现类型转换,我知道如何实现 ToType
和 FromType
方法。我需要知道为什么许多开发人员在可以轻松构建指定的转换时选择构建 FromType
和 ToType
方法?
是否有性能优势,或者它只是开发人员为 readability/comprehension 选择的东西?
我有一个案例,ViewModel 和 Model 极其相关,但我必须从一个转换到另一个。当我查看很多库时,很明显人们不会强制转换或编写转换方法,而是使用静态的 From 和 To 方法,例如在 solazrizr 中。我简直分裂了,不知道能写成ViewModel vm = new Model();
(隐式cast),ViewModel vm = (ViewModel)(new Model());
(显式cast),还是ViewMode vm = ViewModel.FromModel(new Model());
(static from to method)
为什么首选 From/To 方法有什么具体原因吗?
我选择方法的原因列表:
- 方法匹配规则比 implicit/explicit 转换更容易理解。即使对于基本数字类型,此类规则有时也不直观 - 如
1/2 < 1/10f
,两个基本不相关的类型的转换会导致更多混乱。 - 不可能 "auto-discover" 转换 - 虽然智能会很容易地建议方法(包括扩展),但转换并非如此
- 阅读带有隐式转换的代码更难,因为通常 reader 不知道允许进行哪些转换。
对于 public API,搜索优化的其他原因适用 - 搜索方法名称比搜索 "implicit conversion from ZZZ to YYY".
这样的东西要容易得多