首页 > 代码库 > C#入门经典札记_Chapter3_变量和表达式
C#入门经典札记_Chapter3_变量和表达式
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。