首页 > 代码库 > C#入门经典札记_Chapter3_变量和表达式

C#入门经典札记_Chapter3_变量和表达式

C#入门经典_札记

Chapter 3:

3.1 C#的基本语法

1.无论代码中是否有空格、回车符或tab字符(这些字符统称为空白字符),C#编译器都不考虑这些字符。

3.2 变量

1.计算机中所有的数据都是相同的东西(一组01),但是变量有不同的内涵,成为类型。建立这个类型系统的原因是,不同类型的数据需要用不同的方法来处理。变量限定为不同的类型,可以避免混淆它们。例如,在处理,组成数字图片的01序列和组成声音的01序列,其处理方式是不同的。

2.可以使用的变量类型是无限多的,因为可以自己定义类型,存储各种复杂的数据。

3.2.1 简单类型

1.简单类型就是组成应用程序中基本组成部件的类型,如,数值和布尔值。

2.简单类型与复杂类型是不同的,不能有子类型或属性。 

3.数值类型过多的原因是在计算机内存中,把数字作为一系列01来存储的机制。

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进制值。该转移序列包括标准的“\”字符,后跟一个u416进制值。

如:” 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.名称是由名称空间唯一定义的,可以在leveloneleveltwo名称空间中定义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