我有一个字符串类的自定义实现。我在字符串和类之间添加了自定义转换运算符,并且投射正常工作。但是,如果我第一次将自定义对象转换为System.Object,然后将其转换为字符串:“无法将类型'MyString'转换为键入'System.String'”。这是为什么?我怎样才能使它...C#与转换运算符铸造
class MyString
{
public string S {get; set;}
public MyString(string s)
{
this.S = s;
}
public static implicit operator string(MyString s)
{
return s.S;
}
public static implicit operator MyString(string s)
{
return new MyString(s);
}
}
class Program
{
static void Main(string[] args)
{
MyString ms = new MyString("a");
string s = ms;
object o = ms;
string s1 = (string)o; // <-- this throws the exception!
}
}
这是一个明确的演员。如果定义了隐式转换,则没有明确的运算符 – 2012-02-05 17:28:00
显式转换工作。 – nogola 2012-02-05 17:31:07