在你阅读这篇博客之前,你需要注意的是,这篇博客都是博主的个人理解,并不是官方的说法,如果有更好的建议可以私信博主。
下面我们进入正题
C#中关键字大概可以分为以下几类
类型关键字有以下几种
这里不举例无符号类型了,不然怕新手搞不清楚。
同时每种类型都可以声明数组,用以存储更多的数据。
声明类型用 类型名+名字(自己取)的方法
如 int name;
但是这仅仅是声明。让我们接下去看。
byte是字节类型它的取值范围是-128~127,占用1字节内存。这里介绍两种赋值语法。
一种是声明的同时赋值;
byte test1=1;
另一种是先声明在赋值
byte test2;
test2=1;
用于存放字符的数据类型,占用2个字节,采用unicode编码,它的前128字节编码与ASCII兼容 字符的存储范围在\u0000~\uFFFF(这句无需理解);
总之char类型是用来装字符的。
这里介绍两种赋值语法。
一种是声明的同时赋值;
char test1='a';
另一种是先声明在赋值
char test2;
test2='a';
这里需要注意的是我们的字符需要装在
‘ ’
两个单引号中间,如‘a’才可以。
顾名思义,是比较短的整数,他的取值范围是-32768~32767,占用2个字节。
同样有两种赋值语法。
一种是声明的同时赋值;
short test1=1;
另一种是先声明在赋值
short test2;
test2=1;
顾名思义,是最标准的整数,他的取值范围是-2147483648~2147483647简单的记为正负21.5亿就可以了,占用4个字节
同样有两种赋值语法。
一种是声明的同时赋值;
int test1=1;
另一种是先声明在赋值
int test2;
test2=1;
由short可得,是比较长的整数,他的取值范围是9223372036854774808
~92233 72036 85477 4807。记为负2的63次方到正2的63次方-1就可以了,占用8个字节
同样有两种赋值语法。
一种是声明的同时赋值;
long test1=1;
另一种是先声明在赋值
long test2;
test2=1;
float是单精度浮点型,及我们熟知的小数,他的取值范围是3.402823e+38 ~ 1.401298e-45。占用4个字节 (e是科学计数法的意思)
同样有两种赋值语法。但是需要注意的是,单精度浮点型数后面要加上英文字母f,来区分整型和浮点型。
一种是声明的同时赋值;
float test1=1.0f;
另一种是先声明在赋值
float test2;
test2=1.0f;
如果没有f这个字母是会报错的。
double是双精度浮点型,及我们熟知的小数,他的取值范围是1.797693e+308~ 4.9000000e-324 占用8个字节
同样有两种赋值语法。但是需要注意的是,单精度浮点型数后面要加上英文字母d,来区分整型和浮点型。
一种是声明的同时赋值;
double test1=1.0d;
另一种是先声明在赋值
double test2;
test2=1.0d;
布尔型是计算机用来表示对错的类型,他只有两个值true 真以及false假。
同样有两种赋值语法。但是需要注意的是,只能给他赋值true或者false;
一种是声明的同时赋值;
bool test1=true;
另一种是先声明在赋值
bool test2;
test2=false;
另外在这里在额外介绍一种string,尽管string不是基本数据类型,但是为了方便新手学习,这里也简单介绍一下
float是单精度浮点型,及我们熟知的小数,他的取值范围是你的内存条233333,开个玩笑,string类型在运行时动态分配内存,他有多大,取决于你为他赋值了几个字符 。
同样有两种赋值语法。但是需要注意的是,字符串需要放在双引号里面如“aaaa”。
一种是声明的同时赋值;
string test1="aaabbbccc";
另一种是先声明在赋值
string test2;
test2="aaabbbccc";
接下来我们介绍class
类在编程中是代码的载体,你可以理解我代码的容器,代码的本身,我们的代码必须放在类里面才能运行,接下来我介绍如何定义一个类
定义类需要用到class+类名(自己取)+{}的语法
class name {
}
如上图所以,我们简单的定义了一个类,我们可以把我们的代码放在类里面,我们把刚学的类型定义在里面试试看!
class name {
int test=1;
}
如图所以,我们简单的定义了一个叫name的类并且在类中定义了一个叫test的整型。
接下类我们定义一个方法。
定义方法用数据类型又称返回值类型+方法名(自己取)+(参数)+{}的方式,其中参数可有可无
然后就有了
class name {
int test=1;
void test1(){
}
}
其中void是无的意思,意思是不返回任何值。
我们可以在方法中调用其他的方法和数据类型;
调用方法只需要方法名+()就可以调用,调用数据类型只需要数据类型名。
如:
class name {
int test=1;
void test1(){
test=0;
}
void test2(){
test1();
}
}
上述代码中test2调用了test1同时test1调用了test并为他赋值了0;
接口是一种特殊的类,和类的区别是,他没有方法的{}也就是他的方法不能执行
我们来定义一个接口
interface name {
static int test=1;
void test1();
}
然后我们看一下和类的区别
class name {
int test=1;
void test1(){
test=0;
}
}
可以发现接口中的方法没有方法的主题,只用定义了,而且int前面多了一个莫名其妙的static。我们后面会解释static是什么意思,但是接口中的数据类型必须定义为static的
我接下来列举一下常用的操作关键字
if关键字用来判断
他的语法是
if(布尔参数){ }
如果()中的参数为真则执行{ }中的语句,否则不执行。
int test=1;
if(1>2){
test=0;
}
如上图所示,因为1不大于2,所以条件不成立,{ }中的语句不会执行test仍然是1;
else关键字可以接在if后面如果if条件不成里,则执行else{ }中的代码
int test=1;
if(1>2){
test=0;
}else{
test=3;
}
如上图所示,因为1不大于2,所以条件不成立,执行else{}中的语句test变为3;
switch值判断操作符,switch语句用来对某个值进行选择,不同值执行不同语句,用case指定要判断的值,break放在语句的结尾
int test=1;
switch (test) {
case 1:
test=10;
break;
case 2:
test=20;
break;
case 3:
test=30;
break;
}
如上图所示test中加入要进行选择的参数,如果参数符合某个case后的值,则从此处开始执行到下一个break结束
最后test的值会变为10
while是循环关键字,语法为
while(参数)+{ }
如果参数为true那么{ }中的语句一直循环下去。
int test=1;
while(2>1){
int test=text+1;
}
因为2大于1,所以{ }中的语句会不断循环,知道test超出他的取值范围。
for关键字是一种更为灵活的循环关键字,他能在进行循环式进行初始化,并且每次循环是修改循环体的值
for(初始化语句;循环条件式;循环体){
......省略语句
}
程序会在执行到for的时候执行一遍初始化语句,然后判断循环条件式,如果循环条件式成立,那么执行接下来的语句,当{ }中的语句执行完了以后,执行一遍循环体,然后再一次判断循环条件式,如果条件式依旧成立,会进行下一次循环,直到循环条件之不成立为止。
for(int test=0;test<10;text=text+1;){
......省略语句
}
如上图所示,{ }中的语句总计会被执行十次。
这两个关键字会用在循环语句内部,当执行到continue语句时,会跳出本次循环直接开始下一次循环,当执行到break时直接终止整个循环。
goto关键字用来跳转执行,
他的语法是goto +跳转名(自己取)
同时,跳转到的目标位置用 跳转名+:
int test=0;
name:
int test=test+1;
goto name;
如上图所示
程序会在执行到goto时跳回name: 所以程序会处于死循环,知道int超出取值范围。
as关键字用来进行类型转换,类型转换一般会用下面这个语法。
即(类型)的方法
int test=(int)1.0f;
上面这个语句会把浮点型的数转换为整型。
也可用下面的语句
object test=对象 as 对象;
上述只是举个例子,并不能运行,只是as能将一个对象转换为另一个对象而不会报错。如果转换失败则返回null;
is关键字用来判断两个对象之间的关系如
int test=1;
if(test is int){
}
他能判断test是否为int类型的,以避免乱用出错。
checked关键字能检测类型有没有超出取值范围!语法如下
int test=2000000;
int test2=checked(test*test);
他能检测()中的test*test的值有没有超出int类型21.5亿的上限!
而一旦()中的值超出范围则会抛出异常
而一旦程序出现异常就需要我们捕获。否则会影响程序的正常运行。
try-catch关键字能够捕获异常,他的语法如下。
try {
....需要捕获异常的代码
} catch (Exception e) {//e是被捕获的异常信息
....异常处理代码
}
如上图所示,一旦trycatch中间的代码出现问题,会立刻执行异常处理中的代码!
接下来我们进行如下操作。
try {
int test=2000000;
int test2=checked(test*test);
} catch (Exception e) {0
int test=0;
int test2=0;
}
一旦test*test的值超出取值范围,那么checked关键字就会报出异常,被我们的try-catch捕获,我们的catch块则直接将值重新归0保护了程序的安全。
之前介绍过方法,方法的定义是这样的
class name {
void test1(){
}
}
这样定义的方法不会返回任何值,但是如果我们修改void为int,则程序要求我们这个方法必须返回int类型的值。
而return关键字则可以帮助我们返回,我们需要的值
如下图所示
class name {
void test1(){
int test=test2();
}
int test2(){
return 1;
}
}
上述代码定义了一个返回值为int的test2方法,同时用return返回了一个1。我们在test1中调用这个方法的时候就可以利用这个返回值为我们的数据类型赋值。如图所示。test最后的结果是1。
好了时间关系,篇幅有限,剩余的修饰关键字就留到下期去讲了,关注+收藏,避免错过下期内容。
如果时间可以倒退,一切也就不再珍贵
只有珍惜没一寸光阴,才能在激烈的市场竞争中脱颖而出。愿你能够利用这篇博客更快的掌握C#基础知识。