关键字:
关键字是编程语言中具有特殊含义的单词或符号,它们通常被编程语言用于表示特定的语法结构、操作或约定。在C#中,关键字具有特定的语法和功能,用于定义语言的基本结构和规则。
以下是一些C#中常用的关键字及其功能:(一开始了解就好随着学习的深入慢慢会频繁的使用关键字,自然而然地就记住了)
- class:用于定义类。
- struct:用于定义结构。
- interface:用于定义接口。
- enum:用于定义枚举。
- namespace:用于定义命名空间。
- using:用于引入命名空间。
- public、private、protected、internal:用于定义访问修饰符。
- static:用于定义静态成员。
- readonly:用于定义只读字段。
- const:用于定义常量。
- abstract:用于定义抽象类或抽象成员。
- virtual、override:用于定义虚方法和重写方法。
- new:用于隐藏成员或指定新的实现。
- base、this:用于引用基类或当前实例。
- as、is:用于类型转换和类型判断。
- typeof、nameof:用于获取类型或成员的信息。
- if、else、switch、case:用于条件控制。
- for、foreach、while、do:用于循环控制。
- try、catch、finally:用于异常处理。
- return、break、continue:用于控制流程。
标识符:
标识符是用来为类、变量、函数或任何其他自定义内容命名。C# 中标识符的定义规则如下所示:
字面量在编程中常用于初始化变量、常量或数据结构的固定值,它们在代码中是静态不变的,不会在程序运行过程中改变。
-
标识符必须以英文字母开头,后面可以跟英文字母、数字
0-9
或下划线_
; -
标识符中的第一个字符不能是数字;
-
标识符中不能包含空格或特殊符号,例如
? - + ! @ # % ^ & * ( ) [ ] { } . ; : " ' / \
,但是可以使用下划线_
; -
标识符不能是 C# 关键字。
-
变量:
- 变量是编程中用来存储和表示数据的一个名称,它可以是各种数据类型(如整数、浮点数、字符串等)的容器。变量可以是各种数据类型,包括整数类型(
int
、long
等)、浮点数类型(float
、double
等)、字符类型(char
)、布尔类型(bool
)、字符串类型(string
)等。 - 声明语法:数据类型 变量名列表(可以一个或个多变量名,变量名之间用逗号隔开)
-
int age; // 声明一个整数类型的变量 age = 25; // 初始化变量,赋值为25 int age =25 //定义且声明 double height = 175.5; // 声明并初始化一个双精度浮点数类型的变量
用Console类提供的ReadLine()方法可以接收用户输入,将其输入内容存储到变量中
-
int a=0; Console.WriteLine("请输入变量a的值:"); a =int.Parse( Console.ReadLine());//将字符串转化为int类型 Console.WriteLine("变量a的值是:"+a);
数据类型
-
数值类型:
-
引用类型:
- 在C#中,引用类型是一种数据类型,它们存储的是对象的引用(内存地址),而不是对象本身的值。引用类型在堆内存中分配空间,而变量本身存储的是指向对象的引用。这与值类型(如整数、浮点数等)不同,值类型直接存储数据的值。C# 中内置的引用类型包括 Object(对象)、Dynamic(动态)和 string(字符串)。
- 对象类型(如
object
):是一种引用类型,它可以表示任何其他类型的对象。在C#中,所有类都是object
类的派生类,因此可以将任何类的实例赋值给object
类型的变量。 -
object obj = "Hello, world!"; // 将字符串赋值给对象类型变量 object obj2 = 42; // 将整数赋值给对象类型变量
动态类型(如
dynamic
):也是一种引用类型,但它在编译时不进行类型检查,而是在运行时根据实际情况推断类型。使用动态类型可以实现更灵活的编程,但也可能导致运行时类型错误。 -
字符串类型:
-
dynamic dynamicVar = 10; // 动态类型变量,可以赋值为任意类型 dynamicVar = "Hello, dynamic!"; // 现在是字符串类型
字符串类型的变量允许您将一个字符串赋值给这个变量,字符串类型需要通过 string 类来创建,string 类是 System.String 类的别名,它是从对象(Object)类型中派生的。
-
常量:
-
与变量相对应的概念是常量,常量的值在程序运行期间不可改变,使用
const
关键字进行声明。 -
const double PI = 3.14159; // 声明一个常量PI,并初始化为3.14159
字面量(数据在程序中的书写格式)
编程中表示固定值的符号或文字,其值在代码中是固定不变的。
-
表示整数值,可以是十进制、十六进制、八进制或二进制。
- 十进制:
int x = 123;
- 十六进制:
int y = 0xFF;
- 八进制:
int z = 0123;
- 二进制:
int w = 0b1010;
- 十进制:
-
浮点数字面量:表示浮点数值,可以是单精度浮点数(float)或双精度浮点数(double)。
- 单精度浮点数:
float f = 3.14f;(若不加f,默认数值为double)
- 双精度浮点数:
double d = 3.14;
- 单精度浮点数:
-
字符字面量:表示单个字符,使用单引号括起来。
char c = 'A';
-
字符串字面量:表示字符串,使用双引号括起来。
string s = "Hello, world!";
-
布尔字面量:表示布尔值,可以是true或false。
bool b1 = true;
bool b2 = false;
-
空字面量:表示空引用或空值,使用关键字
null
。object obj = null;
-
枚举字面量:表示枚举类型的固定值。
-
十进制字面量:表示十进制数值,使用关键字
decimal
。decimal d = 123.45m;
-
时间和日期字面量:表示时间和日期,使用关键字
DateTime
。DateTime dt = DateTime.Now
- 空数组和空集合字面量:表示空数组或空集合。
- 空数组:
int[] arr = new int[0];
- 空集合:
List<int> list = new List<int>();
- 空数组:
int decimalNumber = 123; // 十进制整数字面量
int hexadecimalNumber = 0xFF; // 十六进制整数字面量
int octalNumber = 0123; // 八进制整数字面量
int binaryNumber = 0b1010; // 二进制整数字面量
float floatNumber = 3.14f; // 单精度浮点数字面量
double doubleNumber = 3.14; // 双精度浮点数字面量
char character = 'A'; // 单个字符字面量
string message = "Hello, world!"; // 字符串字面量
bool trueValue = true; // 布尔字面量true
bool falseValue = false; // 布尔字面量false
object nullObject = null; // 空引用字面量
enum Color { Red, Green, Blue }; // 枚举类型定义
Color colorValue = Color.Red; // 枚举类型的字面量
decimal decimalValue = 123.45m; // 十进制浮点数字面量
DateTime currentDate = DateTime.Now; // 当前日期和时间的字面量
int[] emptyArray = new int[0]; // 空数组字面量
List<int> emptyList = new List<int>(); // 空集合字面量
运算符
1、算术运算符
算术运算符就是完成特定算术运算的符号
int a = 30, b = 20;
int c = a + b; //求和 50
int d = a - b; //差 10
int e = a * b; //积 600
int f = a / b; //商 整除 1
int g = a % b; //取模 整除后取余 10
int a1 = a++; //自增 ++在后,先赋值,再自增,
int b1 = --b;//--在前,先自减1,再赋值
2、关系运算符
关系运算符用来比较运算符左右两边的操作数
3、逻辑运算符
C#中支持的逻辑运算符有:&& || !
4、位运算符
位运算符用来对二进制位进行操作
int a = 40; //二进制 0010 1000
int b = 13; //二进制 0000 1101
int c = a & b; //0000 1000 --8
int d = a | b; //0010 1101 --45
int e = a ^ b; //0010 0101 --37
int f = ~a; //1101 0111 --41
//位移
int g = a << 2; //1010 0000 --160 左移2位
int h = b >> 2; //0000 0011 --3 右移2位
5、赋值运算符
赋值运算符顾名思义就是用来为变量赋值的,最常用的就是 =
6、其它运算符
获取数据类型的大小 (字节数)
int intSize =sizeof(int); //4
int floatSize=sizeof(float); //4
int decimalSize=sizeof(decimal);//16
int enumSize = sizeof(RoleType);//4
int charSize=sizeof(char);//2
获取指定的类型
Type typeInt= typeof(int);
Type typeString= typeof(string);
Type typeFloat= typeof(float);
Type typeRoleType=typeof(RoleType);
Type typeStudent= typeof(Student);
Type typeTeacher= typeof(Teacher);
?: 三目运算符
int a = 12;
//如果a大于18,grade="A",否则grade="B"
string grade = a > 18 ? "A" : "B";
is 判断对象是否为某一类型
object a = 12;
if(a is int)
{
Console.WriteLine("a是整型");
}
Teacher tea= new Teacher();
if(tea is Teacher)
{
Console.WriteLine("tea是Teacher类型");
}
as 强制转换
object obj = "123";
string str=obj as string;
类型转换
类型转换是将一个数据类型的值转换为另一个数据类型的过程。类型转换分为两种:隐式类型转换和显式类型转换。
隐式转换
- 隐式类型转换是指编译器可以自动将一种数据类型转换为另一种数据类型,而无需显式指定转换操作符。
- 隐式类型转换是由 C# 以类型安全的方式执行的,转换的过程中不会导致数据丢失。 例如从较小的整数类型(例如 int)转换到较大的整数类型(例如 long),从派生类转换为基类。
int intValue = 10;
double doubleValue = intValue; // 隐式类型转换,int转换为double
显式转换
显式类型转换也叫强制类型转换,这种转换需要使用(type)value
的形式或者预定义函数显式的完成,显式转换需要用户明确的指定要转换的类型,而且在转换的过程中可能会造成数据丢失。
常应用于:大范围转小范围 、浮点型转整型、浮点型与decimal 、数值字符串转值类型
double doubleValue = 10.5;
int intValue = (int)doubleValue; // 显式类型转换,double转换为int
c#内置的类型转换方法:
例如:
Parse 方法:用于将字符串转换为其他基本数据类型,如整数、浮点数等。
string strNumber = "123";
int intNumber = int.Parse(strNumber); // 将字符串转换为整数
double doubleNumber = double.Parse("3.14"); // 将字符串转换为浮点数
Convert.ToXxx 方法:用于将一种类型转换为另一种类型,如将字符串转换为整数、将对象转换为字符串等。
string strNumber = "42";
int intNumber = Convert.ToInt32(strNumber); // 将字符串转换为整数
string strValue = Convert.ToString(3.14); // 将浮点数转换为字符串
类型转换运算符:可以使用强制转换运算符(如 (int)
、(double)
)进行显式类型转换。
double doubleValue = 3.14;
int intValue = (int)doubleValue; // 将double类型转换为int类型