《C#高级编程》章节试读

当前位置:首页 > 网络编程 > 辅助设计与工程计算 > C#高级编程章节试读

出版社:内格尔 (Christian Nagel)、bill Evjen、Jay Glynn、 黄静 清华大学出版社 (2008-10出版)
出版日期:2008-10
ISBN:9787302184959
作者:Christian Nagel
页数:1557页

《C#高级编程》的笔记-第487页

19.3.4 控制线程关于Abort()方法和ThreadAbortException写得不是很清楚。
MSDN上的解释:ThreadAbortException 是一种可捕获的特殊异常,但在 catch 块的结尾处它将自动被再次引发。....或调用 Thread.ResetAbort 来取消中止。
具体参考:
http://msdn.microsoft.com/zh-cn/library/ms228965(v=VS.90).aspx
关于如何终止线程比较好,暂时可以参考:
http://msdn.microsoft.com/zh-cn/library/7a2f3ay4(v=VS.90).aspx

《C#高级编程》的笔记-第119页

对自定义的类实现IComparalbe接口并实现CompareTo(object obj)方法
重点:
Person other = obj as Person;as 运算符用于执行可兼容类型之间的转换。as 运算符用在以下形式的表达式中:
expression as type

《C#高级编程》的笔记-第168页

自己写了一遍书上讲委托运用的排序代码,感觉还是挺有用的,代码里面有一些小细节涉及了其他的一些知识点,以前没想过object类可以用在这种有点泛型思想的代码中。这还是第一次感受到单根继承的好处。
namespace ProCSharp.Delegates
{
class BubbleSorter
{
/// <summary>
/// 使用object类型的数组进行比较,依靠委托进行复杂排序
/// </summary>
/// <param name="sortArray"></param>
/// <param name="comparison"></param>
static public void Sort(object[] sortArray, Comparison comparison)
{
for (int i=0 ; i<sortArray.Length ; ++i)
{
for (int j=i+1 ; j<sortArray.Length ; ++j)
{
if (comparison(sortArray[j], sortArray[i]))
{
object temp = sortArray[i];
sortArray[i] = sortArray[j];
sortArray[j] = temp;
}
}
}
}
}
}
namespace ProCSharp.Delegates
{
class Employee
{
private string name;
private decimal salary;
public Employee(string name, decimal salary)
{
this.name = name;
this.salary = salary;
}
public override string ToString()
{
//{1:C}为将salary格式转换为currency
return string.Format("{0}, {1:C}\n", name, salary);
}
/// <summary>
/// 比较两人的salary,第一个小于第二个则返回true,参数设为两个object是为了匹配委托的参数
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>
public static bool CompareSalary(object x, object y)
{
Employee e1 = (Employee)x;
Employee e2 = (Employee)y;
return (e1.salary < e2.salary);
}
}
}
namespace ProCSharp.Delegates
{
//声明一个委托
delegate bool Comparison(object x, object y);
class Program
{
static void Main(string[] args)
{
Employee[] employees =
{
new Employee("Huang", 6000),
new Employee("Wang", 12000),
new Employee("Zhang", 8000),
new Employee("Liu", 6500),
};
//用Employee.CompareSalary()来实例化一个委托
BubbleSorter.Sort(employees, Employee.CompareSalary);
foreach (Employee employee in employees)
{
Console.Write(employee.ToString());
}
}
}
}

《C#高级编程》的笔记-第1页

