Tại sao tôi không thể xác định cả hai toán tử ngầm và rõ ràng như vậy?Tại sao tôi không thể xác định cả hai toán tử ngầm và rõ ràng?
public class C
{
public static implicit operator string(C c)
{
return "implicit";
}
public static explicit operator string(C c)
{
return "explicit";
}
}
Bạn có thể làm hack này mặc dù :)
class Program
{
public class A
{
}
public class B
{
public static implicit operator A(B b)
{
Console.WriteLine("implicit");
return new A();
}
}
public class C : B
{
public static explicit operator A(C c)
{
Console.WriteLine("explicit");
return new A();
}
}
static void Main(string[] args)
{
C c = new C();
A a = c;
A b = (A) c;
}
}
in này:
implicit
explicit
Ai nói bạn không thể? Tức là, điều gì sẽ xảy ra khi bạn thử? –
Tại sao bạn muốn triển khai khác nhau giữa hai? –
Ghi đè ToString thậm chí không CLOSE đến một toán tử cast ngầm. Mã ví dụ của bạn chỉ hoạt động vì Console.WriteLine có quá tải đối tượng và gọi ToString() trên đối tượng. – Samuel