Reading C#高级编程(第四版)……………………………………………………………………………………………………………………………………………………………
C#基础语法
1、简介
代码行文:分号成句,花括号成段
命名空间:using System;
类定义:类似C++
注释:和C++是一样的
入口函数:static void main(){}定义在类内部,可以有返回值(传参:int main(string[] args))
2、变量
变量声明和定义:和C++是一样的
初始化:变量时类或结构的字段,默认创建为0;局部变量必须在代码中显式初始化,不初始化则仅仅是一个没有指向任何对象的应用
Something obj;不会像C++那样调用默认构造函数
obj = new Something;必须这样
作用域:和C++是一样的
作用域冲突:局部变量冲突不会隐藏变量,不允许;类字段与局部变量冲突会隐藏类字段
常量:只能把类字段和局部变量定义为常量,常量总是静态的
3、预定义数据类型
值类型:定义在栈上 --结构
引用类型:定义在托管堆上 --类
基本的值类型遵从u、l规则
decimal d=12.30M 使用内置的28位高精度浮点数
char是16位的
string a=@"c:/hello/"用@表示不转义
条件比较时必须用条件符号
4、流控制语句
ifelse:和C++是一样的
switch:基本一样,case中可以使用const变量,但值不能一样
for、while、do-while:都一样
foreach:和QT的一样
goto:不能跳入循环,不能跳出类,不能绕过finally
break、continue、return:都是一样的
5、枚举
public enum TimeOfDay {
Morning=1,
Afternoon=2,
Evening=3
}
支持遍历,反解析
TimeOfDay tDay = (TimeOfDay)Enum.parse(typeof(TimeOfDay),"Afternoon",true);
6、数组(支不支持动态改变大小呢?)
int[] integers = new int[32];
int num = integer.Length;
7、命名空间
支持多部分命名空间,但不能再嵌套命名空间中使用
命名空间只是逻辑概念,using之后也没有物理概念
别名:using alias = NamespaceName;
对象获取所在命名空间的方法:this.GetType().Namespace
8、控制台IO
Console.ReadLine();
Console.Write();
Console.WriteLine("{0},{1} is {2}",a,b,c);
使用方法:
Console.WriteLine("{0,9:C2},{1,9:C2} total {2,9:C2}",a,b,total);
占位符:
Console.WriteLine("{0:#.00}",0.234); //0.23
9、预处理
#define #undef
#if #elif #else #endif
#warning #error
#region #endregion
#line
#pragma
10、标识符规则
@break 使用关键字做标识符
/u005fIdentify unicode标识符