Хотелось сделать такую штуку:
class A
{
private string _value;
public A(string value)
{
_value = value;
}
public override string ToString()
{
return _value;
}
static public implicit operator A (string value)
{
return new A(value);
}
static public implicit operator A(int value)
{
return new A(value.ToString());
}
}
class B
{
private A _a;
public B(A a)
{
_a = a;
}
public override string ToString()
{
return _a.ToString();
}
static public implicit operator B(A a)
{
return new B(a);
}
}
и потом писать:
B b;
b = "123"; // Тут чтобы строка неявно преобразовалась в A, а уже A неявно в B
b = 15; // Аналогично. И так со всеми неявными преобразованиями, которые прописаны для A
Можно продублировать для всех типов преобразования из A в B и тупо прописать что-то типа:
static public implicit operator B(string a)
{
return new B(a);
}
static public implicit operator B(int a)
{
return new B(a);
}
но это как-то не увлекательно
Здравствуйте, karbofos42, Вы писали:
K>Хотелось сделать такую штуку: ...
Так не работает в C#.
Вот тут объяснение
http://stackoverflow.com/questions/27965455/implicit-conversions-not-considered-in-overload-resolution