1.变量
变量(Variables)是用于存储和操作数据的内存位置。变量具有名称和类型,并且可以在程序的不同位置被赋予不同的值。
数据类型 变量名 = 值 ;
在C#中,变量的声明需要指定变量的名称和类型。以下是声明和初始化变量的示例:
using System; //引入命名空间
namespace _001_开始
{
class Program
{
static void Main(string[] args)
{
// 声明一个整数类型的变量
int age;
// 声明并初始化一个字符串类型的变量
string name = "John";
// 声明多个变量并初始化
int x = 10, y = 20, z = 30;
// 声明一个常量
const double pi = 3.14159;
//变量可以在声明后进行赋值,也可以在后续的代码中重新赋值。例如:
int count; // 声明一个整数类型的变量
count = 5; // 赋值为5
count = 10; // 重新赋值为10
}
}
}
1.1变量命名规则
变量的命名需要遵循一些规则和约定。以下是C#中变量命名的规则:
- 变量的名称必须以字母或下划线(_)开头。
- 变量的名称可以包含字母、数字和下划线。
- 变量的名称区分大小写,例如age和Age是不同的变量。
- 变量的名称不能是C#的关键字,例如int、string等。
- 变量的名称应该具有描述性,能够清晰地表达变量的用途和含义。
- 变量的名称应该使用驼峰命名法(Camel Case),即首字母小写,后续单词的首字母大写,例如myVariable。
- 如果变量的作用范围超过一个单词(如类级别的变量),可以使用下划线分隔单词,例如my_variable。
- 避免使用单个字母作为变量名称,除非用于临时变量或循环计数器。
1.2变量命名规范
对于变量命名的规范,以下是一些建议和最佳实践:
- 使用有意义的名称:变量的名称应该能够清晰地表达变量的用途和含义,避免使用含糊不清或无意义的名称。
- 使用驼峰命名法:变量的名称应该使用驼峰命名法,即首字母小写,后续单词的首字母大写。例如:firstName、numberOfStudents。
- 避免使用缩写:尽量避免使用缩写,除非缩写是广为接受的行业标准或约定。使用完整的单词可以提高代码的可读性。
- 使用具体的名称:使用具体的名称来描述变量的用途,而不是使用泛泛的名称。例如,使用studentName而不是name,使用totalCount而不是count。
- 避免使用保留字:避免使用C#的保留字作为变量名称,以免引发语法错误。
- 保持一致性:在整个代码库中保持一致的命名风格,以提高代码的可读性和维护性。
- 注意命名长度:变量的名称应该足够长以表达其含义,但也不要过长。避免使用过于冗长的名称,以免增加代码的复杂性。
- 使用英文命名:尽量使用英文单词来命名变量,以保持代码的一致性和可读性。
总之,良好的变量命名可以提高代码的可读性、可维护性和可理解性。选择有意义的名称,并遵循一致的命名风格,有助于提高代码质量和开发效率。
2.变量的类型
1>值类型(Value Types):直接存储数据
- 整数类型:包括int、long、short、byte等。
- 浮点数类型:包括float、double。
- 布尔类型:bool,表示真或假。
- 字符类型:char,表示单个字符。
- 枚举类型:enum,表示一组命名的常数值。
- 结构体类型:struct,用于自定义的值类型。
2>引用类型(Reference Types):存储实际数据的应用,通过引用找到真正的数据
- 类类型:class,用于定义对象。
- 字符串类型:string,用于表示文本。
- 数组类型:array,用于存储多个相同类型的元素。
- 接口类型:interface,用于定义一组相关的方法和属性。
- 委托类型:delegate,用于表示方法的引用。
3>特殊类型(Special Type):使用可选参数和默认参数
- object:所有其他类型的基类,可以存储任意类型的值。
- dynamic:在运行时进行类型检查的类型。
2.1 整型
整数类型主要代表没有小数点的整数类型,默认是int类型
2.1.1有符号整型
类型 | 说明 | 范围 | .NET 类型 |
sbyte | 8位有符号整数 | -128~127 | |
short | 16位有符号整数 | -32768~32767 | |
int | 32位有符号整数 | -2147483648~2147483647 | |
long | 64位有符号整数 | -9223372036854775808~9223372036854775807 |
2.1.2无符号整形
类型 | 说明 | 范围 | .NET 类型 |
byte | 8位无符号整数 | 0~255 | |
ushort | 16位无符号整数 | 0~65535 | |
uint | 32位无符号整数 | 0~4294967295 | |
ulong | 64位无符号整数 | 0~18446744073709551615 |
2.2 浮点型
浮点型表示带有小数的数据,默认是double类型。
类型 | 说明 | 大致范围 | 大小 | .NET 类型 |
float | 用于表示单精度浮点数,大约 6-9 位数字 | ±1.5 x 10−45 至 ±3.4 x 1038 | 4 个字节 | |
double | 用于表示双精度浮点数,大约 15-17 位数字 | ±5.0 × 10−324 到 ±1.7 × 10308 | 8 个字节 | |
decimal | 表示高精度十进制数小数,28-29 位 | ±1.0 x 10-28 至 ±7.9228 x 1028 | 16 个字节 |
注1:有效数字包括整数部分和小数部分。
注2:输出多位小数时默认会显示6位有效数字,需进行额外配置以完整显示全部有效数字。
注3:float类型表示小数时,在数字末尾显式地使用字母f表示单精度,否则编译器会默认将小数视为双精度浮点型(double),再进行类型转换(由double型转换为float).
2.3 字符型
字符型变量可表示单个字符。
类型 | 范围 | 大小 | 注意 | .NET 类型 |
char | U+0000 到 U+FFFF | 16 位 | 单引号表示,比如:‘a’、‘1’、‘,’ |
注1:使用单引号表示字符,且单引号内有且仅有1个字符,不可以是字符串。
注2:使用 (int) ch 查询字符对应的ASCII编码。'a’对应97,'A’对应65。
ASCII码表格:
ASCII值 | 控制字符 | ASCII值 | 字符 | ASCII值 | 字符 | ASCII值 | 字符 |
0 | NUT | 32 | (space) | 64 | @ | 96 | 、 |
1 | SOH | 33 | ! | 65 | A | 97 | a |
2 | STX | 34 | " | 66 | B | 98 | b |
3 | ETX | 35 | # | 67 | C | 99 | c |
4 | EOT | 36 | $ | 68 | D | 100 | d |
5 | ENQ | 37 | % | 69 | E | 101 | e |
6 | ACK | 38 | & | 70 | F | 102 | f |
7 | BEL | 39 | , | 71 | G | 103 | g |
8 | BS | 40 | ( | 72 | H | 104 | h |
9 | HT | 41 | ) | 73 | I | 105 | i |
10 | LF | 42 | * | 74 | J | 106 | j |
11 | VT | 43 | + | 75 | K | 107 | k |
12 | FF | 44 | , | 76 | L | 108 | l |
13 | CR | 45 | - | 77 | M | 109 | m |
14 | SO | 46 | . | 78 | N | 110 | n |
15 | SI | 47 | / | 79 | O | 111 | o |
16 | DLE | 48 | 0 | 80 | P | 112 | p |
17 | DCI | 49 | 1 | 81 | Q | 113 | q |
18 | DC2 | 50 | 2 | 82 | R | 114 | r |
19 | DC3 | 51 | 3 | 83 | S | 115 | s |
20 | DC4 | 52 | 4 | 84 | T | 116 | t |
21 | NAK | 53 | 5 | 85 | U | 117 | u |
22 | SYN | 54 | 6 | 86 | V | 118 | v |
23 | TB | 55 | 7 | 87 | W | 119 | w |
24 | CAN | 56 | 8 | 88 | X | 120 | x |
25 | EM | 57 | 9 | 89 | Y | 121 | y |
26 | SUB | 58 | : | 90 | Z | 122 | z |
27 | ESC | 59 | ; | 91 | [ | 123 | { |
28 | FS | 60 | < | 92 | / | 124 | | |
29 | GS | 61 | = | 93 | ] | 125 | } |
30 | RS | 62 | > | 94 | ^ | 126 | ` |
31 | US | 63 | ? | 95 | _ | 127 | DEL |
ASCII 码的大致组成部分:
(1)非打印控制字符:ASCII 表的 数字0-31 分配给控制字符,用于控制如打印机等外围设备。
(2)打印字符:ASCII 表的 数字32-126 分配给键盘上的字符。
2.4 字符串型
字符串型主要用于存储一组连续字符(char),一个完整的字符串对象可以看作是一个 char 类型的数组,既然是数组我们就可以把它当作集合去使用,
类型 | 范围 | 大小 | 注意 | .NET 类型 |
String | 所有unicode能表示的字符串 | 不限 | 双引号表示,比“iLync.cn” |
创建 string 对象的方式
1) 直接赋值
string str5 = "abc"; //在堆中创建对象,并将引用分配给变量 str5。
2) 调用 string 的构造函数(+ 7 重载)
string str6 = new string(new char[] { 'a', 'b', 'c' });
2.4.1 string 的值具有不变性
string 最显著的特点就是它具有恒定不变性,我们一旦创建了一个 string 对象,就不能以任何方式改变该对象的值,比如:追加、删减、改变格式等。有时看上去改变了某个字符串,但实际上则是创建了一个新的字符串实例
2.5 布尔型
布尔型:用于表示真或假,只有两个可能的值:true和false。
类型 | 范围 | 大小 | .NET 类型 |
bool | true/false | 16 位 |
3 常量
常量(Constants)是指在程序中定义的固定不变的值,其值在编译时就确定,并且不能在程序运行时修改。常量在程序中具有唯一的标识符,并且其值在定义后不能被修改。
C#中,常量可以使用以下关键字进行定义:
- const:用于定义编译时常量,它必须在声明时进行初始化,并且不能在程序的其他地方修改。常量的值在编译时就确定,因此它必须是编译时可确定的常量表达式。
const 数据类型 变量名 = 值 ;
常量的命名通常使用大写字母,以便与其他变量区分开来,并且常量的值在命名时应该具有描述性,以便于理解其含义。
4 类型转化
可以使用类型转换来将一个数据类型转换为另一个数据类型。常用的类型转换方法包括显式转换(explicit casting)和隐式转换(implicit casting)。
4.1 显式转换(强制装换)
显式转换是指将一个数据类型转换为另一个数据类型时,需要使用显式的转换操作符。在C#中,可以使用强制类型转换操作符(cast)或调用相应的类型转换函数来执行显式转换。
以下是一个示例,演示如何将一个整数转换为浮点数:
using System; //引入命名空间
namespace _001_开始
{
internal class Program
{
private static void Main(string[] args)
{
int num1 = 5;
float num2 = (float)num1; // 使用强制类型转换操作符
// 或者可以使用 Convert.ToSingle() 函数进行转换
// float num2 = Convert.ToSingle(num1);
Console.WriteLine("整数:" + num1);
Console.WriteLine("浮点数:" + num2);
}
}
}
4.2 隐式转换
隐式转换是指在某些情况下,编译器会自动进行类型转换,而无需显式指定转换操作。隐式转换通常发生在从小范围数据类型到大范围数据类型的转换中,或者在派生类向基类的转换中。
以下是一个示例,演示隐式转换的情况:
using System; //引入命名空间
namespace _001_开始
{
internal class Program
{
private static void Main(string[] args)
{
int num1 = 5;
double num2 = num1; // 隐式转换
Console.WriteLine("整数:" + num1);
Console.WriteLine("双精度浮点数:" + num2);
}
}
}
需要注意的是,在进行类型转换时,可能会发生数据丢失或精度损失的情况。因此,在进行类型转换之前,最好确保转换是安全和可靠的,并进行适当的数据验证和处理。
注意:本文的内容有部分来源于网络。