一位同事和我在讨论 .NET 中的转换时指出,有四种方法可以转换类型,起初我只能想出两种,隐式和显式,然后他指出用户定义的转换和使用辅助类,所以我决定在这里查看http://msdn.microsoft.com/en-us/library/ms173105.aspx读到我突然意识到我做了很多 WPF 并且经常使用 IValueConverter 接口。
我的问题开始于 - IValueConverter 不只是使用辅助类进行转换的一个示例(当然,当你实现它时)?然后我很好,用户定义的转换和使用辅助类的转换之间的真正区别是什么?如果您按照上面提到的 MSDN 页面中的链接进行操作,那么文档会很精简。就像这是转换运算符页面中的示例。
class SampleClass
{
public static explicit operator SampleClass(int i)
{
SampleClass temp = new SampleClass();
// code to convert from int to SampleClass...
return temp;
}
}
它并没有说得那么清楚。对我来说,它看起来像一个静态类,需要在 ctor 中添加一个 int?
无论如何 - 希望一些 C# ninja 可以阐明这个主题。最后一个想法是,我通常会尽量避免转换内容,除非在常规日常代码中有真正的充分理由(即解析电子表格),我倾向于将其视为代码异味,这被认为是最佳实践吗?
谢谢