【C#语言入门】03.C#词法、类型、变量、方法与算法简介
一、构成C#语言的基本元素
- 关键字(Keyword)
- 操作符(Operator)
- 标识符(Identifier)
- 什么是合法的标识符(怎样阅读语言定义文档?)
- 大小写规范
- 命名规范
- 标点符号
- 文本(字面值)
- 整数(多种后缀)
- 实数(多种后缀)
- 字符
- 字符串
- 布尔
- 空(null)
- 注释与空白
- 单行
- 多行(块注释)
前五种为标记(Token),意为对于编译器来说有意义的记号,编译器会识别会执行,但是注释与空白就会跳过。
1. 关键词
关键字是预定义的保留标识符,对编译器有特殊意义。第一个表列出了是 C# 程序任意部分中的保留标识符的关键字。 此主题中的第二个表列出了 C# 中的上下文关键字。 上下文关键字仅在一部分程序上下文中有特殊含义,可以在相应上下文范围之外用作标识符。
第一列 | 第二列 | 第三列 | 第四列 |
---|---|---|---|
asbtract | event | namespace | static |
as | explicit | new | string |
base | exterm | null | struct |
bool | false | object | switch |
break | finally | operator | this |
byte | fixed | out | throw |
case | float | override | true |
catch | for | params | try |
char | foreach | private | typeof |
checked | goto | protected | uint |
class | if | public | ulong |
const | implicit | readonly | unchecked |
continue | in | ref | unsafe |
decimal | int | return | ushort |
default | interface | sbyte | using |
delegate | internal | sealed | virtual |
do | is | short | void |
double | lock | sizeof | volatile |
else | long | stacklloc | while |
enum |
上下文关键字
第一列 | 第二列 | 第三列 | 第四列 |
---|---|---|---|
add | get | notnull | set |
and | global | nuint | 非托管(函数指针调用约定) |
alias | group | on | unmanaged(泛型类型约束) |
ascending | init | or | value |
args | into | orderby | var |
async | join | partial(类型) | when(筛选条件) |
await | let | partial(方法) | where(泛型类型约束) |
by | 托管(函数指针调用约定) | record | where(查询子句) |
descending | nameof | remove | with |
dynamic | nint | select | yield |
equals | not | ||
from | |||
2. 操作符(Operator)
也叫作运算符,用来表达运算思想的符号。
运算符 | 类别或名称 |
---|---|
x.y、f(x)、a[i]、x?.y、x?[y]、x++、x–、x!、new、typeof、checked、unchecked、default、nameof、delegate、sizeof、stackalloc、x->y | 主要 |
+x、-x、x、~x、++x、–x、^x、(T)x、await、&&x、 * x、true 和 false | 一元 |
x…y | 范围 |
switch、with | switch 和 with 表达式 |
x * y、x / y、x % y | 乘法 |
x + y、x – y | 加法 |
x << y、x >> y | Shift |
x < y、x > y、x <= y、x >= y、is、as | 关系和类型测试 |
x == y、x != y | 相等 |
x & y | 布尔逻辑 AND 或按位逻辑 AND |
x ^ y | 布尔逻辑 XOR 或按位逻辑 XOR |
x | y |
x && y | 条件“与” |
x | |
x ?? y | Null 合并运算符 |
c ? t : f | 条件运算符 |
x = y、x += y、x -= y、x * = y、x /= y、x %= y、x &= y、x | = y、x ^= y、x <<= y、x >>= y、x ??= y、=> |
3. 标识符(Identifier)
标识符即为名字,给程序中的一些起的名字就是标识符,例如变量、类(属性、方法、事件)、类的成员。
什么是合法的标识符?
- 首先不能与关键字冲突。
- 可以使用字母,数字和下划线组成标识符,但是不能用数字开头。
- 允许“@”字符作为前缀以使关键字能够用作标识符。
命名规范以及大小写规范
满足上述合法标识符的条件,只是说明编译器不会报错,但并不代表你的标识符的可读性很好,因此我们需要有一些额外的规范,来保证命名有意义,提升可读性,保证自己以及别人能够看得懂。
例如,变量名,类名,属性,名称空间最好为名词,方法最好为动词或动词短语。
例如,变量名使用驼峰命名法,方法名,类名,名称空间使用帕斯卡命名法。
4. 标点符号
各种括号()、{}、[]或者;或者,等等
5. 文本(字面值)
//整型,长整型范围大于整型
int x = 2;
long y = 3L;
//实数,双精度范围大于单精度范围
float x = 3.0F;
double y = 4.0;//double y = 4.0D;
//字符
char c = 'a';
//字符串
string str = "hello,world!";
//布尔
bool b = true;
bool b2 = false;
//空(null)
string str = null;
6. 注释与空白
空格加多了没事,但是必要的空格不能少,可以用空格进行调整位置,增强可读性。
注释是给程序员看的,要出现在该出现的地方,并不是说越多越好。注释除了有解释代码的作用外,还可以用作暂时让用不着的代码无效化。
//这是单行注释
/*
这是块注释
这是块注释
块注释无法嵌套使用
这是块注释
这是块注释
*/
二、初始类型、变量和方法
- 初识类型(Type)
- 也称为数据类型(Data Type)
- 变量是存放数据的地方,简称“数据”
- 变量的声明
- 变量的使用
- 方法(旧称函数)是处理数据的逻辑,又称“算法”
- 方法的声明
- 方法的调用
- 程序 = 数据 + 算法
- 有了变量和方法就可以写有意义的程序了
1. 初识类型
针对不同的数据,采取不同的存储方式和进行不同的处理。随着处理对象的复杂化,数据类型也要变得更丰富。数据类型的丰富程度直接反映了程序设计语言处理数据的能力。
var x = 3.0;//var为编译器自动识别数据类型
int y = 3;
//x ≠ y
2. 变量
变量是存放数据的地方,简称“数据”。变量定义的数据类型要和放进去的数据类型一致。
double x;
x = 3.0;
3. 方法
简单的理解为数据的加工厂,原料(数据)放进去,生产出想要的产品。
class Calculator
{
public int Add(int a, int b)//方法的原料也称为函数参数,也要定义,生产出来的产品也要定义
{
int result = a + b;
return result;
}
}
当然有些加工厂不需要原料也能生产出一些东西。
class Calculator
{
public string GetToday
{
int day = DateTime.Now.Day;
return dat.ToString();
}
}
还有些加工厂不产出东西。
class Calculator
{
public void PrintSum(int a, int b)
{
int result = a + b;
Console.WriteLine(result);
//定义为void,没有return
}
}
三、算法简介
- 循环初体验
- 递归初体验
1. 循环
class Calculator
{
public void PrintXTo1(int x)
{
for (int = x; i>0; i--)
{
Console.WriteLine(i);
}
}
}
2. 递归
class Calculator
{
public void PrintXTo1(int x)
{
if (x==1)
{
Console.WriteLine(x);
}else
{
Console.WriteLine(x);
PrintXTo1(x-1);
}
}
}