Nullable в стеке или куче?
От: x_max  
Дата: 15.10.10 15:01
Оценка:
Собстно зародилась дискуссия где хранятся типы nullable (например int? И прочие) в стеке или таки куче?

Судя
[SerializableAttribute]
public struct Nullable<T> 
where T : struct, new()


хранится должно в стеке – так как структура.
Но почитав тут http://msdn.microsoft.com/ru-ru/library/b3h38hb0.aspx немного замешкался так как непонял в чему boxing & unboxing (это вроде как при рабочее с ссылочными типами)

Отсюда вопрос где все-таки хранятся значения?
Re: Nullable в стеке или куче?
От: nikov США http://www.linkedin.com/in/nikov
Дата: 15.10.10 15:10
Оценка: +1
Здравствуйте, x_max, Вы писали:

_>Отсюда вопрос где все-таки хранятся значения?


Nullable хранятся так же, как и все value-типы. Тонкости возникают только при их упаковке (они подменяются на их underlying тип или на null).
Re: Nullable в стеке или куче?
От: Lloyd Россия  
Дата: 15.10.10 15:17
Оценка: 1 (1)
Здравствуйте, x_max, Вы писали:

_>хранится должно в стеке – так как структура.

_>Но почитав тут http://msdn.microsoft.com/ru-ru/library/b3h38hb0.aspx немного замешкался так как непонял в чему boxing & unboxing (это вроде как при рабочее с ссылочными типами)

Вот что они имеют в виду:
int? count = 10;
Console.WriteLine(((object)count).GetType() ==  typeof(int?));
Console.WriteLine(((object)count).GetType() == typeof(int));

выведет

False
True
Press any key to continue . . .



_>Отсюда вопрос где все-таки хранятся значения?


Как и все структуры
Re[2]: Nullable в стеке или куче?
От: x_max  
Дата: 15.10.10 15:18
Оценка:
Здравствуйте, nikov, Вы писали:

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


_>>Отсюда вопрос где все-таки хранятся значения?


N>Nullable хранятся так же, как и все value-типы. Тонкости возникают только при их упаковке (они подменяются на их underlying тип или на null).


тоесть просто выходит что тут ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/fxref_mscorlib/html/38e4ebff-9cfd-0ebf-1ad3-d8b8355e42c9.htm просто скопипастили упоминание про Boxing and Unboxing отсюдова ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/fxref_mscorlib/html/785a50c9-9f5f-c5d8-a4fb-3e9fb8b3ac5c.htm а вы типа думайте?
Re[2]: Nullable в стеке или куче?
От: IT Россия linq2db.com
Дата: 15.10.10 15:21
Оценка:
Здравствуйте, nikov, Вы писали:

_>>Отсюда вопрос где все-таки хранятся значения?

N>Nullable хранятся так же, как и все value-типы. Тонкости возникают только при их упаковке (они подменяются на их underlying тип или на null).

Согласись, следующий код работает, хотя и выглядит забавно и может крышу сорвать у непосвящённого

int? i = null;

if (i == null)
{
    var b = i.HasValue;
}
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Nullable в стеке или куче?
От: nikov США http://www.linkedin.com/in/nikov
Дата: 15.10.10 15:22
Оценка:
Здравствуйте, x_max, Вы писали:

_> а вы типа думайте?


Ну, думать, в общем-то, никогда не мешает
Re[3]: Nullable в стеке или куче?
От: x_max  
Дата: 15.10.10 15:29
Оценка:
Здравствуйте, IT, Вы писали:

IT>Согласись, следующий код работает, хотя и выглядит забавно и может крышу сорвать у непосвящённого


IT>
IT>int? i = null;

IT>if (i == null)
IT>{
IT>    var b = i.HasValue;
IT>}
IT>


та да причем если не почитать про тонкости nullable<t> то будеш божится что.
вобщем понял низзя доверять выходит msdn или не воспринимать все буквально, хотя как бы...
Re[4]: Nullable в стеке или куче?
От: Lloyd Россия  
Дата: 15.10.10 16:52
Оценка: +1 :)
Здравствуйте, x_max, Вы писали:

_>та да причем если не почитать про тонкости nullable<t> то будеш божится что.

_>вобщем понял низзя доверять выходит msdn или не воспринимать все буквально, хотя как бы...

На самом деле, если уже знаешь, как Nullable работает, то текст про боксинг приобретает правильный смысл.
Re[5]: Nullable в стеке или куче?
От: x_max  
Дата: 15.10.10 17:00
Оценка:
Здравствуйте, Lloyd, Вы писали:
L>На самом деле, если уже знаешь, как Nullable работает, то текст про боксинг приобретает правильный смысл.

та да тупонул, пятницо
Re[6]: Nullable в стеке или куче?
От: Lloyd Россия  
Дата: 15.10.10 17:01
Оценка:
Здравствуйте, x_max, Вы писали:

L>>На самом деле, если уже знаешь, как Nullable работает, то текст про боксинг приобретает правильный смысл.


_>та да тупонул, пятницо


До причем тут пятница?! Текст отстойно перевед. На английском все сразу понятно становится, а тут...
Re: Nullable в стеке или куче?
От: Sinix  
Дата: 16.10.10 04:55
Оценка:
Здравствуйте, x_max, Вы писали:

_>Отсюда вопрос где все-таки хранятся значения?

В дополнение к ответам можно почитать:
The Stack Is An Implementation Detail, Part One
The Stack Is An Implementation Detail, Part Two
The Truth About Value Types
Debunking another myth about value types

Увы, на русском блоге (респект Sinclair'у и остальным переводчикам!) переводов не нашлось.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.