Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: C# 8 preview: Nullable reference types  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 4801
ЕвгенийВ
На то пошло, там нет циклов и переменных и вообще никаких рудиментов вроде классов, соответственно solid и всякие IoC в топку.

На то пошло, F# - это абсолютно совсем другая парадигма. Сравнивать его с C#.. ну, это примерно как C# сравнивать с SQL.
30 май 19, 16:25    [21897833]     Ответить | Цитировать Сообщить модератору
 Re: C# 8 preview: Nullable reference types  [new]
hVostt
Member

Откуда:
Сообщений: 15381
Сон Веры Павловны
Какая-то неуклюжая попытка что-то сделать так, как надо было делать ровно наоборот: non-nullable reference types с синтаксисом типа
void Foo(string! s) {...}


Это сильно противоречит имеющемся синтаксису nullable типов. Изначально мне тоже казалось, что non-nullable лучший вариант, и может уживаться с текущим кодом. Но нет. Библиотеки должны быть обратно совместимы.

А string! это совершенно новый тип, его протаскивать надо везде. В аргументах, в свойствах и локальных переменных. Поэтому не катит.
30 май 19, 21:52    [21898039]     Ответить | Цитировать Сообщить модератору
 Re: C# 8 preview: Nullable reference types  [new]
hVostt
Member

Откуда:
Сообщений: 15381
Siemargl
Безотносительно C#8, вместо string отлично передается null, как объектный тип )

Попытка подстелить соломку ?


Статическая проверка типов. Всё по феншую. Изначально ссылочные типы шли вразрез с этой идеей.
30 май 19, 21:54    [21898042]     Ответить | Цитировать Сообщить модератору
 Re: C# 8 preview: Nullable reference types  [new]
hVostt
Member

Откуда:
Сообщений: 15381
ЕвгенийВ
Ни каких вопросов :)
DateTime dateTime = default;
            var b = dateTime == null;


Это костыль )
30 май 19, 21:55    [21898044]     Ответить | Цитировать Сообщить модератору
 Re: C# 8 preview: Nullable reference types  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4673
hVostt
А string! это совершенно новый тип, его протаскивать надо везде. В аргументах, в свойствах и локальных переменных. Поэтому не катит.

string? тоже надо, я выше давал ссылку, где чувак описывает случаи.
30 май 19, 22:02    [21898053]     Ответить | Цитировать Сообщить модератору
 Re: C# 8 preview: Nullable reference types  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4673
hVostt
ЕвгенийВ
Ни каких вопросов :)
DateTime dateTime = default;
            var b = dateTime == null;


Это костыль )

Не костыль. Сам недавно чудом узнал, что если у структуры переопределен == то на сравнение с null компилятор не ругается )
30 май 19, 22:04    [21898056]     Ответить | Цитировать Сообщить модератору
 Re: C# 8 preview: Nullable reference types  [new]
fkthat
Member

Откуда:
Сообщений: 1139
ЕвгенийВ
Не костыль. Сам недавно чудом узнал, что если у структуры переопределен == то на сравнение с null компилятор не ругается )


Там дело не в переопределении, по-моему. Просто структура отбоксится в object а потом сравнится с null.
30 май 19, 22:23    [21898068]     Ответить | Цитировать Сообщить модератору
 Re: C# 8 preview: Nullable reference types  [new]
fkthat
Member

Откуда:
Сообщений: 1139
fkthat
ЕвгенийВ
Не костыль. Сам недавно чудом узнал, что если у структуры переопределен == то на сравнение с null компилятор не ругается )


Там дело не в переопределении, по-моему. Просто структура отбоксится в object а потом сравнится с null.


Нет, я был не прав, там все еще хитрее. Ругаться компилятор не ругается, но все равно поступает умно и сравнение просто сразу же заменяет на false.
30 май 19, 22:33    [21898073]     Ответить | Цитировать Сообщить модератору
 Re: C# 8 preview: Nullable reference types  [new]
hVostt
Member

Откуда:
Сообщений: 15381
ЕвгенийВ
string? тоже надо, я выше давал ссылку, где чувак описывает случаи.


ну ок, смотрим:

public SomeType! SomeMethod(int a, string b, ClassType! t1, StructType t2)
{
}


Если бы МС пошли на такое, это был бы знатный фейл. Хорошо, что не облажались )
31 май 19, 00:09    [21898118]     Ответить | Цитировать Сообщить модератору
 Re: C# 8 preview: Nullable reference types  [new]
hVostt
Member

Откуда:
Сообщений: 15381
ЕвгенийВ
Не костыль. Сам недавно чудом узнал, что если у структуры переопределен == то на сравнение с null компилятор не ругается )


Собственно в этом и есть костыль, реализованный через переопределение )
31 май 19, 00:10    [21898119]     Ответить | Цитировать Сообщить модератору
 Re: C# 8 preview: Nullable reference types  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 4801
hVostt
А string! это совершенно новый тип

Ну да, аналогично было, когда вводились nullable value types.
hVostt
его протаскивать надо везде. В аргументах, в свойствах и локальных переменных. Поэтому не катит.

Зачем? Когда вводились nullable value types, никто везде массово не менял int на int?, и не протаскивал Nullable<T> везде. Новая фича - для новых проектов, и рефакторинга старых по мере необходимости и наличия свободного времени. Старая остается на своем месте, и с ней работают по-старому.
31 май 19, 06:10    [21898147]     Ответить | Цитировать Сообщить модератору
 Re: C# 8 preview: Nullable reference types  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 4801
fkthat
ЕвгенийВ
Не костыль. Сам недавно чудом узнал, что если у структуры переопределен == то на сравнение с null компилятор не ругается )


Там дело не в переопределении, по-моему. Просто структура отбоксится в object а потом сравнится с null.

Ответ Липперта.
31 май 19, 07:30    [21898159]     Ответить | Цитировать Сообщить модератору
 Re: C# 8 preview: Nullable reference types  [new]
hVostt
Member

Откуда:
Сообщений: 15381
Сон Веры Павловны
hVostt
А string! это совершенно новый тип

Ну да, аналогично было, когда вводились nullable value types.


Так это и были новые типы и соответствующая поддержка языка. Вводить обратное -- явное противоречие, с которым сложно будет работать.

Сон Веры Павловны
Зачем? Когда вводились nullable value types, никто везде массово не менял int на int?, и не протаскивал Nullable<T> везде.


Не скажи. Менял object на Nullable<T>. И протаскивал :)

Сон Веры Павловны
Старая остается на своем месте, и с ней работают по-старому.


Обратная совместимость должна быть не только синтаксическая, но и семантическая.

int => int?
string => string?

логично? да.

int => int?
!string => string

херень какая-то. особенно для классов и структур.
31 май 19, 21:28    [21899217]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / WinForms, .Net Framework Ответить