C#基础深入学习一

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
简介: C#基础深入学习

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 结构

类和结构有以下几个基本的不同点:

  • 类是引用类型,结构是值类型。
  • 结构不支持继承。
  • 结构不能声明默认的构造函数。
  • 结构体的构造函数中,必须为结构体所有字段赋值,类的构造函数无此限制。
  • 结构体中声明的字段无法赋予初值,类可以。
目录
相关文章
|
7月前
|
C#
C#学习相关系列之数据类型类的三大特性(二)
C#学习相关系列之数据类型类的三大特性(二)
|
7月前
|
C#
C#学习相关系列之yield和return的区别
C#学习相关系列之yield和return的区别
107 1
|
7月前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
7月前
|
C#
C#学习相关系列之数组---常用方法使用(二)
C#学习相关系列之数组---常用方法使用(二)
|
7月前
|
存储 C#
C#学习系列相关之数组(一)---数组的定义与使用
C#学习系列相关之数组(一)---数组的定义与使用
|
25天前
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
|
2月前
|
开发框架 缓存 算法
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
|
7月前
|
C#
C#的基本语法结构学习
【5月更文挑战第17天】C#基础语法包括变量(如`int x = 10`)、常量(`const int MAX_VALUE = 100`)、运算符(如算术和比较运算符)、控制语句(if、for、while等)和函数声明(`int Add(int x, int y) { return x + y; }`)。这些构成C#程序的基本元素。
79 0
|
3月前
|
Linux C# 开发者
Uno Platform 驱动的跨平台应用开发:从零开始的全方位资源指南与定制化学习路径规划,助您轻松上手并精通 C# 与 XAML 编程技巧,打造高效多端一致用户体验的移动与桌面应用程序
【9月更文挑战第8天】Uno Platform 的社区资源与学习路径推荐旨在为初学者和开发者提供全面指南,涵盖官方文档、GitHub 仓库及社区支持,助您掌握使用 C# 和 XAML 创建跨平台原生 UI 的技能。从官网入门教程到进阶技巧,再到活跃社区如 Discord,本指南带领您逐步深入了解 Uno Platform,并提供实用示例代码,帮助您在 Windows、iOS、Android、macOS、Linux 和 WebAssembly 等平台上高效开发。建议先熟悉 C# 和 XAML 基础,然后实践官方教程,研究 GitHub 示例项目,并积极参与社区讨论,不断提升技能。
104 2
|
4月前
|
开发框架 .NET API
C#/.NET/.NET Core推荐学习书籍(24年8月更新)
C#/.NET/.NET Core推荐学习书籍(24年8月更新)