值类型主要包含简单类型、结构类型和枚举类型。引用类型包括类、托管、数组和接口。值类型的变量其内含为变量的值本身;C#语言中的另一大数据类型是引用类型,引用类型也称为参考类型。和值类型相比,引用类型的变量不直接存储所包含的值,而是指向它所要存储的值。换句话说,值类型在其内存空间中存储的是实际数据,而引用类型在其内存空间中存储的是一个指针,该指针指向存储数据的另一块内存位置。
介绍两个经常用到的类:
(1)object类
object类是所有其它类型的基类,C#语言中的所有类型都直接或间接地从object类中继承。因此,对一个object的变量可以赋予任何类型的值:
float f = 63.8 ;
object obj1 ;
obj1 = f ;
(2)string类
C#还定义了一个基本的类string,表示一个Unicode字符序列,专门用于对字符串的操作。
2.可以从下面四个层面来理解变量:变量的名字、变量的值、变量的数据类型、变量的作用域。
静态变量作用域:带有“static”修饰符声明的成员变量为静态成员变量。当静态成员变量所属类被装载后,静态成员变量生命周期开始,直到包含该所属类的程序运行结束后,静态成员变量生命周期结束。在C#中不存在类似其他语言的全局变量,使用公共静态成员变量可以实现类似的效果。
实例变量作用域:不带 “static”修饰符声明的变量为实例成员变量。当一个类的实例被创建,其实例成员变量生命周期开始,直到该实例不在被使用且所占用内存空间被释放,其实例成员变量生命周期结束。实例成员变量和该类的具体实例具有相同的生命周期。
方法参数作用域:方法参数变量的生命周期只在该方法的语句块内存在,方法被调用时,它的生命周期开始,方法执行完毕,它的生命周期结束。
局部变量作用域:局部变量在其被定义的位置,生命周期开始,直到该局部变量被定义的语句块执行结束后,该局部变量的生命周期结束。
异常处理参数作用域:异常处理参数变量的生命周期只在错误处理语句块内(即catch语句块内)存在。变量的访问修饰符限制了变量的可见性,可以用public | protected | private | internal | protected internal 等来限制,如果不使用修饰符,默认情况下为private。
3.一维数组是最基本的数组类型,其声明方法如下:
数据类型 [ ] 数组名 ;
举例:
int [ ] anArray ; // 声明一个整型的一维数组
具有两个维度的数组是二维数组,其声明方法如下:
数据类型 [ , ] 数组名 ;
举例:
int [ , ] anArray ; // 声明一个整型的二维数组
float [ , ]anArrayOfFloats; // 声明一个浮点型的二维数组
string [ , ] anArrayOfStrings; // 声明一个字符串型的二维数组
声明数组变量时,还没有创建数组,还没有为数组中元素分配任何内存空间,因此,声明数组后,需要对数组实例化:
anArray = new int [2,4] ;
anArrayOfStrings = new stirng [2,4] ;
我们也可以用给定的值对数组元素进行初始化。
int [, ] anArray = new int [2, 4] {{1,2,3,4},{5,6,7,8}};
string [, ] anArrayOfStrings = new string [2, 2] {{"某甲","某乙"}, {"冠军" ,"亚军" }};
也可使用下列快捷方式:
int [, ] anArray = {{0,1,2,3},{1,2,3,4}};
string [, ] anArrayOfStrings = {{"某甲","某乙"}, {"冠军" ,"亚军" }};
在C#语言中,数组为我们提供了一些有用的特性,利用这些特性,我们可以完成一些更高级的功能。
数组名.Length :返回一个整数,该整数表示该数组的所有维数中元素的总数。
数组名.Rank :返回一个整数,该整数表示该数组的维数。
数组名.GetLength(int dimension) :返回一个整数,该整数表示该数组的指定维(由参数dimension指定,维度从零开始)中的元素个数。
4.foreach语句针对数组或集合中的每一个元素,循环运行嵌入语句。foreach语句的语法格式为:
foreach (数据类型 标识符 in 表达式)
嵌入语句
5.为了简洁代码,C#语言中使用using语句来导入名称空间。
using 语句一般情况下被放在所有语句的前面。每个源文件中可以使用多个using语句,每行一个语句。比如:
using System ;
程序基础还是最重要的,这样,在以后的开发中,用处很大。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器