powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Nullable reference types
4 сообщений из 29, страница 2 из 2
Nullable reference types
    #40012355
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас проверил - тем не менее это каким-то образом работает... Компилятор понимает что это record даже просто по готовой сборке без исходников, хотя там при этом уже все public и никаких аттрибутов особых нет.
...
Рейтинг: 0 / 0
Nullable reference types
    #40012405
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Тут только вот одна тема, которая для меня не очень ясна и надо будет сделать research. Я при декомпиляции не вижу у этого класса никаких маркеров (например аттрибутов), что это record и мне непонятно, если я использую этот класс в готовой сборке из другого проекта, то как C# узнает, что в его свойства писать нельзя. Он же будет видеть их как public.


Вряд ли это обычный атрибут, надо короч поставить и поиграться )
...
Рейтинг: 0 / 0
Nullable reference types
    #40012435
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Я при декомпиляции не вижу у этого класса никаких маркеров (например аттрибутов), что это record и мне непонятно, если я использую этот класс в готовой сборке из другого проекта, то как C# узнает, что в его свойства писать нельзя. Он же будет видеть их как public.

Лучше декомпилировать в IL, там больше информации.
...
Рейтинг: 0 / 0
Nullable reference types
    #40012441
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, Сон Веры Павловны,

Я раскопал в чем дело. Сам класс ничем не отличается от обычного, но setter-ы свойств метятся такой штукой как сustom modifiers и в IL выглядит это так:
Код: c#
1.
.set instance void modreq([System.Runtime]System.Runtime.CompilerServices.IsExternalInit) ContactRecord::set_Name(string)


Вся суть тут именно в этом "IsExternalInit"

Init-only свойства реализуются абсолютно так же, и я насчет них заблуждался, т.к. они точно так же полностью public. В целом record почти ничем не отличается от класса с только init-only свойствами. У него просто есть еще встроенная операция сравнения и возможен короткий синтаксис типа:
Код: c#
1.
public record Contact(string Name, string Phone);
...
Рейтинг: 0 / 0
4 сообщений из 29, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Nullable reference types
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]