CIL 公共中间语言,与平台无关。
CTS 公共类型系统,类,结构,接口,枚举,委托。
CLS 公共语言规范
CLR 运行库runtime,执行代码所需外部服务的集合,可由多种不同语言使用的运行库。
class和struct在C#中很重要。
JIT Just-in-time
每个可执行的C#程序必须有一个定义了Main()方法的类,入口点。
签名Signature:方法名称,返回类型,参数列表。
C#允许在声明时给类的成员赋初值:readonly只读字段,static类不能使用new关键字来创建。
C#参数修饰符:
out 引用传递,只用一次方法调用就能获得多个返回值。
params 任意个数,只能放在最后。
ref
foreach
is
@逐字字符串
{0}参数表示
P203 装箱boxing拆箱unboxing。值类型存储在堆栈上,引用类型存储在堆上,C#类是引用类型,结构式值类型,在相互转换时要进行装箱拆箱操作,系统会自动进行,容易使用,但是性能损失比较大,所以需要使用泛型。
接口里的函数隐式声明为public和abstract,不为接口分配内存空间,不能有new,从不定义状态数据,从不提供方法实现。获取和接口引用:as & is
C#没有头文件,源文件区别,namespace不需要顺序,仙湖同一个project,否则加reference。有一个默认命名空间,所有namespace都可以访问。
变量强制初始化,数组不能越界访问,没有全局变量(用static代替)
bool类型只能接受true/false,不接受0或者1.
C#中struct不能继承
Properties既不共有也不私有,是包内访问。
-internal public的一个分支
-readonly(const)能在构造函数中初始化,const只能在声明时初始化。
-sealed 不能继承。
-unsafe 指针
委托Delegate:可理解为函数指针。
  
反射Reflection:   
You can use reflection to dynamically create an instance of a type, bind the type to an existing object, or get the type from an existing object and invoke its method or access ites fields and properties. If you are using attributes in your code, Reflection enables you to access them.   
主要用途:查找一个对象的类型,从一个dll中查找方法名,访问属性attribute(方法和类前面的标签)标签实际上相当于生成了一个类,但是是晚绑定的。
P267 LINQ: Language Integrated Query
MSMQ微软消息队列,Message,Queue消息的最终理解方式,为消息传递的双方实现商定。公共队列在整个消息队列网络中复制,并可能由网络连接的所有站点访问。专用队列尽在所驻留的本地计算机上可用。只能由知道队列的完整路径名或标签的应用程序访问。管理队列包含确认在给定消息队列网络中发送的消息回执的信息。相应队列包含目标应用程序接收消息时返回给发送应用程序的相应程序。Queue是公共存储空间,可以是内存或是物理文件。消息可以通过快递express和可恢复模式recoverable,区别在于前者存于内存,后者在磁盘。
优点:稳定、消息优先级、脱机能力、安全性。
缺点:不适合Client需要和Server实时通讯,大量请求时相应延迟。
.NetRemoting,分布式,不支持你先脱机消息,只适合net平台间程序的通信,分布式组件DCOM的升级,通过channel进程间通信。有四种通道:HttpChannel,远程对象在ASP.NET中,需要主机名字和端口号;TcpChannel,远程对象驻留在操作系统服务或其他可执行文件中;IPCChannel,只适用同一个系统内;自定义通道,可以适用任何基本的传输协议UDP\SMTP\IPX\消息队列等机制进行通行,不提供任何内置的安全功能。远程对象要继承橙子MarshalByRefObject类,这个可以使远程对象子啊remoting应用通信中适用,支持对象的跨域边界访问。激活方式:服务器端激活WellKnow方式,统一资源标识符URI;客户端激活;代理Proxy
COM+和EnterpriseService
WebService支持机器与机器的通过网络互操作的软件系统。XML标记语言,用来描述数据。适用文档类型定义DTD或者模式Schema来描述数据。SOAP:简单对象访问协议,基于XML的协议,包括封装envelop,编码规则,远程过程调用和应答协议,SOAPbinding;绑定,适用底层协议交换信息。WSDL:UDDI。
分为四类:Bussiness-Oriented;Consumer-Oriented;Device-Oriented;System-Oriented
发布方式:IIS托管;Console;windowsService
优点:跨平台;自描述;模块化;跨防火墙。
缺点:效率低下,不适合单应用系统的开发;安全问题,自身没有安全机制。


 C#高级编程下载 更多精彩书评


 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024