class="p0">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。