我已经看过有关隐式和显式运算符的MSDN教程。 我做了一些测试,效果很好。
我知道它们之间的区别(语法上说),但我不知道使用它们的最佳方式。
我的问题可能是:“什么样的转换必须使用演员?”
现在,当结果为null时,我只是没有隐式隐式..
示例:
struct TypeRef
{
// If TypeRef is constructed with a type, will reference the given type.
// If TypeRef is constructed with a string, will be the result of 'Type.GetType(theString)' (if the type doesn't exist: null)
public readonly Type TypeIfExists;
// If TypeRef is constructed with a type, will be the result of theType.Name
// If TypeRef is constructed with a string, will reference this string.
public readonly string TypeName;
// Can be constructed by a string or a Type.
// Can be converted from a string or a Type implicitely and explicitely
// Can be converted to a string implicitely and explicitely
// Can be converted to a Type explicitely only
}
TypeRef tr1 = "SomeType";
TypeRef tr2 = typeof(SomeType);
TypeRef tr3 = "ThisTypeDoesntExist";
Type t1 = (Type)tr1;
Type t2 = (Type)tr3; // Will be null.
string s1 = (string)tr1;
string s2 = tr1;
谢谢:)
编辑:更清楚地问这个问题:p
答案 0 :(得分:0)
我不认为有技术原因,更多的是" API"原因。
关于显性(强调我的)的MSDN文章:
explicit关键字声明用户定义的类型转换运算符 使用强制转换
调用必须
因此,如果您希望班级用户能够在没有演员的情况下进行转换,请不要明确表示。我猜有关于投射和可读性的争论。