导图社区 CSharp基础语法学习精修版csharp
C#基础语法学习笔记精修版,包括C#基本数据类型、C#运算符、C#变量、变量及常量命名规则、条件语句等内容。
编辑于2022-02-04 19:13:452. C#基础语法
2.1 C#基本数据类型
值类型
值类型包括整型、浮点型、字符型、布尔型、枚举型等
整型
所谓整型就是存储整数的类型。 按照存储值的范围不同,C# 语言将整型分成了 byte 类型、short 类型、int 类型、long 类型等,并分别定义了有符号数和无符号数。
如表所示
浮点型
浮点型是指小数类型
如表所示
布尔类型
字符型
字符型用 char 关键字表示,存放到 char 类型的字符需要使用单引号括起来,例如 'a'、'中' 等。
引用类型
引用类型包括类、接口、数组、委托、字符串等
字符串类型
使用 string 关键字来存放字符串类型的数据。字符串类型的数据必须使用双引号括起来,例如 "abc"、"123" 等。
转义字符
转义字符的作用是输出有特殊含义的字符
2.2 C#运算符
算术运算符
算术运算符是最常用的一类运算符,包括加法、减法、乘法、除法等,
如表所示
注意
当对两个字符串类型的值使用 + 运算符,代表的是两个字符串值的连接,例如 "123"+"456" 的结果为 "23456" 。
当使用 / 运算符时也要注意操作数的数据类型,如果两个操作数的数据类型都为整数,那么结果相当于取整运算,不包括余数;而两个操作数中如果有一个操作数的数据类型为浮点数,那么结果则是正常的除法运算。
当使用 % 运算符时,如果两个操作都为整数,那么结果相当于取余数。经常使用该运算符来判断某个数是否能被其他的数整除。
实例1
题目:使用 / 和 % 运算符来取得数字 1234 中的千位、百位、十位、个位的值。
class Program { static void Main(string[] args) { Console.WriteLine("千位" +1234 / 1000); Console.WriteLine("百位" + 1234 / 100 % 10); Console.WriteLine("十位" + 1234 / 10 % 10); Console.WriteLine("个位" + 1234 % 10); } }
逻辑运算符
定义
逻辑运算符主要包括与、或、非等,它主要用于多个布尔型表达式之间的运算。
如表所示
实例2
判断 2017 年是否为闰年
代码
class Program { static void Main(string[] args) { Console.WriteLine("2017年是否是闰年:"+((2017 % 4 == 0 && 2017 % 100 != 0) || (2017 % 400 == 0))); } }
比较运算符
定义
比较运算符是在条件判断中经常使用的一类运算符,包括大于、小于、不等于、大于等于、小于等于等。
如表所示
实例 3
根据题目要求,判断某一个数是否为偶数,实际上就是判断该数是否能被 2 整除,如果被 2 整除后余数为 0,则说明该数为偶数。
代码
class Program { static void Main(string[] args) { Console.WriteLine("10是否是偶数:"+(10 % 2 == 0)); } }
三元运算符
三元运算符也被称为条件运算符,与后面要学习的 if 条件语句非常类似。
在 C# 语言中三元运算符只有一个,具体的语法形式如下。 布尔表达式 ? 表达式 1: 表达式 2
布尔表达式:判断条件,它是一个结果为布尔型值的表达式。
表达式 1:如果布尔表达式的值为 True,该三元运算符得到的结果就是表达式 1 的运算结果。
表达式 2:如果布尔表达式的值为 False,该三元运算符得到的结果就是表达式 2 的运算结果。
实例 5
使用三元运算符判断,如果 10 为偶数则运行偶数,否则运行奇数。
代码示例
class Program { static void Main(string[] args) { Console.WriteLine("10为:"+(10 % 2 == 0 ? "偶数":"奇数")); } }
实例 6
使用三元运算符完成两个数的比较,将其中较大的数运行。这里将两个数给 定为 10 和 20。
代码
class Program { static void Main(string[] args) { Console.WriteLine("将10和20中较大数输出结果为:"+(10 > 20 ? 10 : 20)); } }
赋值运算符
定义
赋值运算符中最常见的是等号,除了等号以外还有很多赋值运算符,它们通常都是与其他运算符连用起到简化操作的作用。
赋值运算符如下表所示
注意
++ 和 -- 运算符放在操作数前和操作数后是有区别的, 如果放在操作数前,需要先将操作数加 1 或减 1,然后再与其他操作数进行运算; 如果放在操作数后,需要先与其他操作数进行运算,然后操作数自身再加 1。
运算符优先级
2.3 C#变量
变量的定义
数据类型 变量名;
例如定义一个存放整数的变量,可以定义成: int num;
变量的赋值
在定义变量的同时赋值:
数据类型 变量名 = 值;
先定义变量然后再赋值:
数据类型 变量名; 变量名 = 值;
多个变量赋值 int a = 1, b = 2;
C#变量使用举例
【实例 1】
题目
分别定义整型、浮点型、布尔型以及字符串类型的变量并赋值,最后将变量值运行。
代码
class Program { static void Main(string[] args) { int num1 = 100; double num2 = 100.123; bool isFlag = true; String name = "Hello"; Console.WriteLine("num1= "+ num1); Console.WriteLine("num2=" + num2); Console.WriteLine("isFlag=" + isFlag); Console.WriteLine("name=" + name); } }
【实例 2】
题目
定义两个变量来存放值,然后将其中的大数加 10 后输出。
代码
class Program { static void Main(string[] args) { int a = 10; int b = 20; Console.WriteLine("将a与b中较大的数加10后结果为:"+(a > b ? a + 10 : b + 10)); } }
2.4 C#常量
注意
与变量不同的是,常量在第一次被赋值后值就不能再改变。定义常量需要使用关键字 const 来完成。
语法形式如下:
const 数据类型 常量名 = 值;
【实例1】
题目
分别求圆的面积和周长,并使用常量存放 π 的值,将 π 的值定义为3.14。
class Program { static void Main(string[] args) { const double PI = 3.14; int r = 3; //存放半径 Console.WriteLine("圆的周长是:" + 2 * PI * r); Console.WriteLine("圆的面积是:" + PI * r * r); } }
2.5 变量及常量命名规则
1)变量的命名规则遵循 Camel 命名法,并尽量使用能描述变量作用的英文单词。
例如存放学生姓名的变量可以定义成 name 或者 studentName 等。另外,变量名字也不建议过长, 最好是 1 个单词,最多不超过 3 个单词。
2)为了与变量有所区分,通常将定义常量的单词的所有字母大写。
例如定义求圆面积的 n 的值,可以将其定义成一个常量以保证在整个程序中使用的值是统一的,直接定义成 PI 即可。
3)类的命名规则遵循 Pascal 命名法,即每个单词的首字母大写。
例如定义一个存放学生信息的类,可以定义成 Student。
4)接口的命名规则也遵循 Pascal 命名法,但通常都是以 I 开头,并将其后面的每个单词的首字母大写。
例如定义一个存放值比较操作的接口,可以将其命名为 ICompare。
5)方法的命名遵循 Pascal 命名法,一般采用动词来命名。
例如实现添加用户信息操作的方法,可以将其命名为 AddUser。
2.6 条件语句
if else语句
二选一条件的 if 语句
if(布尔表达式) { 语句块 1; }else{ 语句块 2; }
多选一条件的 if 语句
if(布尔表达式 1) { 语句块 1; }else if(布尔表达式 2){ 语句块 2; } ... else{ 语句块 n; }
【实例 1】
题目
使用 if 语句判断从控制台输入的整数是否为偶数。
思路
根据题目要求,从控制台输入的值是字符串类型,因此需要将字符串类型的值转换成整数型,转换是通过“int.Parse(Console.ReadLine())”语句实现的。
方法一
代码
class Program { static void Main(string[] args) { Console.WriteLine("请输入一个整数:"); //将从控制台输入的值转换成int类型 int num = int.Parse(Console.ReadLine()); if (num % 2 == 0) { Console.WriteLine(num+"是偶数!"); } else { Console.WriteLine(num+"不是偶数!"); } } }
运行结果
方法二
代码
class Program { static void Main(string[] args) { Console.WriteLine("请输入一个整数:"); //将从控制台输入的值转换成int类型 int num = int.Parse(Console.ReadLine()); String msg = num + "不是偶数!"; if (num % 2 == 0) { msg = num + "是偶数!"; } Console.WriteLine(msg); } }
运行结果同上
【实例 2】
题目
使用多分支 if 语句完成对游戏账户积分等级的判断,判断的条件是当游戏积分为 0~100 时是初级、100~200 时是中级、200~500 时是高500以上时是特级。
代码
class Program { static void Main(string[] args) { Console.WriteLine("请输入游戏积分(大于0的整数)"); int points = int.Parse(Console.ReadLine()); //如果输入的积分小于0则将其设置为0 if (points < 0) { points = 0; } if (points <= 100) { Console.WriteLine("您的游戏等级为初级"); }else if (points <= 200) { Console.WriteLine("您的游戏等级为中级"); }else if (points <= 500) { Console.WriteLine("您的游戏等级为高级"); }else { Console.WriteLine("您的游戏等级为特级"); } } }
运行结果
switch case 语句
说明
switch case 语句也是条件语句的一种,与if else语句类似,但在判断条件的选择上会有一些局限性。
具体的语法形式
switch(表达式) { case 值 1: 语句块 1; break; case 值 2: 语句块 2; break; ... default: 语句块 n; break; }
规则
switch 语句中表达式的结果必须是整型、字符串类型、字符型、布尔型等数据类型。 如果 switch 语句中表达式的值与 case 后面的值相同,则执行相应的 case 后面的语句块。 如果所有的 case 语句与 switch 语句表达式的值都不相同,则执行 default 语句后面的值。 case 语句后面的值不能重复。 default 语句是可以省略的。
【实例 1】
题目·:使用 switch...case 语句根据学生的考试成绩来判断等级,如果成绩在 90 分以上是优秀;如果成绩为 80~90 分是良好;如果成绩为 60~80 分是及格,如果成绩在 60 分以下是不及格。
class Program { static void Main(string[] args) { Console.WriteLine("请输入学生考试的成绩(0~100的整数)"); int points = int.Parse(Console.ReadLine()); if(points < 0 || points > 100) { points = 0; } switch (points / 10) { case 10: case 9: Console.WriteLine("优秀"); break; case 8: Console.WriteLine("良好"); break; case 7: case 6: Console.WriteLine("及格"); break; default: Console.WriteLine("不及格"); break; } } }
2.7 循环语句
for循环
说明
for 循环是最常用的循环语句,语法形式非常简单,多用于固定次数的循环。
语法形式
for(表达式 1; 表达式 2; 表达式3) { 表达式 4; }
表达式 1:为循环变量赋初值。 表达式 2:为循环设置循环条件,通常是布尔表达式。 表达式 3:用于改变循环变量的大小。 表达式 4:当满足循环条件时执行该表达式 4。
提示:在 for 循环中表达式 1、表达式 2、表达式 3 以及表达式 4 都是可以省略的,但表达式 1、表达式 2、表达式 3 省略时它们之间的分号是不能省略的。
【实例 1】
使用循环输出 1~10 的数,并输出这 10 个数的和。
class Program { static void Main(string[] args) { //设置存放和的变量 int sum = 0; for(int i = 1; i <= 10; i++) { Console.WriteLine(i); sum += i; } Console.WriteLine("1~10的和为:" + sum); } }
【实例 2】
打印九九乘法表。
class Program { static void Main(string[] args) { for(int i = 1; i < 10; i++) { for(int j = 1; j <= i; j++) { Console.Write(i + "x" + j + "=" + i*j + "\t"); } Console.WriteLine(); } } }
while循环
while 循环与 for 循环类似,但是 while 循环一般适用于不固定次数的循环。
语法形式
while(布尔表达式) { 语句块; }
【实例】使用 while 循环输出 1~10 的数并输出 1~10 的和。 根据题目要求,代码如下。 class Program { static void Main(string[] args) { int i = 1; int sum = 0;//存放1~10的和 while (i <= 10) { sum = sum + i; Console.WriteLine(i); i++; } Console.WriteLine("1~10的和为:" + sum); } }
do while循环
语法形式
do { 语句块; }while(布尔表达式);
注意:do while 语句执行的过程是,先执行 do{} 中语句块的内容,再判断 while() 中布尔表达式的值是否为 True,如果为 True,则继续执行语句块中的内容,否则不执行,因此 do while 语句中的语句块至少会执行一次。
【实例 1】使用 do while 循环输出 1~10 的数。 根据题目要求,代码如下。 class Program { static void Main(string[] args) { int i = 1; do { Console.WriteLine(i); i++; } while (i <= 10); } }
break语句
break 语句用于中断循环,使循环不再执行。如果是多个循环语句嵌套使用,则 break 语句跳出的则是最内层循环。
【实例】使用 for 循环输出 1~10 的数,当输出到 4 时结束循环。 根据题目要求,代码如下。 class Program { static void Main(string[] args) { for(int i = 1; i <= 10; i++) { if (i == 4) { break; } Console.WriteLine(i); } } }
continue语句
continue 语句有点像 break 语句。但它不是强制终止,continue 会跳过当前循环中的代码,强制开始下一次循环。
【实例】使用 for 循环输出 1~10 的数,当输出到 4 时结束循环。 根据题目要求,代码如下。 class Program { static void Main(string[] args) { for(int i = 1; i <= 10; i++) { if (i == 4) { break; } Console.WriteLine(i); } } }
goto语句
goto 语句用于直接在一个程序中转到程序中的标签指定的位置,标签实际上由标识符加上冒号构成。
语法形式如下: goto Labell; 语句块 1; Labell 语句块 2;
【实例】使用 goto 语句判断输入的用户名和密码是否正确,如果错误次数超过3次,则输出“用户名或密码错误次数过多!退出!”。 根据题目要求,假设用户名为 aaa、密码为 123,代码如下。 class Program { static void Main(string[] args) { int count = 1; login: //标签 Console.WriteLine("请输入用户名"); string username = Console.ReadLine(); Console.WriteLine("请输入密码"); string userpwd = Console.ReadLine(); if (username == "aaa" && userpwd == "123") { Console.WriteLine("登录成功"); } else { count++; if (count > 3) { Console.WriteLine("用户名或密码错误次数过多!退出!"); } else { Console.WriteLine("用户名或密码错误"); goto login;//返回login标签处重新输入用户名密码 } } } }