В чем смысл предупреждения: string не допускающий NULL?
От: vaa  
Дата: 06.12.21 02:55
Оценка:
 public string Name { get; set; }
//Предупреждение (активно)    CS8618    свойство "Name", не допускающий значения NULL, должен содержать значение, 
//отличное от NULL, при выходе из конструктора. Возможно, стоит объявить свойство как допускающий значения NULL.


Нужно ли соглшаться с интеллисайнс и добавлять string? ?

Что это даст(про или контра)?
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re: В чем смысл предупреждения: string не допускающий NULL?
От: Sinclair Россия https://github.com/evilguest/
Дата: 06.12.21 07:09
Оценка: 2 (1)
Здравствуйте, vaa, Вы писали:
vaa>
vaa> public string Name { get; set; }
vaa>//Предупреждение (активно)    CS8618    свойство "Name", не допускающий значения NULL, должен содержать значение, 
vaa>//отличное от NULL, при выходе из конструктора. Возможно, стоит объявить свойство как допускающий значения NULL.    
vaa>


vaa>Нужно ли соглшаться с интеллисайнс и добавлять string? ?

vaa>Что это даст(про или контра)?
Это потребует от кода, который работает с экземплярами вашего класса, явно учитывать возможность обнаружить null в вашем свойстве.
Там, где вы напишете Name.Length, компилятор предупредит вас о возможном вылете NRE.
Если же вы оставите string, то берёте на себя обязанность никогда не возвращать null из геттера. Именно об этом вам и говорит компилятор.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: В чем смысл предупреждения: string не допускающий NULL?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 06.12.21 09:08
Оценка:
Здравствуйте, vaa, Вы писали:

На всякий случай
https://stackoverflow.com/questions/58232955/how-to-deal-with-nullable-reference-types-with-system-text-json
и солнце б утром не вставало, когда бы не было меня
Re[2]: В чем смысл предупреждения: string не допускающий NUL
От: vaa  
Дата: 06.12.21 09:38
Оценка: +1
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, vaa, Вы писали:


S>На всякий случай

S>https://stackoverflow.com/questions/58232955/how-to-deal-with-nullable-reference-types-with-system-text-json

это сложнее чем монады. реально.
единственный смысл если включить ошибки компиляции.
Но что интересно.

warning CS8622: Допустимость значений NULL для ссылочных типов в типе параметра "a" объекта "анонимный метод" не соответствует целевому объекту делегирования "ElapsedEventHandler" (возможно, из-за атрибутов допустимости значений NULL)

для
var elapsed = new System.Timers.ElapsedEventHandler(delegate (object a, System.Timers.ElapsedEventArgs b) { o.OnNext(DateTime.Now); });

что за дискриминация?

PS мой косяк. не заметил, что нужен ? для a.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Отредактировано 06.12.2021 9:40 Разраб . Предыдущая версия .
Re: В чем смысл предупреждения: string не допускающий NULL?
От: Sharov Россия  
Дата: 06.12.21 10:24
Оценка:
Здравствуйте, vaa, Вы писали:

vaa>
vaa> public string Name { get; set; }
vaa>//Предупреждение (активно)    CS8618    свойство "Name", не допускающий значения NULL, должен содержать значение, 
vaa>//отличное от NULL, при выходе из конструктора. Возможно, стоит объявить свойство как допускающий значения NULL.    
vaa>

vaa>Нужно ли соглшаться с интеллисайнс и добавлять string? ?

.net 5-6 что-то поменялось, что string стал не null?
Кодом людям нужно помогать!
Re[2]: В чем смысл предупреждения: string не допускающий NULL?
От: Sinclair Россия https://github.com/evilguest/
Дата: 06.12.21 10:35
Оценка: 8 (1) +1
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, vaa, Вы писали:


vaa>>
vaa>> public string Name { get; set; }
vaa>>//Предупреждение (активно)    CS8618    свойство "Name", не допускающий значения NULL, должен содержать значение, 
vaa>>//отличное от NULL, при выходе из конструктора. Возможно, стоит объявить свойство как допускающий значения NULL.    
vaa>>

vaa>>Нужно ли соглшаться с интеллисайнс и добавлять string? ?

S>.net 5-6 что-то поменялось, что string стал не null?

В новом шарпе по умолчанию референс-типы стали ненуллабл.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: В чем смысл предупреждения: string не допускающий NULL?
От: vaa  
Дата: 06.12.21 11:48
Оценка:
Здравствуйте, Sharov, Вы писали:



S>.net 5-6 что-то поменялось, что string стал не null?

нет, в том то и дело, просто компилятор предупреждения сыпит.
типа надо присваивать через null! или default!
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[3]: В чем смысл предупреждения: string не допускающий NULL?
От: karbofos42 Россия  
Дата: 06.12.21 12:08
Оценка: 10 (1)
Здравствуйте, vaa, Вы писали:

vaa>Здравствуйте, Sharov, Вы писали:




S>>.net 5-6 что-то поменялось, что string стал не null?

vaa>нет, в том то и дело, просто компилятор предупреждения сыпит.
vaa>типа надо присваивать через null! или default!

Открой файл проекта (который *.csproj) в блокноте, найди там <Nullable>enable</Nullable> и замени на disable.
Можно это же сделать через свойства проекта в Студии (поиск в свойствах проекта по "null")
Предупреждения уйдут
Re: В чем смысл предупреждения: string не допускающий NULL?
От: Osaka  
Дата: 06.12.21 12:16
Оценка: +1
vaa> public string Name { get; set; }
vaa>//Предупреждение (активно) CS8618 свойство "Name", не допускающий значения NULL, должен содержать значение,
vaa>Что это даст(про или контра)?
Меньше придётся плясать с бубном при вставках в таблицы с varchar not null.
Re: В чем смысл предупреждения: string не допускающий NULL?
От: alexzzzz  
Дата: 06.12.21 13:38
Оценка: +2
Здравствуйте, vaa, Вы писали:

vaa>
vaa> public string Name { get; set; }
vaa>//Предупреждение (активно)    CS8618    свойство "Name", не допускающий значения NULL, должен содержать значение, 
vaa>//отличное от NULL, при выходе из конструктора. Возможно, стоит объявить свойство как допускающий значения NULL.    
vaa>


vaa>Нужно ли соглшаться с интеллисайнс и добавлять string? ?


Перевожу с кривого машинного на понятный: компилятор предупреждает о том, что после того как объект будет создан, свойство Name будет иметь значение null, потому что ничем не инициализировано ни в объявлении свойства, ни внутри конструктора. Соответственно, либо надо его где-то инициализировать ненулевым значением, либо разрешить иметь нулевые значения.

Какой из вариантов в данном случае логически правильнее, знаешь только ты.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.