ЗнаЧимые типы хранят значение, а ссылочные - ссылку на значение. Не знаковые))
class SSylka
{
public byte Value { get; set; }
}
struct Znachenie {
public byte Value { get; set; }
}
class Program
{
static void Main(string[] args)
{
SSylka _ssylka = new SSylka { Value = 0 };
Znachenie _znachenie = new Znachenie { Value = 0 };
}
}
В коде и _ssylka , и _znachenie создаются как локальные переменные метода Main на стеке. Переменная _znachenie содержит значение Value, а переменная _ssylka содержит ссылку на значение Value, хранящееся на куче.
Для ссылочных типов - это куча, для значимых - это стек. При этом, ссылочная переменная (сама ссылка) храниться на стеке. Значимыми могут быть только экземпляры структур
(int, double и т.д.) - это структуры
Мы "создаем переменную с типом MyStruct"?
Вы* создаёте экземпляр (не путать с ссылкой) переменной в стеке типа MyStruct
Могу я в стек засунуть к примеру файл?
Cтек (stack) — это контейнер, работающий по принципу "последний вошел, первый вышел" (last in, first out — LIFO).
Этот класс создает динамическую коллекцию, которая расширяется по мере потребности хранить в ней вводимые элементы. Всякий раз, когда требуется расширить такую коллекцию, ее емкость увеличивается вдвое.
Т.е. можно, но вот зачем? Оптимизированнее будет - если будет в куче, чтобы GC (сборщик мусора) удалил его тогда, когда не нужен будет.... а если файл будет изменяться? (увеличиваться/уменьшаться?).... и так каждый раз при увеличении он будет занимать не всё "пространство" выделенное для него...