[TOC]
# 内置引用类型
## 对象(Object)类型
对象(Object)类型 是 C# 通用类型系统(Common Type System - CTS)中所有数据类型的终极基类。Object 是 System.Object 类的别名。所以对象(Object)类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。但是,在分配值之前,需要先进行类型转换。
当一个值类型转换为对象类型时,则被称为 装箱;另一方面,当一个对象类型转换为值类型时,则被称为 拆箱。
```
object obj;
obj = 100; // 这是装箱
```
## 动态(Dynamic)类型
您可以存储任何类型的值在动态数据类型变量中。这些变量的类型检查是在运行时发生的。
**声明动态类型的语法:**
>[info]dynamic = value;
例如:
```
dynamic d = 20;
```
>[danger]动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的。
## 字符串(String)类型
字符串(String)类型是 System.String 类的别名。它是从对象(Object)类型派生的。
字符串(String)类型的值可以通过两种形式进行分配:引号和 @引号。
```
String str = "w3cschool.cc";
//或者
@"w3cschool.cc";
```
C# string 字符串的前面可以加 @(称作"逐字字符串")将转义字符(\\)当作普通字符对待,比如:
```
string str = @"C:\\Windows";
//等价于:
string str = "C:\\\\Windows";
```
@ 字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内。
```
string str = @"<script type=""text/javascript"">
var a=1;
";
```
定义相等运算符`==`和`!=`是为了比较`string`对象(而不是引用)的值
```
string a = "hello";
string b = "h";
// Append to contents of 'b'
b += "ello";
Console.WriteLine(a == b);//a和b都是string类型所以返回true
Console.WriteLine(object.ReferenceEquals(a, b));//false
```
# **声明自定义引用类型**
用户自定义引用类型有:class、interface 或 delegate,record。
* [class](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/class)
* [interface](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/interface)
* [delegate](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/reference-types#the-delegate-type)
* [record](https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/record)
- Visual Studio 2022安装到非C盘
- .net平台区别
- 常用单词
- 关键字
- 操作符(运算符)
- 标识符(命名规范)
- 开始
- 变量
- 常量
- 数据类型
- 值类型
- 变量数据类型
- 枚举类型enum(常量集合)
- 结构类型struct(结构体)
- 元组类型
- 可null类型(T?)
- 引用类型
- 数组(array)
- 集合(List)
- 内置引用类型
- object
- string
- Dynamic(动态类型)
- delegate委托(代理)类型
- 自定义引用类型
- 接口(interface)
- 类class
- record(定义一个引用类型)
- 指针类型(仅用于非安全代码)
- get和set访问器
- delegate委托
- delegate实现发布订阅与事件
- 类型转换
- 合并操作符??
- 类相关
- Partial 部分类
- 类定义以及访问修饰符(封装)
- abstract抽象类与sealed密封类
- virtual虚方法
- 接口interface
- C# 预处理器指令
- C#技术栈
- 判断(流程控制)与三元运算
- if
- switch
- 三元运算
- 循环
- while 循环
- for循环
- foreach循环
- do...while 循环
- 文件操作
- 其他
- 多开