C# 2008核心编程(20130713)

C# 2008引入了一些新的东西如LINQ、WCF、WPF,其中由LINQ引入的新的特征包括lambda表达式、扩展方法、表达式树(表达式目录树),匿名对象、隐式类型等。

每个源文件都是一个编译单元

using 指令:隐式的使用命名空间,为命名空间创建别名。

using指令必须放在一个名称空间内的第一个成员之前。

如果引用的一个dll中包含一个Anamespace.B.namespace.ClassC.MethodD(),在工程中同样包换一个Anamespace.B.namespace.ClassC.MethodD()。如果想调用dll中的MethodD()而不是工程中的MethodD()可以使用extern alias为程序集创建别名。在工程中声明 extern alias Test,调用方法时使用Test::Anamespace.B.namespace.ClassC.MethodD(),编译工程时使用csc Program.cs /r:Test=*.dll,或者添加引用时设置属性

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace ClassLibraryTest
 8 {
 9     namespace Test
10     {
11         public class Class1
12         {
13             public static void MethodA()
14             {
15                 Console.WriteLine("ClassLibraryTest.Test.Class1.MethodA");
16             }
17         }
18     }
19 }
 1 extern alias test;
 2 using System;
 3 using System.Collections.Generic;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7 
 8 
 9 namespace ConsoleApplicationReference
10 {
11     class Program
12     {
13         static void Main(string[] args)
14         {
15             test::ClassLibraryTest.Test.Class1.MethodA();
16             Console.ReadKey();
17         }
18     }
19 }
20 
21 namespace ClassLibraryTest
22 {
23     namespace Test
24     {
25         public class Class1
26         {
27             public static void MethodA()
28             {
29                 Console.WriteLine("NOClassLibraryTest.Test.Class1.MethodA");
30             }
31         }
32     }
33 } 

Main函数有四种签名:static void Main()

                             static int Main()

                             static void Main(string [] args)

                             static int Main(string [] args)

Main函数必须为静态的且为私有的,如果不传递任何参数,args也不是null,但数组长度为零,其返回值在内部缓存起来供进程间通信使用,退出代码存储在进程环境块(Process Environment Block)中,可以通过GetExitCodeProcess应用程序编程接口进行访问。

如果程序中有两个Main函数可以使用编译器指定使用哪一个:csc /main:AnameSpace.BClass main.cs.

可空类型:int? a=null;增加了HasValue和Value两个属性,当为空的时候HasValue为false;

空结合运算符(??) variable ?? value,如果可空类型包含一个值,则表达式等于该值,如果为空,则表达式为value.

原文地址:https://www.cnblogs.com/chunchengwuchu/p/3188286.html