Size: a a a

2020 January 06

AH

Ayrat Hudaygulov in pro.net
или как там
источник

Dv

Dr. Friedrich von Never in pro.net
semptra
static T Cast1<T>(object obj)
{
           return obj as T;
}

static T Cast2<T>(object obj)
{
           return (T)obj;
}

static T Cast3<T>(object obj)
{
           return obj is T tObj ? tObj : default;
}


Почему Cast1 не компилится и требует дополнительно констрейн на where T : class?
Потому что если T — non-nullable, то что туда положить в качестве результата?
источник

Dv

Dr. Friedrich von Never in pro.net
semptra
static T Cast4<T>(object obj)
{
           return obj is T ? obj as T : default;
}


И вот это тоже не работает, хотя суть та же, что и в Cast3
А тут ты снова зачем-то используешь оператор, который в качестве одного из результатов может произвести null.
источник

Dv

Dr. Friedrich von Never in pro.net
Не нужно так делать
источник

Dv

Dr. Friedrich von Never in pro.net
Только вчера поймали и побили по рукам чувака, который где попало пользоваться as вместо direct cast, а они опять!
источник

IC

Ilya Chernoudov in pro.net
semptra
static T Cast4<T>(object obj)
{
           return obj is T ? obj as T : default;
}


И вот это тоже не работает, хотя суть та же, что и в Cast3
Потому что as можно делать только на классах
источник

IC

Ilya Chernoudov in pro.net
Dr. Friedrich von Never
Только вчера поймали и побили по рукам чувака, который где попало пользоваться as вместо direct cast, а они опять!
А как же unsafe.as?
источник

IC

Ilya Chernoudov in pro.net
Тоже под запретом?😁
источник

G

Gopneg in pro.net
Ilya Chernoudov
надо пиздить за такое
зато красиво, не выебуйся
источник

IC

Ilya Chernoudov in pro.net
Gopneg
зато красиво, не выебуйся
Да не, в новом компиляторе уже норм
источник

G

Gopneg in pro.net
Ilya Chernoudov
Да не, в новом компиляторе уже норм
ну вот видишь, тем более, чо было выебуцо? в мс все-таки умные люди работают
источник

G

Gopneg in pro.net
местами
источник

vl

vova lantsov in pro.net
Gopneg
is null буду писать в линке
Я юзал is, но только для проверки на not null вместе с кастом,

obj is IInterface interf
источник

vl

vova lantsov in pro.net
А для

int is 8

Ну такое
источник

vl

vova lantsov in pro.net
Типо лень == написать
источник

G

Gopneg in pro.net
это недостаточно функционально
источник

vl

vova lantsov in pro.net
Интересно в чём
источник

RS

Rustam Sayfutdinov in pro.net
semptra
static T Cast1<T>(object obj)
{
           return obj as T;
}

static T Cast2<T>(object obj)
{
           return (T)obj;
}

static T Cast3<T>(object obj)
{
           return obj is T tObj ? tObj : default;
}


Почему Cast1 не компилится и требует дополнительно констрейн на where T : class?
primary constraint
источник

G

Gopneg in pro.net
vova lantsov
Интересно в чём
слишком похоже на процедурный стиль
источник

NT

Nikita Tsukanov in pro.net
@fvnever @EgorBo а у нас же на структуры в статических полях можно смело брать указатели?
источник