RCI*_*CIX 4 c# casting implicit-cast
假设您有自己的类如下:
public sealed class StringToInt {
private string _myString;
private StringToInt(string value)
{
_myString = value;
} public static implicit operator int(StringToInt obj)
{
return Convert.ToInt32(obj._myString);
}
public static implicit operator string(StringToInt obj)
{
return obj._myString;
}
public static implicit operator StringToInt(string obj)
{
return new StringToInt(obj);
}
public static implicit operator StringToInt(int obj)
{
return new StringToInt(obj.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
那么您是否可以编写如下代码:
MyClass.SomeMethodThatOnlyTakesAnInt(aString);
Run Code Online (Sandbox Code Playgroud)
没有它声明没有从字符串到int的隐式转换?
[是的,我可以亲自测试一下,但我想我会把它放在那里,看看所有大师们都要说的话]
shf*_*301 10
没有C#不会调用多个用户定义的隐式转换.从C#规范第6.4.3节:
评估用户定义的转换从不涉及多个用户定义或提升的转换运算符.换句话说,从类型S到类型T的转换将永远不会首先执行从S到X的用户定义转换,然后执行从X到T的用户定义转换.