静态From和To方法vs隐式和显式Casting方法

时间:2015-02-04 01:48:24

标签: c# mvvm casting type-conversion static-methods

我已阅读here如何实现类型转换,并且我知道如何实现ToTypeFromType方法。我需要知道为什么许多开发人员选择构建FromTypeToType方法时,他们可以轻松地按指定方式构建转换? 是否有性能优势,或者它只是开发人员为可读性/理解而选择的东西?

我有一个案例,其中ViewModel和Model非常相关,但我必须从一个转换为另一个。当我查看很多库时,很明显人们不会转换或编写转换方法,而是选择静态From和To方法,例如solazrizr。我只是分裂,不知道我是否可以写ViewModel vm = new Model();(隐式演员),ViewModel vm = (ViewModel)(new Model());(显式演员)或ViewMode vm = ViewModel.FromModel(new Model());(静态来自方法)。

是否有任何具体原因可以选择From / To方法?

1 个答案:

答案 0 :(得分:1)

我选择方法的原因列表:

  • 方法匹配规则明显更容易理解隐式/显式转换。即使对于基本的数字类型,这些规则有时也不直观 - 比如1/2 < 1/10f,两种基本上不相关的类型的转换会引起更多的混淆。
  • 无法“自动发现”转化 - 虽然intellisence会建议方法(包括扩展)很容易就不是转化的情况
  • 使用隐式转换阅读代码更难,因为读者通常没有允许转换的上下文。

对于公共API,搜索优化的其他原因适用 - 搜索方法名称要比“从ZZZ到YYY的隐式转换”更容易。