Описание тега c#-12.0

0 ответов

Почему псевдонимы типов в C# нельзя использовать в другом псевдониме?

После C# 12 (.NET 8) все типы могут иметь псевдонимы: using A = int; using B = string; using C = Dictionary<int, string>; Однако это нельзя записать как using A = int; using B = string; using C = Dictionary<A, B>; Это ошибка или просто о…
18 ноя '23 в 20:42
0 ответов

Обновить CredentialCache во время выполнения

Я использую DI для приложения, которое используетCredentialCacheпоскольку это хост Linux, которому необходимо пройти аутентификацию в Windows API. Я устанавливаю учетные данные, как показано ниже, и это отлично работает. Моя проблема заключается в т…
0 ответов

VS22 не знает функций C# 12

Если я использую функции C# 12 в Visual Studio 22, в коде это помечается как ошибка, но в списке ошибок ошибка не отображается (см. снимок экрана). Я использую VS22 17.8.2, установил .NET 8
30 ноя '23 в 07:53
0 ответов

Атрибут резервного свойства в первичном конструкторе класса

Как добавить атрибут в свойство поддержки, созданное компилятором, для параметра в первичном конструкторе класса C# 12? Я пытался: class C([field: JsonIgnore] int X) { int F() => X +1; } Но я получаю предупреждение предупреждение CS0657: «поле» н…
11 сен '23 в 21:32
0 ответов

Некоторая практика C# 11 и 12 не удалась

Я практикую новые функции C# 11 и 12, поэтому написал такой интерфейс и класс: public interface IHello<T> where T: class { static abstract IHello<T> operator +(IHello<T> left, IHello<T> right); public string Value { get; } } …
12 окт '23 в 11:51
0 ответов

Как написать конструктор C# с внутренним параметром исключения

Я пытаюсь создать собственный класс исключений в С# 12.0 (.NET 8.0, версия SDK: 8.0.100-rc.2.23502.2), который поддерживает конструктор с внутренним параметром исключения . Вот код, который я изначально пробовал: public class TokenAcquisitionExcepti…
18 окт '23 в 02:17
1 ответ

Назначение перехватчиков C# 12

В C# 12 появятся перехватчики, которые позволят вам перехватывать вызов метода, но какой в ​​этом смысл? Почему бы мне просто не вызвать другой метод? И зачем мне вообще его использовать — синтаксис кажется неудобным для разработчиков? Спасибо
22 окт '23 в 07:07
1 ответ

Разница между параметрами in и ref только для чтения

В чем разница между параметрами и (С# 12)? Я нашел обаinиref readonlyпараметры делают параметр доступным только для чтения и не могут быть изменены в вызываемом методе. Есть ли у них аналогичная функция?
18 ноя '23 в 22:53
0 ответов

C# Как лучше всего РАЗРЕШИТЬ предупреждение о компиляции "CS8618"

Если мы объявим свойство следующим образом: public class Cat { public string Name { get; set; } } мы получаем предупреждение: CS8618 — переменная, допускающая значение NULL, должна содержать значение, отличное от NULL, при выходе из конструктора. Ра…
21 ноя '23 в 01:34
0 ответов

С# 12, первичные конструкторы

В новой версии C# (v.12) есть первичные конструкторы, поэтому мы можем написать: public interface IService { Distance GetDistance(); } public class ExampleController(IService service) : ControllerBase { private readonly IService _service = service; …
20 ноя '23 в 00:25
0 ответов

Проверка нуля с помощью основного конструктора в C# 12

Я использую C# 12. В C# 12 я могу использовать основной конструктор: public class UserService(IUnitOfWork uow) : IUserService { } До C# 12 я использовал проверку нуля для элементов, которые я добавлял в конструктор: public class UserService : IUserS…
1 ответ

Почему основные конструкторы C# 12 выполняются в противоположном порядке?

Почему основные конструкторы в C# 12 выполняются в противоположном порядке? Это своего рода переломное изменение , если не сказать больше... Пример: namespace Whatever; [TestClass] public class UnitTestTemp { [TestMethod] public void TestMethod1() /…
02 дек '23 в 10:32
1 ответ

Resharper допускает ошибку в функции выражений коллекций в C# 12

Хорошей особенностью C# 12 являются выражения коллекций . Resharper допускает ошибку в этом синтаксисе public List<Model> ListModels { get; set; } = []; // ERROR Я использовал следующую опцию в Visual Studio 2022, чтобы включить C# 12 в проект…
1 ответ

Каков синтаксис использования выражений коллекции C#12 для инициализации List<List>>?

Скажем, у меня есть такой код (или любая неровная структура): var intListList = new List<List<int>> { new() { 1, 2, 3 } }; Я хотел бы использовать здесь выражение коллекции. Resharper (EAP) предлагает следующее: var intListList = new Lis…
17 ноя '23 в 14:01
1 ответ

Новый синтаксис инициализатора массива в C# 12 не компилируется в VS 2022 17.8

В настоящее время использую Visual Studio 2022 17.8 для работы с изменениями .NET 8 и C# 12. Я получаю подсказки по проверке IDE0300 для таких объявлений полей, предлагающие вместо этого преобразовать их в выражение коллекции, например: private read…
19 ноя '23 в 23:56
0 ответов

Что такое выражение коллекции при создании экземпляра List<T>

Я не понимаю, что Intellisense предлагает в качестве замены существующего кода (на фото здесь). В случае, если изображение будет удалено позже, предложение Intellisense, изображенное на рисунке, предлагает заменить List<int> x = new List<in…
15 ноя '23 в 06:20
0 ответов

Как «правильно» (идиоматически) избегать CS9107 при передаче параметров первичного конструктора в базу

В C# 12 мы получаем первичные конструкторы для обычных классов. Рассмотрим следующий код: new Derived("XXX").Test(); public class Base(string name) { protected void Log() => Console.WriteLine("Base: " + name); } public class Derived(string name) …
16 окт '23 в 13:36