1.Flags
以Flags特性来将枚举数值看作位标记,而非单独的数值
如果没有DllImport 程序会报错。


1 [Flags]
2 enum Animal
3 {
4 Dog = 1,
5 Cat = 2,
6 Duck = 4,
7 Chicken = 8
8 }
9
10 public class Test
11 {
12 public static void Main()
13 {
14 Animal ans = Animal.Cat | Animal.Dog;
15 Console.WriteLine(ans.ToString());
16 }
17 }
2 enum Animal
3 {
4 Dog = 1,
5 Cat = 2,
6 Duck = 4,
7 Chicken = 8
8 }
9
10 public class Test
11 {
12 public static void Main()
13 {
14 Animal ans = Animal.Cat | Animal.Dog;
15 Console.WriteLine(ans.ToString());
16 }
17 }
如果没有Flags特性,这里的结果将是"3"。 如果有Flags特性 则是:"Cat, Dog"。
2.DllImport
DllImport特性,可以让我们调用非托管代码,所以我们可以使用DllImport特性引入对Win32 API函数的调用,对于习惯了非托管代码的程序员来说,这一特性无疑是救命的稻草。


1 [DllImport("User32.dll")]
2 public static extern int MessageBox(int hParent,string msg,string caption,int type);
3 public static int Main()
4 {
5 return MessageBox(0,"net","_NET",0);
6 }
2 public static extern int MessageBox(int hParent,string msg,string caption,int type);
3 public static int Main()
4 {
5 return MessageBox(0,"net","_NET",0);
6 }