C#程序设计【未完待续】
关键字
关键字:有特殊意义的单词
using 引入命名空间
namespace 定义命名的空间
class 定义类
void 空返回值
static 静态
Console.ReadKey(); 暂停当前程序,等待用户按下任意键继续,按下的任意键将显示在控制台当中。
注释符
- 注销
- 解释
C#中的3种注释符
- //单行注释
- /多行注释/
- ///块注释
- #Region #Endregion 折叠代码
标识符
用来表示事物的单词
规范:
- 标识符只能用字母,数字或者下划线组成
- 标识符必须以字母或下划线开头
- 标识符不能是关键字
符号的含义
{} 语句块 / 占位符
[] 数组或集合
() 函数或方法
波浪线的含义
- 如过你的代码中出现了红色的波浪线,意味着你的代码出现了语法错误。
- 如果你的代码中出现了非红的波浪线,说明你的代码语法并没有错误,只不过提醒你可能会出错。
C#的数据类型
C#严格区分大小写
变量
用来在计算机中存储数据。
- 变量
- 在一定的作用域里面,只能定义一次。
- 变量名,起名字的时候要符合标识符的规范。
- 变量的值可以发生改变。
- 变量一定要先声明,再赋值,最后使用。
- 存储变量的语法:
变量类型 变量名;
变量名 = 值;
“=”号:在这里并不表示等于的意思,而是表示赋值,表示把等号右边的值赋值给等号左边的变量。
声明并且给变量赋值的简写形式:
变量类型 变量名 = 值;
有符号整数类型: sbyte(8) short(16) int(32) long(64)
无符号整数类型:Byte short uint ulong
- int 整数类型 只能存储整数,不能存储小数。(32位)
- string 字符串类型 用来存储多个文本,也可以存储空字符,字符串类型的值需要被双引号引起,且这个双引号必须是英文半角下的双引号。
- char 字符类型 用来存储单个字符,有且只能有一个字符。
- decimal 金钱类型 使用时值后面需要加一个m 或 M。
- double 小数类型 既能存储小数也能存储整数,小数点后面15~16位。【常用】
变量的使用规则:如果使用变量,应该先声明再赋值再使用。
浮点型
浮点型变量:浮点型分为单精度型(float)和双精度型(double)两种。
- float 单精度 float型数据占用4个字节(32bits)存储单元,提供的有效数字是6~7位 赋值后面加F f 后缀
- double 双精度 double型数据占用8个字节(64bits)存储单元,提供的有效数字是15~16位
- decimal 高精度 128bits存储单元,赋值后面加 M m 后缀
堆(托管堆):引用类型数据分配内存
栈(堆栈):为值数据分配内存
赋值运算符、赋值表达式
- =:在这里并不表示等于的意思,而是表示赋值,表示把等号右边的值赋值给等号左边的变量。
、、、cs
int number=10;
、、、
- +:连接;当+号两边都是字符串的时候,+号就起到连接的作用。相加;两边是数字的时候。
、、、cs
// Console.WriteLine(“用户名:” + n);
// Console.WriteLine(5+5);
、、、
运算符、表达式
表达式:是用操作符和运算式组成的
-
算术运算符 +(加) -(减) *(乘) /(除) %(取余数)
-
运算符的分类
- 一元运算符
- 二元运算符
- 三元运算符
“ ?: ”是 C#中 唯一一个三元运算符
表达式1 ? 表达式2 : 表达式3 ;
、、、cs
bool sex = true;
sex == true ? “男” : “女”;
/****/
string XXX = true?“男”:“女”;
、、、
-
赋值运算符 = +=(a+=3等价于a=a+3) *= /=(a/=3等价于a=a/3) -=
-
自增(减)运算符
自增[或者自减] 编程时尽量屏蔽掉前自增和后自增的差别
分类:
前自增 -- ++i
后自增 -- i++
异同:
相同:最终都使i的值加1
不同:++i前自增整体表达式的值是i加1之后的值;i++后自增整体表达式的值是i加1之前的值.
- 逻辑运算符 !(非) &&(并且、与) ||(或)
对真假的处理:非零是真;零是假
真是用1表示;假是用0(零)表示
&&(与)左边表达式为假 右边表达式肯定不会执行
||(或)左边表达式为真 右边表达式肯定不会执行
关于结构化程序
C#中的流程控制语句有:选择语句、循环语句和跳转语句。
顺序结构
自顶而下、依次执行。
选择结构
- if语句
-
单分支if语句
布尔表达式
结果只能是 ture false -
双分支if语句
if(表达式1 运算符 表达式2)
{}
self
{}
-
多分支if语句
-
嵌套if语句
- switch-case结构;用来处理多条件的定值的判断。
switch 后的表达式必须是一个变量。
语法:
switch(变量或者表达式的值)
{
case 值1:要执行的代码;
break;
case 值2:要执行的代码;
break;
case 值3:要执行的代码;
break;3
case 值4:要执行的代码;
break;
…
default:要执行的代码;
break;
}
在多层循环中,break只能终止离它最近的循环!
在多层switch嵌套中,break只能终止离它最近的switch!
执行过程:程序执行到switch处,首先将括号中变量或表达式的值计算出来,然后拿这个值依次跟每个case后面所带的值进行匹配,一但匹配成功,则执行该case所带的代码,执行完成后,遇到break。跳出switch-case结构。
如果,跟每个case所带的值都不匹配,就看这个switch-case结构中是否存在default,如果有default,则执行default中的语句,如果没有default,则该switch-case结构将什么都不做。
循环结构
- while 循环结构:
while (循环条件)
{
循环体;
}
执行过程:程序运行到while处,首先判断while所带的小括号内的循环条件是否成立,如果成立的话,也就是返回一个true,则执行循环体,执行完一遍循环体后,再次回到循环条件进行判断,如果依然成立,则继续执行循环体,如果不成立,则跳出while循环。在while循环中,一般总有那么一行代码,能够改变循环条件,也就是使之总有一天不在成立,如果没有那么一行代码能够改变循环条件,也就是循环条件永远成立,我们称之为这种循环为死循环
死循环:
while(true)
{
}
- do … while 循环
do
{
循环体
}while(布尔表达式);
do…while 并不等价于for,当然也不等价于while(主要用于人机交互)
循环结构程序是指根据一定的条件,重复执行一些操作,直到条件不成立时方可退出循环。循环语句一共有4种:whiel、do…while、for、foreach语句。
while和do…while都用来循环次数不确定的程序,区别是while先判断,再执行,最少执行循环0次;而do…while是先执行,再判断,最少执行1次循环。
- for 循环
for (表达式1;表达式2;表达式3)
{
}
for循环语句也称为迭代语句,是C#中使用比较广泛的循环语句。for语句在给定循环次数的情况下使用起来
跳转语句
C#中为我们提供了四种跳转语句:
- continue:立即终止当前这一次循环(继续执行 下一次循环)。
- break:立即终止当前循环或退出switch语句。
- goto:无条件跳转,可以跳转到任意指定标签位置。
- return:跳出循环以及方法。
数组
存储多个值
写法1:
string[] names;
names = new string[3];
names[0] = “张三”;
names[1] = “李四”;
names[2] = “wangwu”;
写法2:动态初始化
string[] names2 = new string[] { “张三”,“李四”, “wangwu” };
写法3:没有 new关键字 静态初始化
string[] name3 = { “藏三”,“李四”,“王五”};
-
先声明数组 | 数据类型[] 数组名;
-
创建数组 new | 数组名 = new 数组类型[数组长度];
-
初始化数组 | 数组名[索引] = 值;
输出数组元素:
获取数组元素 : 数组名[索引]
1.
Console.WriteLine(names2[0]);
2.
for (int i = 0; i < names2.Length; i++)
{
Console.WriteLine(names2[i]);
}
3.
foreach (var item in ages1)
{
Console.WriteLine(item);
}
枚举
语法:
[public] enum 枚举名
{
值1,
值2,
值3,
…
}
public:公共的,访问不受限制
将枚举声明到命名空间下面,类的外面,表示这个命名空间下,所有的类都可以使用这个枚举。
枚举就是一个变量类型,int–double string decimal
只是枚举、声明、
赋值使用的方式与那些普通的变量类型不一样
枚举类型默认可以和int类型互相转化 枚举类型与int类型是兼容的.
函数
函数就是将一堆代码重用的一种机制。
函数的语法:
[访问修饰符] [static] 返回值类型 函数名(参数列表)
{
函数体;(方法体)
}
返回值类型:如果不需要写返回值,写void。
方法名:Pascal 每个单词的是字母都大写,其余字母小写。
参数列表:完成这个方法所必须提供给这个方法的条件;如果没有参数小括号也不能省略。
访问修饰符:
public:公共的,访问不受限制
private:私有的,访问仅限于此类
protected:受保护的,访问仅限于此类和派生类
internal:程序集内部的,访问仅限于此程序
函数是由函数头部和函数体两部分组成
函数按照定义方式的不同,可以分为自定义函数和系统函数
函数的定义不可嵌套,函数的调用可以嵌套
- 参数传递的方式
-
值传递:这是C#语言中默认的参数传递方式,即在函数调用时,实参仅仅把值的副本拷贝一份传递给形参。
-
引用传递:需要在参数列表中使用ref关键字实现,这种参数传递方式是指在函数调用时,将实参在内存中的地址(也可称为引用)传递给形参。
- 自定义构造函数
构造函数:作用就是实例化类对象
创建类时,系统生成一个默认的构造函数
属性
-
string
属性:Length
方法:
1. Trim() 对字符串去除前后空格
2. IndexOf() 获取中间字符(串)的索引,返回第一个匹配项索引,未找回-1
3. LastIndexOf 获取最后一个匹配项索引,未找回-1
4. EndsWith() 以。。。结尾
5. Split() 分隔
6. Substring(n) 截取子字符串,从哪开始截取,截取到最后
7. Substring(n,Length) 截取子字符串,从哪里开始截,截多长
string str = “”; 和 string str = null; 的区别
string str = “”; 表示字符串在内存中已经分配,但是没内容
string str = null; 表示字符串的对象内存空间未分配,不能访问
异常捕获
在我们的程序中经常出现各种异常,你如果想要程序坚强一些
在代码运行中要经常使用try-catch来进行异常捕获
哪行代码可能出现异常,就“踹”它一脚
语法:
try
{
可能会出现异常的代码;
}
catch
{
出现异常后要执行的代码;
}
执行过程:如果try中的代码没有异常,则catch将不会执行。如果try中的代码出现了异常,这行代码后面的所有代码都将不会执行。而是直接跳到catch中执行代码
例如:
using System;
namespace ConsoleApp11
{
class Program
{
static void Main(string[] args)
{
bool b = true;
//定义布尔类型”b“
double c = 0,d = 0,f = 0;
Console.WriteLine("请输入需要转化的华氏温度数值:");
//异常捕获
try
{
f = Convert.ToDouble(Console.ReadLine());
//该行代码执行中出现异常错误将不在执行其它代码
}
catch
{
Console.WriteLine("输入内容不合法");
b = false;
//如果try出现错误则 b = false;if语句就将不再执行
}
d = f - 32;
c = d / 9 * 5;
if (b)
{
Console.WriteLine("华氏温度:{0};其摄氏温度为:{1}", f, c);
}
Console.ReadKey();
}
}
}