C#核心编程结构
1.
每一个可执行的C#应用必须包含一个定义了Main方法的类。这个方法用来表示应用的入口点。所在的类,叫做应用程序对象。
class xxx
{
// Main四种形式
static void Main(string[] args);
static int Main(string[] args);
static void Main();
static int Main();
}
编译时 /main用来指定用作入口点的Main方法。
// 通过函数调用获取命令行参数
string[] theArgs = Environment.GetCommandLineArgs();
2.应该掌握的基础设施
2.1.
Environment
System.Console
格式化控制台输出【Formatting Types】
string.Format(“”, …)// PresentationFramework.dll
System.Object
System.ValueType【该类型及其派生类,在栈上分配。非该类型,在堆上分配】
System.Boolean
System.Byte
System.Int32
System.UInt32
System.Char
System.String
System.Double
System.Object
System.DateTime
System.TimeSpan
System.Numerics.BigInteger // System.Numerics.dll
System.Text.StringBuilder
Type Conversion Tables
Enum
2.2.C#数据类型
bool System.Boolean
sbyte System.SByte -2^7, 2^7-1
byte System.Byte 0, 2^8-1
short System.Int16 2^15, 2^15-1
ushort System.UInt16 0, 2^16-1
int System.Int32 -2^31, 2^31-1
uint System.UInt32 0, 2^32-1
long System.Int64 -2^63, 2^63-1
ulong System.UInt64 0, 2^64-1
char System.Char 0x0000, 0xffff 【16位Unicode字符】
float System.Single -3.4*10^38, 3.4*10^38
double System.Double +/- 5.0*10^-324, +/- 1.7*10^308
decimal System.Decimal (-7.9*10^28, 7.9*10^28) / 10^0~28
string System.String Unicode字符集合,受内存限制
object System.Object 一切.NET类型的基类
所有内建数据类型都支持默认构造。
默认构造:
bool false
数值类型 0 / 0.0
char 单个空字符
BigInteger 0
DateTime 1/1/0001 12:00:00 AM
对象引用 NULL
C#字符串字面量中可以包含各种转义字符,用来限制字符数据怎样被输到输出流中
\’ ’
\” ”
\ \
\a
\n
\r
\t
以@为前缀的字符串字面量记法,称逐字字符串。
使用逐字字符串可以使对一个字面量的转义字符的处理失效并输出字符串。【此时,可以通过重复”标记向一个字面量字符串插入一个双引号】
System.String:一旦将初始值赋给字符串对象,字符数据就不能改变了。
System.Text.StringBuilder 调用这个类型的成员时,都是直接修改对象内部的字符数据。
3.窄化和宽化
宽化用于定义隐式向上转换,不会导致数据丢失。
窄化时,须使用强制类型转换。【(目标类型)】
C#提供checked关键字,当把一个语句(或者语句块)包装在checked关键字域内时,C#编译器会使用额外CIL指令,测试数据溢出。如果发生溢出,产生运行时异常:System.OverflowException。也可编译时,用 /checked标志。将检测项目内所有溢出。
unchecked,用于将其包围的域内,禁止溢出检查。
4.隐式类型本地变量
var VariableName = InitialValue; // 依据本地数据点的初始值自动推断实际的数据类型。
var只能用于方法或属性范围内的本地变量。且必须在声明时分配初始值,初始值不能是null。隐式类型数据是强类型数据【类型一经确定,即是不可变的】
用var关键字定义返回值,参数,自定义类型的字段数据,都是不合法的。
主要用在LINQ查询的返回数据。
5.C#迭代结构
for
foreach/in【in关键字后面可以是任何实现IEnumerable接口的类】
while
do/while
if/else【只能作用于布尔表达式】
switch【除了数值数据外,还可以计算字符串数据,枚举类型】