当前位置: 首页 > news >正文

C#基础语法

## 一、基本数据类型
  1. **值类型**
     * **整数类型** :包括 `byte`、`short`、`int`、`long`
     * **浮点数类型** :`float`(单精度,约 7 位有效数字)和 `double`(双精度,约 15 - 16 位有效数字)。表示小数时默认为 `double` 类型,若要指定为 `float`,需在数值后加 `f` 或 `F`。
     * **字符类型** :`char`,用于表示单个 Unicode 字符,用单引号括起来。例如:`char c = 'A';`
     * **布尔类型** :`bool`,只有两个值 `true` 和 `false`。

  2. **引用类型**
     * **字符串** :`string`,表示字符序列,用双引号括起来。字符串具有不可变性,即一旦创建,其内容不能改变。
     * **数组** :用于存储多个相同类型的数据。例如:`int[] numbers = new int[5];` 表示创建一个长度为 5 的整型数组。
     * **类** :用于定义对象的蓝图,通过 `new` 关键字创建对象实例。

## 二、变量与常量

  1. **变量声明与初始化**
     * 显式类型声明:`类型 变量名 = 初始值;` 例如:`int x = 10;`
     * 隐式类型声明(`var`):`var 变量名 = 初始值;` 编译器会根据初始值推断变量类型。但 `var` 不能用于返回值类型不明确的表达式,如 `var result = new object();` 会导致错误。
     * 多变量声明:`类型 变量 1, 变量 2, ..., 变量 n;` 例如:`int a, b, c;`

  2. **常量**
     * 使用 `const` 关键字声明常量,必须在声明时初始化,且其值不能改变。例如:`const double PI = 3.14159;`

## 三、运算符与表达式

  1. **算术运算符** :`+`、`-`、`*`、`/`、`%`(取模)。
  2. **关系运算符** :`==`(等于)、`!=`(不等于)、`>`(大于)、`<`(小于)、`>=`(大于等于)、`<=`(小于等于)。关系运算结果为布尔值。
  3. **逻辑运算符**
     * `&&`(逻辑与):只有两个操作数都为 `true` 时结果才为 `true`。
     * `||`(逻辑或):只要有一个操作数为 `true` 结果就为 `true`。
     * `!`(逻辑非):对布尔值取反。

## 四、流程控制

  1. **条件语句**
     * `if` 语句:`if (条件) { 语句块 }`,当条件为 `true` 时执行语句块。
     * `if-else` 语句:`if (条件) { 语句块 1 } else { 语句块 2 }`,条件为 `true` 执行语句块 1,否则执行语句块 2。
     * `switch` 语句:用于多分支选择。例如:
       * `switch (表达式) { case 值 1: 语句块 1; break; case 值 2: 语句块 2; break; ... default: 语句块 n; break; }`
       * 每个 `case` 后跟一个值,当表达式与某个值相等时执行对应的语句块。`default` 是可选的,用于处理所有不匹配的情况。在 C# 7.0 及以上版本中,`switch` 的 `case` 分支可以使用模式匹配,例如:`case int i:` 表示当表达式结果是整数时匹配。

  2. **循环语句**
     * `for` 循环:`for (初始化; 条件; 迭代) { 语句块 }`。先执行初始化语句,然后在每次循环前检查条件,若条件为 `true` 执行语句块,最后执行迭代语句。
     * `while` 循环:`while (条件) { 语句块 }`,条件为 `true` 时重复执行语句块。
     * `do-while` 循环:`do { 语句块 } while (条件);`,先执行语句块,然后再检查条件,至少执行一次语句块。
     * `foreach` 循环:用于遍历数组或集合中的元素。例如:`foreach (类型 变量名 in 集合) { 语句块 }`,`变量名` 依次取集合中的每个元素。

## 五、数组和集合

  1. **数组**
     * 一维数组:声明格式为 `类型[] 数组名 = new 类型[长度];` 例如:`int[] numbers = new int[5];` 可以通过索引(从 0 开始)访问数组元素,如 `numbers[0]`。
     * 二维数组:声明格式为 `类型[,] 数组名 = new 类型[行数, 列数];` 例如:`int[,] matrix = new int[3, 4];` 访问元素如 `matrix[0, 0]`。
     * 尽量避免使用 `var` 声明数组,例如 `var arr = new[] {1, 2, 3};` 会导致数组类型推断为 `int[]`,但不如直接用 `int[] arr = new int[]{1, 2, 3};` 清晰明确。

  2. **集合** :例如 `List<T>`,是一种更灵活的数组实现,可以动态调整大小。需要引用 `System.Collections.Generic` 命名空间。例如:`List<int> list = new List<int>(); list.Add(1); list.Add(2);` 等。


## 六、类型转换

  1. **隐式类型转换** :安全的转换,不会导致数据丢失。例如:`int x = 10; long y = x;` 将 `int` 类型转换为 `long` 类型。
  2. **显式类型转换** :可能会导致数据丢失或异常,需在转换前检查是否安全。例如:`double price = 99.9; int roundedPrice = (int)price;` 将 `double` 类型转换为 `int` 类型,小数部分被舍弃。
  3. **使用 `Convert` 类进行转换** :例如:`string numberStr = "123"; int parsedNumber = Convert.ToInt32(numberStr);` 可以进行各种类型之间的转换,但要确保转换有效,否则会抛出异常。
  4. **类型检查与转换** :使用 `is` 运算符检查对象是否为某个类型,如 `if (obj is int) { ... }`。使用 `as` 运算符进行安全的类型转换,如 `int? number = obj as int?;`,若转换失败返回 `null`。
 

相关文章:

  • 大语言模型评测体系全解析(上篇):基础框架与综合评测平台
  • Linux或者Windows下PHP版本查看方法总结
  • day45 python预训练模型
  • Git 常用命令 - 服务器用
  • PostgreSQL的扩展 passwordcheck
  • 【开源工具】超全Emoji工具箱开发实战:Python+PyQt5打造跨平台表情管理神器
  • SOC-ESP32S3部分:27-设备OTA
  • Ethernet/IP转DeviceNet网关:驱动大型矿山自动化升级的核心纽带
  • 【C++高级主题】多重继承下的类作用域
  • LeetCode第245题_最短单词距离III
  • 超临界二氧化碳再热再压缩布雷顿循环建模与先进控制
  • 704. 二分查找 (力扣)
  • 力扣HOT100之多维动态规划:1143. 最长公共子序列
  • 批量大数据并发处理中的内存安全与高效调度设计(以Qt为例)
  • 总览四级考试
  • Mac电脑_钥匙串操作选项变灰的情况下如何删除?
  • KEYSIGHT是德科技 E5063A 18G ENA系列网络分析仪
  • 电工基础【5】简单的电路设计接线实操
  • Python趣学篇:Pygame重现经典打砖块游戏
  • 微软Build 2025:Copilot Studio升级,解锁多智能体协作未来
  • 网站图片如何做水印/精品成品网站源码
  • 翻译网站怎么做/保定seo排名外包
  • microsoft做网站的/站长工具ip地址查询
  • java 网站做甘特图js/怎么让自己上百度
  • 有个网站做彩盒的/企业seo培训
  • 微信授权登录第三方网站开发/seo网站seo