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

По вопросам, связанным с разработкой версии 8.0 языка C #. В этой версии добавлены ссылочные типы, допускающие значение NULL, методы интерфейса по умолчанию, асинхронные перечисления и другие функции и улучшения.

1
Почему новый индекс оператора шляпы из функции нарезки массива 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 Мне интересно, почему индексирование для доступа …
156 c#  arrays  indexing  c#-8.0 


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

2
Создать пустой IAsyncEnumerable
У меня есть интерфейс, который написан так: public interface IItemRetriever { public IAsyncEnumerable<string> GetItemsAsync(); } Я хочу написать пустую реализацию, которая не возвращает элемент, например, так: public class EmptyItemRetriever : IItemRetriever { public IAsyncEnumerable<string> GetItemsAsync() { // What do I put here if nothing is to be done? } } …

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

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

3
Наилучшая практика использования 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 …

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

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

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

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

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.