Looking for .net Keywords? Try Ask4Keywords

.NET Framework Используемые типы ссылок


пример

Типы ссылок состоят как из ссылки на область памяти, так и из значения, хранящегося в этой области.
Это аналогично указателям на C / C ++.

Все ссылочные типы хранятся на так называемой куче .
Куча - это просто управляемая область памяти, где хранятся объекты. Когда создается новый объект, часть кучи будет выделена для использования этим объектом, и будет возвращена ссылка на это место кучи. Куча управляется и поддерживается сборщиком мусора и не допускает ручного вмешательства.

Помимо пространства памяти, необходимого для самого экземпляра, требуется дополнительное пространство для хранения самой ссылки, а также дополнительная временная информация, требуемая .NET CLR.

В приведенном ниже коде показано, что ссылочный тип присваивается новой переменной. В этом случае мы используем класс, все классы являются ссылочными типами (даже если они статичны).

Когда ссылочный тип присваивается другой переменной, это ссылка на объект, который скопирован, а не само значение. Это важное различие между типами значений и ссылочными типами.

Последствия этого заключаются в том, что теперь у нас есть две ссылки на один и тот же объект.
Любые изменения значений внутри этого объекта будут отражаться обеими переменными.

class PersonAsReferenceType
{
    public string Name;
}

class Program
{
    static void Main()
    {
        PersonAsReferenceType personA;

        personA = new PersonAsReferenceType { Name = "Bob" };

        var personB = personA;

        personA.Name = "Linda";

        Console.WriteLine(               // Outputs 'True' - because
            object.ReferenceEquals(      // personA and personB are referencing 
                personA,                 // the *same* memory location
                personB));

        Console.WriteLine(personA.Name); // Outputs 'Linda'
        Console.WriteLine(personB.Name); // Outputs 'Linda'
    }