Определенное пользователем неявное приведение к универсальному не используется.C#

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

Сообщение Anonymous »

У меня есть класс, который инкапсулирует универсальный класс T, и в нем есть неявный оператор для преобразования инкапсулирующего класса в T.
Однако это преобразование используется только в том случае, если я привожу явно в вызывающем коде.
Я не нашел никаких применимых правил.
Это .Net 8.0, C# 12.
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");

var r = new Result(new Contact() { FullName = "Otto" });
Console.WriteLine(r.Value.FullName); // This works, no surprise
Console.WriteLine(r.FullName); // Squiggly under FullName. CS1061: 'Result' does not contain a definition for 'FullName' and no accessible extension method...
Console.WriteLine(((Contact)r).FullName); // Explicit cast works
}
}

public class Contact
{
public string FullName { get; set; } = "";
}

public class Result
{
public T Value { get; }
public int Index { get; }

public Result(T value)
{
Value = value;
Index = 0;
}

public Result(T value, int index)
{
Value = value;
Index = index;
}

public static implicit operator T(Result result)
{
return result.Value;
}
}



Подробнее здесь: https://stackoverflow.com/questions/790 ... s-not-used
Ответить

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

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

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

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

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