Sobes.tech
Junior — Middle

Se poate declara o clasă în interiorul unei funcții sau al unui alt bloc și să fie plasată în memoria stivei?

sobes.tech AI

Răspuns de la AI

În C# se pot declara clase locale în interiorul metodelor (începând cu C# 7), dar acestea nu sunt plasate în memoria stivei, deoarece clasele sunt tipuri de referință și sunt întotdeauna plasate în heap-ul gestionat.

Pentru tipurile de valoare care pot fi plasate pe stivă, se folosesc structurile (struct). Cu toate acestea, nu se poate declara un struct în interiorul unei metode — acestea trebuie declarate la nivel de clasă sau spațiu de nume.

Exemplu de clasă locală în interiorul unei metode:

void MyMethod() {
    class LocalClass {
        public int Value;
    }
    var obj = new LocalClass { Value = 10 };
}

Dar obiectul obj va fi plasat în heap, nu pe stivă.