差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
| csharp:变量 [2025/11/21 10:09] – 张叶安 | csharp:变量 [2025/12/22 11:23] (当前版本) – 张叶安 | ||
|---|---|---|---|
| 行 6: | 行 6: | ||
| * **类级变量(字段)**:一个类里面定义的变量,默认情况下不能在该类之外直接使用。 | * **类级变量(字段)**:一个类里面定义的变量,默认情况下不能在该类之外直接使用。 | ||
| - | | + | |
| - | * **公开访问**:若需外部访问,需使用 `public` 修饰。 | + | * **公开访问**:若需外部访问,需使用 `public` 修饰。 |
| - | * **静态访问**:若使用 `static` 修饰,则该变量属于类本身,而非类的实例,可通过 `类名.变量名` 访问。 | + | * **静态访问**:若使用 `static` 修饰,则该变量属于类本身,而非类的实例,可通过 `类名.变量名` 访问。 |
| ===== 变量类型 ===== | ===== 变量类型 ===== | ||
| 行 19: | 行 19: | ||
| * **引用类型 (Reference Types)**:数据存储在**堆 (Heap)** 上,栈中只存储指向堆内存的地址(引用)。包含:类 (class)、接口 (interface)、数组、字符串 (string)、委托 (delegate)。 | * **引用类型 (Reference Types)**:数据存储在**堆 (Heap)** 上,栈中只存储指向堆内存的地址(引用)。包含:类 (class)、接口 (interface)、数组、字符串 (string)、委托 (delegate)。 | ||
| * **指针类型 (Pointer Types)**:用于直接操作内存地址,需在 `unsafe` 模式下使用。 | * **指针类型 (Pointer Types)**:用于直接操作内存地址,需在 `unsafe` 模式下使用。 | ||
| + | |||
| + | 引用类型不进行转换,直接引用地址,程序效率会快一点。 | ||
| ===== 值类型详解 ===== | ===== 值类型详解 ===== | ||
| 行 211: | 行 213: | ||
| </ | </ | ||
| - | ===== 结构体 (Struct) ===== | ||
| - | |||
| - | ==== 简介 ==== | ||
| - | |||
| - | 结构体是一种**值类型**的数据结构。它可以看作是一个轻量级的类,通常用于封装小型相关变量组。 | ||
| - | |||
| - | {{.: | ||
| - | |||
| - | <code csharp> | ||
| - | struct Axis // 轴结构体 | ||
| - | { | ||
| - | public string Axis_num { get; set; } // 轴号 | ||
| - | public string Jog_Z { get; set; } // 轴号Jog_+ | ||
| - | public string Jog_F { get; set; } // 轴号Jog_- | ||
| - | public double Vosti { get; set; } // 轴速度 | ||
| - | public double Add_Vosti { get; set; } // 轴加速度 | ||
| - | public double Add_Vosti_time { get; set; } // 轴加速度时间 | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== 结构体与枚举的区别 ===== | ||
| - | ^ 特性 ^ 枚举 (Enum) ^ 结构体 (Struct) ^ | ||
| - | | **本质** | 一组命名的**整型常量**集合 | 一种自定义的**数据类型集合** | | ||
| - | | **作用** | 用于描述状态、选项、类别(描述性的词) | 用于封装一组相关的数据(如坐标、轴参数) | | ||
| - | | **类型** | 值类型 | 值类型 | | ||
| - | | **成员** | 只能包含常量名称(底层是整数) | 可以包含字段、属性、方法、构造函数 | | ||