相关疑难解决方法(0)

为什么结构中的引用类型的行为类似于值类型?

我是C#编程的初学者.我现在正在研究strings,structs,value typesreference types.作为公认的答案,在这里和在这里,strings是具有存储在堆栈指针,而存储在堆的实际内容的引用类型.此外,如此处所述,structs是值类型.现在,我尝试练习structsstrings用一个小例子:

struct Person
{
    public string name;
}

class Program
{
    static void Main(string[] args)
    {
        Person person_1 = new Person();
        person_1.name = "Person 1";

        Person person_2 = person_1;
        person_2.name = "Person 2";

        Console.WriteLine(person_1.name);
        Console.WriteLine(person_2.name);
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码片段输出

Person 1
Person 2
Run Code Online (Sandbox Code Playgroud)

这让我感到困惑.如果strings是引用类型并且structs是值类型,那么person_1.name和person_2.name应该指向堆上的相同空间区域,不应该是它们吗?

c# string value-type reference-type

6
推荐指数
3
解决办法
1762
查看次数

如何在堆中分配值类型数组?

我读了一些类似问题的答案,但我的问题没有什么不同,因为我不理解在书中写的关于这个问题的陈述.

因为struct是值类型,所以每个实例都不需要在堆上实例化对象; 这在创建类型的许多实例时会产生有用的节省.例如,创建值类型的数组只需要一个堆分配.

我的意思是数组如何只需要一个堆分配?...或单个堆分配是什么意思

c# arrays heap struct value-type

0
推荐指数
1
解决办法
130
查看次数

标签 统计

c# ×2

value-type ×2

arrays ×1

heap ×1

reference-type ×1

string ×1

struct ×1