#.NET之道
##1.
NET
运行库环境
基础类库
CTS【公共类型系统】:
运行库支持的数据类型和编程结构
##2.
C#所生成的代码只能在.NET运行库中执行。
在.NET运行库下执行的代码,称为托管代码。
包含托管代码的二进制单元称为程序集。
##3.
尽管 .NET二进制文件与非托管windows二进制文件【.dll,.exe】具有相同的文件扩展名,但它们的内部是完全不同的。
.NET二进制文件,包含的 中间语言和类型元数据。
一般在 CIL指令被.NET运行库引用时,才编译为特定平台的指令。
##4.
##5.CTS
.NET中,类型是一个一般性的术语,指的是 集合{类,接口,结构,枚举,委托}里的任意一个成员。
5.1.CTS类类型
class Calc
{
public int ......
{
return ......
}
}
类的特征:
密封性:密封类不能作为其它类的基类
类可实现接口
5.2.CTS接口类型
public interface IDraw
{
void Draw();
}
5.3.CTS结构类型
struct Point
{
public int xPos;
public Point(int x)
{
xPos = x;
}
public void PrintPos()
{
Console.WriteLine("({0}, {1})", xPos);
}
}
5.4.CTS枚举类型
派生自基类 System.Enum
enum CharType
{
Wizard = 100,
Thief -200
}
5.5.CTS委托类型
类似于函数指针。
派生自System.MulticastDelegate,用delegate来声明。
delegate int BinaryOp(int x, int y);
5.6.CTS类型成员
5.7.CTS数据类型
System.Byte byte
System.SByte sbyte
System.Int16 short
System.Int32 int
System.Int64 long
System.UInt16 ushort
System.UInt32 uint
System.UInt64 ulong
System.Single float
System.Double double
System.Object object
System.Char char
System.String string
System.Decimal decimal
System.Boolean bool
##6.CLS
描述了支持.NET的编译器须支持的最小的和完全的特征集。
// 让编译器按CLS检查
[assembly: CLSCompliant(true)]
##7.基础类库
.NET提供了大量的基础设施。
需要对这些基础设施进行了解,它们是.NET下编程的基础。
System
System.Collections
System.Collections.Generic
System.Data
System.IO
System.Reflection
System.Runtime.InteropServices
System.Drawing
System.Windows
System.Windows.Controls
System.Windows.Shapes
System.Threading
System.Threading.Tasks
System.Xml
需要用到特定程序集时,进行有针对性的学习。
边干边学。
##8.关于.NET的跨平台
C#
CIL
程序集
.NET命名控件
运行时引擎结构
是国际规范。
Mono提供了 符合标准定义的
C#编译器
.NET运行时引擎
使其可在linux等其它系统使用。
#构建C#应用
##1.构建C#应用
###4.1.csc.exe
1.把csc.exe所在路径添加到环境变量
2.打开cmd,转到源文件所在路径
3.csc /r:System.Windows.Forms;…; /t:exe xx1.cs xx2.cs …【编译器会自动引用一些.NET核心程序集】
###4.2.ildasm.exe【用于查看编译后.exe,.dll信息】
1.把ildasm.exe所在路径添加到环境变量
2.打开cmd,转到目标exe或dll所在路径
3.ildasm xx.exe xx.dll
###4.3.C#响应文件【.rsp】
C#响应文件,包含原始 编译时,指令信息。
1.把csc.exe所在路径添加到环境变量
2.打开cmd,转到C#响应文件所在路径
3.csc @name.rsp
存在默认C#响应文件 【与csc.exe放在同一目录】
编译时,指定 /noconfig 来通知不使用默认的C#响应文件。
##2. .NET SDK文档系统
.NET提供了大量的基础类库。
这些类库构成了.NET下功能开发的基础。
需要花费时间,学习相关的类库。