Я пытаюсь неявно преобразовать объекты в завернутую версию, но я не понимаю, почему C# не допускает их.Wrapper wrapped = 42; // Implicit conversion from int to Wrapper
Wrapper fooWrapped = new Foo(); // Implicit conversion from Foo to Wrapper
Wrapper listWrapped = new List(); // Implicit conversion from List to Wrapper
Wrapper enumerableWrappedWorks = new List(); // Implicit conversion from List to Wrapper
// The following line does not compile because the implicit conversion from IEnumerable to Wrapper is not valid
Wrapper enumerableWrappedDoesNotWork = new List().AsEnumerable(); // Implicit conversion from IEnumerable to Wrapper
// The following line does not compile because the implicit conversion from IAsyncEnumerable to Wrapper is not valid
Wrapper asyncEnumerableWrappedDoesNotWork = new List().ToAsyncEnumerable(); // Implicit conversion from List to Wrapper
class Wrapper
{
public T Value;
public static implicit operator Wrapper(T value) => new Wrapper { Value = value };
}
class Foo
{
}
< /code>
Первые примеры, кажется, скомпилируются просто отлично. Я смущен следующим двумя примерами. Явное преобразование (например, warpper. от (...)) может быть сделано для работы, я просто надеюсь заставить это работать неявно повсеместно.
Подробнее здесь: https://stackoverflow.com/questions/795 ... ets-cs0266
Неявные операторы с Ienumerable Get CS0266 [Duplicate] ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение