В C#, если есть неоднозначные определяемые пользователем операторы преобразования, можно ли выбрать один из них на сайте вызова?
Рассмотрим этот пример (аналогичный примерам в Неоднозначные неявные пользовательские преобразования в .NET и Неоднозначные пользовательские преобразования , при преобразовании из X в Y. C# .Net)
using System;
static class Program {
class A {
static public explicit operator A(B value) {
Console.WriteLine("A");
return new A();
}
}
class B {
static public explicit operator A(B value) {
Console.WriteLine("B");
return new A();
}
}
public static void Main() {
A a = (A)new B();
}
}
Если один из операторов закомментирована, код скомпилируется. Это теоретический вопрос (практическое решение состоит в том, чтобы не использовать неоднозначные операторы преобразования), но есть ли какой-то специальный синтаксис в месте вызова для вызова одного из них конкретно (путем редактирования (A)new B()
)? Или это невозможно и заставляет переписывать классы?