| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Можно ли переменной импа int задать значение null? |
| Автор: STRELOKBMSTU 2.9.2007, 23:11 |
| Можно ли переменной импа int задать значение null? Если можно, то как это сделать? |
| Автор: HalkaR 2.9.2007, 23:34 | ||
Нет. Но специально для решения данной проблемы в .Net есть тип Nullable. Т.е. в вашем случае это выглядит так
|
| Автор: SpaceSpace 3.9.2007, 09:32 |
| теоретически, просто происходит упаковка значимого типа, но не в object, а в класс Nullable, т.е. int? перестает быть значимым, становится ссылочным и храниться соответсвеннон не в стеке , а в куче |
| Автор: HalkaR 3.9.2007, 09:39 | ||||
Вот исходник типа Nullable:
Это -структура, т.е. value тип, так что никакой упаковки не происходит. |
| Автор: SpaceSpace 3.9.2007, 09:42 | ||
| HalkaR очень убедительный аргумент, НО
не напоминают ли тебе эти оверрайды object ? если сможешь меня переубедить - дам по репе кста, структуры - не всегда в стэке храняться, у них ограничение на максимальный размер и вообще, чтобы дженерики были value -- это нонсенс или у меня настолько сильные пробелы в теории? |
| Автор: QryStaL 3.9.2007, 10:15 |
| Ну, все правильно. Структуры неявно наследуются от System.ValueType, а тот в свою очередь от System.Object. Поэтому наследуют все методы object. Не вижу никаких оснований так считать. |
| Автор: SpaceSpace 3.9.2007, 10:29 |
| ну.. в общем я подумал.... почитал.. скорее всего мои догадки были неверны Корень моего незнания - в том что меня переклинило и я попутал object c System.Object поэтому прошу прошения за дезинформацию, Nullable - value, лежит в куче |
| Автор: HalkaR 3.9.2007, 10:36 | ||
object и System.Object суть одно и тоже - синонимы это. А то, что неявняе наследники reference типа могут быть value типами - ничего удивительного. |
| Автор: QryStaL 3.9.2007, 10:38 |
Это одно и то же |
| Автор: HalkaR 3.9.2007, 10:38 |
| Всегда, если они неупакованны. Никакого нонсенса Похоже что да. |
| Автор: SpaceSpace 3.9.2007, 10:49 | ||
вот это и есть мой пробел спасибо за инфу |