Тип возвращаемого значения универсального неявного оператора C#C#

Место общения программистов C#
Ответить
Anonymous
 Тип возвращаемого значения универсального неявного оператора C#

Сообщение Anonymous »

Для автоматического перевода кода с C++ на C# мне нужен класс C# (псевдокод)

Код: Выделить всё

class Null {
public static implicit operator T (Null unused) {
return null;
}
}
Это будет полезно в таких случаях, как

Код: Выделить всё

foo(T1 x) { ... }
foo(T2 x) { ... }

foo(null); // ambiguous
По определенным причинам программное устранение неоднозначности указанного выше типа вообще невозможно. Например

Код: Выделить всё

foo((T1)null); // Discovering T1 over T2 is not possible or really hard to do
Но если бы у меня был указанный выше класс Null, я мог бы добавить его программно

Код: Выделить всё

foo(Null x) {...}
и сгенерируйте

Код: Выделить всё

foo(new Null()); // not ambiguous
Хитрость заключается в том, чтобы использовать new Null() вместо каждого сгенерированного значения NULL, чтобы даже

Код: Выделить всё

T1 x = new Null();
компилируется с x == null.
Можно ли написать такой класс?

Подробнее здесь: https://stackoverflow.com/questions/250 ... eturn-type
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»