当前位置:网站首页>C#基础深入学习一
C#基础深入学习一
2022-07-04 12:42:00 【华为云】
C#基础深入学习01
值类型, 引用类型
值类型的数据存储在内存的栈中,引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。
值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。
值类型变量直接把变量的值保存在堆栈中,引用类型的变量把实际数据的地址保存在堆栈中,而实际数据则保存在堆中。
值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用。
数组
Array 类的属性
下表列出了 Array 类中一些最常用的属性:
| 序号 | 属性 & 描述 |
|---|---|
| 1 | IsFixedSize 获取一个值,该值指示数组是否带有固定大小。 |
| 2 | IsReadOnly 获取一个值,该值指示数组是否只读。 |
| 3 | Length 获取一个 32 位整数,该值表示所有维度的数组中的元素总数。 |
| 4 | LongLength 获取一个 64 位整数,该值表示所有维度的数组中的元素总数。 |
| 5 | Rank 获取数组的秩(维度)。 |
如需了解 Array 类的完整的属性列表,请参阅微软的 C# 文档。
Array 类的方法
下表列出了 Array 类中一些最常用的方法:
| 序号 | 方法 & 描述 |
|---|---|
| 1 | Clear 根据元素的类型,设置数组中某个范围的元素为零、为 false 或者为 null。 |
| 2 | Copy(Array, Array, Int32) 从数组的第一个元素开始复制某个范围的元素到另一个数组的第一个元素位置。长度由一个 32 位整数指定。 |
| 3 | CopyTo(Array, Int32) 从当前的一维数组中复制所有的元素到一个指定的一维数组的指定索引位置。索引由一个 32 位整数指定。 |
| 4 | GetLength 获取一个 32 位整数,该值表示指定维度的数组中的元素总数。 |
| 5 | GetLongLength 获取一个 64 位整数,该值表示指定维度的数组中的元素总数。 |
| 6 | GetLowerBound 获取数组中指定维度的下界。 |
| 7 | GetType 获取当前实例的类型。从对象(Object)继承。 |
| 8 | GetUpperBound 获取数组中指定维度的上界。 |
| 9 | GetValue(Int32) 获取一维数组中指定位置的值。索引由一个 32 位整数指定。 |
| 10 | IndexOf(Array, Object) 搜索指定的对象,返回整个一维数组中第一次出现的索引。 |
| 11 | Reverse(Array) 逆转整个一维数组中元素的顺序。 |
| 12 | SetValue(Object, Int32) 给一维数组中指定位置的元素设置值。索引由一个 32 位整数指定。 |
| 13 | Sort(Array) 使用数组的每个元素的 IComparable 实现来排序整个一维数组中的元素。 |
| 14 | ToString 返回一个表示当前对象的字符串。从对象(Object)继承。 |
params 关键字
在使用数组作为形参时,C# 提供了 params 关键字,使调用数组为形参的方法时,既可以传递数组实参,也可以传递一组数组元素。params 的使用格式为:
public 返回类型 方法名称( params 类型名称[] 数组名称 )结构体(Struct)
在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。
结构的特点
您已经用了一个简单的名为 Books 的结构。在 C# 中的结构与传统的 C 或 C++ 中的结构不同。C# 中的结构有以下特点:
- 结构可带有方法、字段、索引、属性、运算符方法和事件。
- 结构可定义构造函数,但不能定义析构函数。但是,您不能为结构定义无参构造函数。无参构造函数(默认)是自动定义的,且不能被改变。
- 与类不同,结构不能继承其他的结构或类。
- 结构不能作为其他结构或类的基础结构。
- 结构可实现一个或多个接口。
- 结构成员不能指定为 abstract、virtual 或 protected。
- 当您使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New 操作符即可被实例化。
- 如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。
类 vs 结构
类和结构有以下几个基本的不同点:
- 类是引用类型,结构是值类型。
- 结构不支持继承。
- 结构不能声明默认的构造函数。
- 结构体的构造函数中,必须为结构体所有字段赋值,类的构造函数无此限制。
- 结构体中声明的字段无法赋予初值,类可以。
边栏推荐
- CTF competition problem solution STM32 reverse introduction
- Alibaba cloud award winning experience: build a highly available system with polardb-x
- Building intelligent gray-scale data system from 0 to 1: Taking vivo game center as an example
- PostgreSQL 9.1 飞升之路
- Go zero micro service practical series (IX. ultimate optimization of seckill performance)
- Is the outdoor LED screen waterproof?
- MySQL three-level distribution agent relationship storage
- Configure WebDAV server on Apache
- 6 分钟看完 BGP 协议。
- Use fail2ban to prevent password attempts
猜你喜欢

Interviewer: what is the difference between redis expiration deletion strategy and memory obsolescence strategy?

Concepts and theories related to distributed transactions

After the game starts, you will be prompted to install HMS core. Click Cancel, and you will not be prompted to install HMS core again (initialization failure returns 907135003)

"Pre training weekly" issue 52: shielding visual pre training and goal-oriented dialogue

Building intelligent gray-scale data system from 0 to 1: Taking vivo game center as an example

三星量产3纳米产品引台媒关注:能否短期提高投入产出率是与台积电竞争关键

Comparative study of the gods in the twilight Era
![[Android kotlin] lambda return statement and anonymous function](/img/d8/a367c26b51d9dbaf53bf4fe2a13917.png)
[Android kotlin] lambda return statement and anonymous function

面向个性化需求的在线云数据库混合调优系统 | SIGMOD 2022入选论文解读

CANN算子:利用迭代器高效实现Tensor数据切割分块处理
随机推荐
【FAQ】华为帐号服务报错 907135701的常见原因总结和解决方法
【云原生 | Kubernetes篇】深入了解Ingress(十二)
Besides, rsync+inotify realizes real-time backup of data
Solution: how to delete the information of Jack in two tables with delete in one statement in Oracle
How real-time cloud interaction helps the development of education industry
光环效应——谁说头上有光的就算英雄
Transformer principle and code elaboration (pytorch)
AI 绘画极简教程
Annual comprehensive analysis of China's mobile reading market in 2022
iptables基础及Samba配置举例
实时云交互如何助力教育行业发展
Using nsproxy to forward messages
AI 绘画极简教程
n++也不靠谱
Runc hang causes the kubernetes node notready
《预训练周刊》第52期:屏蔽视觉预训练、目标导向对话
一个数据人对领域模型理解与深入
runc hang 导致 Kubernetes 节点 NotReady
8 expansion sub packages! Recbole launches 2.0!
Rsyslog configuration and use tutorial