C# 结构类型struct

结构类型,值类型,派生自System.ValueType,分配在栈上而不是垃圾回收堆上。使用关键字struct来创建结构

创建结构变量:可以直接使用,也可以用new关键字创建(会调用结构默认的构造函数--每一个字段被自动设置为默认值)

在结构类型里有一个引用类型的属性,默认情况下,当值类型保护其他引用类型时,赋值将生成一个引用的副本,有两个独立的结构,每一个都包含指向内存中同一个对象的引用(也就是“浅”复制)。当想要执行一个“深”复制时,即将内部引用的状态完全赋值到一个新对象中,则需要实现ICloneable接口。】

 

值类型和引用类型的区别:

值类型分配在栈,引用类型分配在托管堆上

值类型必须派生自System.ValueType,引用类型可以派生自除System.ValueType以外的所有类型

值类型不能作为其他类型的基类,引用类型可以。

默认的参数传递行为:值类型默认是按值传递(一个变量的副本传入被调用的函数),引用类型中的值类型对象按值复制,对于引用类型,引用按值复制;

值类型当它们越过定义的作用域时消亡,引用类型是在托管堆被垃圾回收时消亡

 

你可能感兴趣的:(C#)