C# 语法之类和结构体的区别(个人总结)

今天面试的时候,遇到的面试官问了我这个问题。当时懵了一下,因为最近家里面的事情太多脑子有点乱,没有说出来。。

下面进入正题吧:

首先第一个区别就是:语法上的区别  类:Class关键字  结构体:struct关键字

C# 语法之类和结构体的区别(个人总结)_第1张图片

第二其实从上面的途中可以看出语法方面的定义是大同小异,基本没啥区别。(类里面的成员结构体都可以定义)Tip:析构函数除外

C# 语法之类和结构体的区别(个人总结)_第2张图片

第三相信大家从第二张图里面就能看出类于结构体的第二个区别:类里面声明变量可以给初始值,而结构体里面声明的变量不可以给初始值。

我们学习过C#的时候就知道在我们创建一个类的时候,没有给这个类声明构造函数。那么编译器在编译代码的时候就会给类里面自动生成一个无参的构造函数。当然无论我们创建了有参还是无参的构造函数,编译器就不会给我们创建的类里面生成构造函数了。

C# 语法之类和结构体的区别(个人总结)_第3张图片

C# 语法之类和结构体的区别(个人总结)_第4张图片

C# 语法之类和结构体的区别(个人总结)_第5张图片

但是我们可以从上图中看出结构体的构造函数中必须给该结构体里面的所有字段赋值,包括构造函数的参数也必须全部赋值。但是类就不一样了。可以不用给字段赋值。。

第四 结构体是值类型,而类是引用类型。结构体是值类型,当其作为1个局部变量的时候,变量是存储在堆栈的空间内的,其对象的字段直接存储在这个变量中的。

第五 说说关于结构体和类的一些实际应用,我们上边都已经说了,结构体是值类型存储在堆栈。我们都知道堆栈的空间小,但是存取速度快。所以我们再写一个轻量级的对象的时候只需要少量的字段,一般都是用结构体来写。而类是引用类型存储在托管堆。托管堆的空间大,随意我们在描写一个重量级的对象的时候一般我们使用的是类。

以上有什么不对的地方请留言指出。

或者联系qq:1147622730


你可能感兴趣的:(C#,语法学习笔记)