C#学习资料
### C#基础知识详解 #### 类型与变量 在C#编程语言中,了解不同类型的数据及其用途对于编写高效、可靠的代码至关重要。C#支持两大类数据类型:**值类型**和**引用类型**。 ##### 值类型 1. **简单类型**:包括`char`、`int`、`float`等基本数据类型。 - **`char`**:用于存储单个Unicode字符。 - **`int`**:32位有符号整数类型,范围为-2,147,483,648到2,147,483,647。 - **`float`**:单精度浮点型,范围约为±1.5×10^−45到±3.4×10^38。 2. **枚举类型**:定义了一组命名的常量集合。例如: ```csharp enum Color { Red, Green, Blue } ``` 3. **结构类型**:用于创建复合数据类型,类似于类,但默认情况下是值类型。例如: ```csharp struct Point { public int X; public int Y; } ``` ##### 引用类型 1. **类(Class)**:用户自定义类型,用于封装属性和方法。 2. **接口**:定义了一组公共的方法、属性、索引器和事件,但不包含任何实现细节。 3. **委托**:一种引用类型,代表方法的引用。 4. **数组**:用于存储固定大小的同类型元素的集合。 #### 变量声明 每个变量必须先声明其类型后才能使用。例如: ```csharp int a; // 声明一个整数变量a int b = 100; // 声明并初始化整数变量b float j = 4.5f; // 浮点型变量j string s1; // 字符串变量s1 ``` 使用`object`类型可以表示C#中的所有类型,这是一个非常通用的类型,适用于多种场景。 #### 预定义类型 C#提供了许多预定义类型,这些类型覆盖了大多数基本数据需求。下面是一些常见的预定义类型及其特点: | 类型 | 描述 | 示例 | 范围 | |---------|--------------------------------------------------------------|----------------------|-----------------------------------------| | `object`| 所有其他类型的最终基类型 | `object o = null;` | | | `string`| 字符串类型;字符串是由Unicode字符组成的序列 | `string s = "hello";`| | | `sbyte` | 8位有符号整型 | `sbyte val = 12;` | -128到127 | | `short` | 16位有符号整型 | `short val = 12;` | -32,768到32,767 | | `int` | 32位有符号整型 | `int val = 12;` | -2,147,483,648到2,147,483,647 | | `long` | 64位有符号整型 | `long val1 = 12;`<br>`long val2 = 34L;`| -9,223,372,036,854,775,808到9,223,372,036,854,775,807 | | `byte` | 8位无符号整型 | `byte val1 = 12;` | 0到255 | | `ushort`| 16位无符号整型 | `ushort val1 = 12;` | 0到65,535 | | `uint` | 32位无符号整型 | `uint val1 = 12;`<br>`uint val2 = 34U;`| 0到4,294,967,295 | | `ulong` | 64位无符号整型 | `ulong val1 = 12;`<br>`ulong val2 = 34U;`<br>`ulong val3 = 56L;`<br>`ulong val4 = 78UL;`| 0到18,446,744,073,709,551,615 | | `float` | 单精度浮点型 | `float val = 1.23F;` | ±1.5×10^−45到±3.4×10^38 | | `double`| 双精度浮点型 | `double val1 = 1.23;`<br>`double val2 = 4.56D;`| ±5.0×10^−324到±1.7×10^308 | | `bool` | 布尔型;值或为真或为假 | `bool val1 = true;`<br>`bool val2 = false;`| | | `char` | 字符类型;值是一个Unicode字符 | `char val = 'h';` | | | `decimal`| 精确的小数类型,具有28个有效数字 | `decimal val = 1.23M;`| ±1.0×10^−28到±7.9×10^28 | | `DateTime`| 用于表示特定时间点的日期和时间 | `DateTime now = DateTime.Now;` | | #### 变量转换 C#中支持多种方式来进行变量间的转换: 1. **简单转换**:例如将一个`float`类型的值赋给一个`short`类型的变量。 ```csharp float f = 100.1234f; short s = (short)f; ``` 2. **类型强制转换**:使用括号来显式地进行类型转换。 ```csharp short s = (short)f; ``` 3. **使用`Convert`类**:提供了多种静态方法来完成不同类型的转换。 ```csharp string s1; s1 = Convert.ToString(f); MessageBox.Show(s1); ``` `Convert`类中常用的转换方法包括: - `Convert.ToBoolean` - `Convert.ToByte` - `Convert.ToChar` - `Convert.ToDateTime` - `Convert.ToDecimal` - `Convert.ToDouble` - `Convert.ToInt16` - `Convert.ToInt32` - `Convert.ToInt64` - `Convert.ToSByte` - `Convert.ToSingle` - `Convert.ToString` - `Convert.ToUInt16` - `Convert.ToUInt32` - `Convert.ToUInt64` #### Math类 `System.Math`类提供了一系列静态方法,用于执行数学运算,例如求绝对值、开方等。 - `Math.Abs`:计算数值的绝对值。 - `Math.Sqrt`:计算数值的平方根。 - `Math.Round`:四舍五入取整。 - `Math.Floor`:向下取整,即丢弃小数部分。 - `Math.Cos`、`Math.Sin`、`Math.Tan`:分别用于计算余弦、正弦、正切值。 - `Math.Exp`:计算自然对数的底数e的指定次幂。 - `Math.Log`:计算对数。 - `Math.Pow(x, y)`:计算x的y次幂。 - `Math.Max(x, y)`:返回两个数中的最大值。 - `Math.Min(x, y)`:返回两个数中的最小值。 通过以上介绍,我们可以看到C#为程序员提供了丰富的类型和工具来处理各种数据和数学运算。理解这些基础概念对于掌握C#编程语言至关重要。