C#入门经典_札记
Chapter 3:
3.1 C#的基本语法
1.无论代码中是否有空格、回车符或tab字符(这些字符统称为空白字符),C#编译器都不考虑这些字符。
3.2 变量
1.计算机中所有的数据都是相同的东西(一组0、1),但是变量有不同的内涵,成为类型。建立这个类型系统的原因是,不同类型的数据需要用不同的方法来处理。变量限定为不同的类型,可以避免混淆它们。例如,在处理,组成数字图片的0、1序列和组成声音的0、1序列,其处理方式是不同的。
2.可以使用的变量类型是无限多的,因为可以自己定义类型,存储各种复杂的数据。
3.2.1 简单类型
1.简单类型就是组成应用程序中基本组成部件的类型,如,数值和布尔值。
2.简单类型与复杂类型是不同的,不能有子类型或属性。
3.数值类型过多的原因是在计算机内存中,把数字作为一系列0、1来存储的机制。
4.数值类型表:
整型:
类型 |
别名 |
允许的值 |
sbyte |
System.SByte |
在 -128~127之间的整数 |
byte |
System.Byte |
在 0~255之间的整数 |
short |
System.Int16 |
在 -32768~32767之间的整数 |
ushort |
System.UInt16 |
在 0~65535之间的整数 |
int |
System.Int32 |
在 -2147483648~2147483647之间的整数 |
uint |
System.UInt32 |
在 0~4294967295之间的整数 |
long |
System.Int64 |
在 -9223372036854775808~9223372036854775807之间的整数 |
Ulong |
System.UInt64 |
在0~18446744073709551615之间的整数 |
浮点:
类型 |
别名 |
float |
System.Single |
double |
System.Double |
decimal |
System.Decimal |
字符:
类型 |
别名 |
允许的值 |
bool |
System.Boolean |
true/flase |
char |
System.Char |
一个unicode字符,存储0~65535之间的整数 |
string |
System.String |
一组字符 |
Note:
1.这些类型中的每一种都利用了.net framework中定义的标准类型。使用标准类型可以在语言之间交互操作。在C#中这些类型的名称是framework中定义的别名。
2.string字符数没有上限,因为它可以使用可变大小的内存。字符串是引用类型,所以字符串可以被赋予null值,即字符串变量不引用字符串。
3.3.2变量的命名
基本命名规则如下:
1.变量名的第一个字符必须字母、下划线或者@。
2.其后的字符可以说是字母、下划线或者数字。
Microsoft建议:
对于简单的变量,使用camelCase规则;对于比较高级的命名室友PascalCase。
3.3.3字面值
转义序列
转义序列 |
产生的字符 |
字符的Unicode值 |
\’ |
单引号 |
0x0027 |
\” |
双引号 |
0x0022 |
\\ |
反斜杠 |
0x005C |
\0 |
空 |
0x0000 |
\a |
警告(产生蜂鸣) |
0x0007 |
\b |
退格 |
0x0008 |
\f |
换页 |
0x000C |
\n |
换行 |
0x000A |
\r |
回车 |
0x000D |
\t |
水平制表符 |
0x0009 |
\v |
垂直制表符 |
0x000B |
Notice:
Unicode值是字符在Unicode字符集中16进制值。该转移序列包括标准的“\”字符,后跟一个u和4位16进制值。
如:” wyh \’s blog ” 等价于 ” wyh \u0027s blog ”
3.3.4变量的声明和赋值
1.同时声明多个类型相同的变量。
int xsize, ysize ;
3.4表达式
1.运算符的很广泛,有简单的,也有复杂的,复杂的操作则包括通过变量内容的二进制表示来处理它们。
3.4.1数学运算符
1.+(一元) : var1=-var2 ; //var1=var2*-1
var1=+nar2 ;
+运算符对结果没有影响。他不会把值变成正的:假如var2=-1,那么+var2表达式的值还是等于-1。这个运算符最有用的方面是,可以定制它的操作,运算符的重载。
2.对bool变量使用数学运算符,编译器会报错。
3.Char变量的想家也会有点让人摸不着头脑。记住,char变量实际上存储的是数字,所以把两个char变量加在一起也会得到一个数字(int类型,隐式转换)。
4.String变量能使用的数学运算符只有+。还有赋值运算符+=。
5.递增、递减运算符:
运算符 |
类别 |
示例 |
结果 |
++ |
|
Var1=++var2 |
Var1 |
-- |
|
Var1=--var2 |
|
++ |
|
Var1=var2++ |
|
-- |
|
Var1=var2-- |
|
1.++总是使操作数加1;
2.--总是使操作数减1。
3.4.2赋值运算符
= 、 += 、 -= 、 *= 、/= 、 %=
3.4.3运算符的优先级
优先级 |
运算符 |
高 |
++,--(前缀)、+,-(一元) |
*,/,% |
|
+,- |
|
到 |
=,*=,/=,%=,+=,-= |
低 |
++,--(后缀) |
3.4.4名称空间
1.名称是由名称空间唯一定义的,可以在levelone和leveltwo名称空间中定义namethree:
namespace levelone
{
//name “namethree” defined
namespace leveltwo
{
//name “namethree” defined
}
}
2.using 语句的意思是“我们需要使用这个名称空间的名称,所以不要每次总是要求对它们分类”。例如,下面代码中,levelone名称空间中的代码可以访问levelone.leveltwo名称空间中的名称,而无需分类:
namespace levelone
{
using levelone;
namespace leveltwo
{
//name “namewo” defined
}
}
Levelone名称空间中的代码现在可以直接使用nametwo引用leveltwo.nametwo。