Вопросы с тегом «c#-8.0»

156
Почему новый индекс оператора шляпы из функции нарезки массива C # 8 не начинается с 0?

C # 8.0 представляет удобный способ нарезки массивов - см. Официальный пост C # 8.0 . Синтаксис для доступа к последнему элементу массива int value[] = { 10, 11, 12, 13 }; int a = value[^1]; // 13 int b = value[^2]; // 12 Мне интересно, почему индексирование для доступа к элементам в обратном...

36
Что это значит?

Иногда я вижу следующий код и понятия не имею, что на самом деле проверяет выражение. public static void Something(string[] value) { if (value is { }) { DoSomethingElse(); } }

25
Создать пустой IAsyncEnumerable

У меня есть интерфейс, который написан так: public interface IItemRetriever { public IAsyncEnumerable<string> GetItemsAsync(); } Я хочу написать пустую реализацию, которая не возвращает элемент, например, так: public class EmptyItemRetriever : IItemRetriever { public...

23
Почему я могу объявить дочернюю переменную с тем же именем, что и переменная в родительской области?

Недавно я написал некоторый код, в котором непреднамеренно использовал имя переменной в качестве параметра действия, объявленного внутри функции, в которой уже есть переменная с тем же именем. Например: var x = 1; Action<int> myAction = (x) => { Console.WriteLine(x); }; Когда я обнаружил...

21
В чем разница между использованием и ожиданием использования? И как я могу решить, какой использовать?

Я заметил, что в некоторых случаях Visual Studio рекомендует сделать это await using var disposable = new Disposable(); // Do something вместо этого using var disposable = new Disposable(); // Do something В чем разница между usingи await using? Как я должен решить, какой...

20
Наилучшая практика использования Nullable Reference Types для DTO

У меня есть DTO, который заполняется чтением из таблицы DynamoDB. Скажем, сейчас это выглядит так: public class Item { public string Id { get; set; } // PK so technically cannot be null public string Name { get; set; } // validation to prevent nulls but this doesn't stop database hacks public...

18
Преобразовать IAsyncEnumerable в Список

Итак, в C # 8 мы получили дополнение IAsyncEnumerableинтерфейса. Если у нас есть нормальный, IEnumerableмы можем сделать из него Listили почти любую другую коллекцию, которую мы хотим. Благодаря Linq там. var range = Enumerable.Range(0, 100); var list = range.ToList(); Ну, теперь я хочу...

12
Что такое Неизвестный Nullability в C # 8?

В C # 8.0 мы можем иметь обнуляемые ссылочные типы. Документы утверждают, что существует 4 типа обнуляемости. Первые 3 довольно понятны, но я не понимаю смысла «неизвестного». В документах говорится, что он используется с обобщениями, но когда я пытаюсь вызвать метод для неограниченной переменной...

11
Асинхронная десериализация списка с использованием System.Text.Json

Допустим, я запрашиваю большой файл JSON, который содержит список многих объектов. Я не хочу, чтобы они все время оставались в памяти, но я бы предпочел прочитать и обработать их один за другим. Поэтому мне нужно превратить асинхронный System.IO.Streamпоток в IAsyncEnumerable<T>. Как мне...

10
Обнуляемая информация о ссылочном типе, не предоставленная FirstOrDefault

Я хотел протестировать новую возможность ссылочных типов обнуляемого в C # 8.0. Я запустил новый проект, ориентированный на .NET Core 3.0, включил в .csprojфайл допустимые ссылочные типы и начал кодировать. Я создал простой список, который принимает string[]и возвращает stringв этом массиве,...

10
Существует ли определенное соглашение об именах для методов, возвращающих IAsyncEnumerable?

После C # 5 введены asyncиawait модель для асинхронного программирования, сообщество C # пришло к соглашению об именах, чтобы добавить суффикс "Async" к методам, возвращающим ожидаемый тип, например так: interface Foo { Task BarAsync(); } С тех пор было написано, что многие статические анализаторы...

10
Может ли ненулевой ссылочный тип в C # 8 быть нулевым во время выполнения?

Мне кажется, на самом деле нет никакой гарантии, что ненулевая переменная никогда не будет иметь значение null. Представьте, что у меня есть класс с одним свойством, которое не может быть обнуляемым: public class Foo { public Foo(string test) { Test = test; } public string Test {get;set;} } Теперь...

9
Обнуляемый ссылочный тип в C # 8 при использовании классов DTO с ORM

Я активировал эту функцию в проекте с классами объекта передачи данных (DTO), как показано ниже: public class Connection { public string ServiceUrl { get; set; } public string? UserName { get; set; } public string? Password { get; set; } //... others } Но я получаю ошибку: CS8618: Необнуляемое...

9
Почему мы получаем предупреждение о нулевой ссылке с возможным разыменованием, когда нулевая ссылка кажется невозможной?

Прочитав этот вопрос на HNQ, я продолжил читать о Nullable Reference Types в C # 8 и провел несколько экспериментов. Я очень хорошо знаю, что 9 раз из 10, или даже чаще, когда кто-то говорит: «Я нашел ошибку компилятора!» это на самом деле дизайн, и их собственное недоразумение. И так как я начал...

9
Как я могу вызвать метод по умолчанию вместо конкретной реализации

Почему поведение методов интерфейса по умолчанию изменилось в C # 8? В прошлом следующий код (когда по умолчанию методы интерфейса был демо не выпущен): interface IDefaultInterfaceMethod { // By default, this method will be virtual, and the virtual keyword can be here used! virtual void...