Unity3D近期学习的总结——C#语言(4)

本文主要探讨Unity3D中C#的数据类型,包括值类型与引用类型的区别,内存分配,局部变量,特别是类和对象的概念,构造函数,以及静态成员和结构的特性。详细解析了数据类型中的枚举,以及在类结构中的this关键字和属性的使用。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、数据类型

1.数据类型

(1).类型分类

通用类型系统CTS(Common Type System)是.NET框架中的一个组成部分,为所有面向.NET框架的语言定义了数据类型的规则。
值类型:存储数据本身。
引用类型:存储数据的引用(内存地址)。

(2).类型归属

在这里插入图片描述
在vs界面中,输入一个int
在这里插入图片描述

接着按下f12将会跳转到以下界面
在这里插入图片描述
其中public为公开的,即都可以调用
struct为结构体
int32即int能够存储32位
同理
在这里插入图片描述
在按下f12后
在这里插入图片描述
Single为单精度浮点。

以此类推
在这里插入图片描述
Boolean为bool数值类型,即bool的全称
在这里插入图片描述
但是在使用string和arr时发生了变化
在这里插入图片描述
class指的是类。
array也是同理,出现为class 类。

2.内存分配

(1).内存

在这里插入图片描述

(2).分配

在这里插入图片描述
注: 公共语言运行库 (common language runtime,CLR) 是托管代码执行核心中的引擎。

3.局部变量

·定义在方法内部的变量。
·特点:
–没有默认值,必须自行设定初始值,否则不能使用。
–方法被调用时,存在栈中,方法调用结束时从栈中清除。

(1).值类型与引用类型

在这里插入图片描述
由此可得在这里插入图片描述
在这里插入图片描述
内存分配的图像
在这里插入图片描述
在这里插入图片描述
其中arr[0]=2修改的是堆中的数据
而arr=new int[]{2}修改的是栈中存储的引用(可以理解为指针)
在这里插入图片描述
string和object也是同理
在这里插入图片描述
注意:这里开辟了两个栈,一个是主函数一个是函数的,改变另一个栈中的数据对本栈没有影响
影响方式:以现有的方式可以通过return返回值接受返回值的方式影响其他栈。

(2).分配图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(1).比较

在这里插入图片描述

(2).赋值

在这里插入图片描述
在这里插入图片描述

(3).传参

在这里插入图片描述
在这里插入图片描述

(3).垃圾回收器

在这里插入图片描述
另外;
字符串常量具备字符串池特性
字符串常量在创建前,首先在字符串池中查找是否存在相
同文本。如果存在,则直接返回该对象引用;如果不存在,则
开辟空间存储。
目的:提高内存利用率。
字符串具有不可变性
字符串常量旦进入内存 ,就不得再次改变。 因为如果在
原位置改变会使其他对象内存被破坏,导致内存泄漏。当遇到
字符串变量引用新值时,会在内存中新建一个字符串 ,将该字
符串地址交由该变量引用。

在这里插入图片描述
因此才有了另外一种改进方式。
可变字符串。
在这里插入图片描述

6.拆装箱

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
如图中所示
在这里插入图片描述
string str02 = “”+num;
这个行为实质上是string str02= string.Concat("".num);//int==.object
调用了Concat这个方法,需要进行转换
这个部分使得其中int类型被装箱变为object;浪费了空间
改进:
在这里插入图片描述
直接使用ToString这个方法直接进行同类对接,可以避免转化,可以避免装箱这个操作,避免浪费性能。
注:拆装箱实质上因为现阶段硬件性能的进步对于程序影响不大,可以使用

枚举

枚举类型是为一组在逻辑上密不可分的整数值提供便于记忆的符号。它是把一组相同类型、表达固定含义的数据作为一个集合放到一起,形成新的数据类型。枚举类型也是一种值类型,它具有命名常量的独特的类型。

1.简单枚举

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.标志枚举

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用方法示例
在这里插入图片描述
在这里插入图片描述

二、类和对象

在这里插入图片描述

1.类的介绍

1.类和对象

在这里插入图片描述

2.创建类

在这里插入图片描述

3.创建对象

在这里插入图片描述

成员变量

在这里插入图片描述

值类型与引用类型

在这里插入图片描述

2.构造函数

1.定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.特点

在这里插入图片描述

4.this关键词

在结构的构造函数中出现的this 作为-一个变量类型,它表示对正在构造的结构的引用。在结构的方法中出现的this作为一个变量类型,它表示对调用该方法的结构的引用。

5.属性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.类结构

在这里插入图片描述
其结构为
[附加声明] [访问修饰符] class 类名称[: [基类] [, 接口序列]]
{
[字段声明]:存储数据
[属性]:保护数据
[构造函数]:提供创建对象的方式,初始化类的数据成员
[方法]:向类的外部提供某种功能
[事件]
}
注意
类中的方法(method)、属性(property)、事件(event),尽量声明为private,需要外部调用时,尽量用public。
如果一个类过于复杂,则考虑将其拆分为几个类来实现。

7.static

继承
在这里插入图片描述
在这里插入图片描述

1.静态成员变量

在这里插入图片描述

2.静态成员函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.静态方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.静态类

在这里插入图片描述

总结

在这里插入图片描述

结构

什么是结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

定义结构体

在这里插入图片描述

C#中,结构与类的区别

在这里插入图片描述
1.在结构体中可以声明字段,但是声明字段的时候是不能给初始值的.
2.隐式的无参数的构造函数在结构中无论如何都是存在的,所以程序员不能手动的为结构添加1个无参数的构造函数.
3.C#语法规定在结构体的构造函数中,必须要为结构体的所有字段赋值.
4.在结构体的构造函数中我们为属性赋值,不认为是在对字段赋值,所以我们在构造函数中要直接为字段赋值.
5.结构体不能从另外1个结构或者类继承,但是可以实现接口.特殊的是.结构不能从别的类或者结构继承。
6.它们之间最大的区别 是结构体是值类型 类是引用类型.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值