C#基础概念之extern 是什么意思?
extern 修饰符用于声明由程序集外部实现的成员函数,经常用于系统API函数的调用(通过 DllImport )。注意,和DllImport一起使用时要加上 static 修饰符,也可以用于对于同一程序集不同版本组件的调用(用 extern 声明别名),不能与 abstract 修饰符同时使用。
示例:
复制
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace Example03 { class Program { //注意DllImport是一个Attribute Property,
在System.Runtime.InteropServices命名空间中定义 //extern与DllImport一起使用时必须再加上一个static修饰符[DllImport("User32.dll")] public static extern int MessageBox
(int Handle, string Message, string Caption, int Type); static int Main(){ string myString; Console.Write("Enter your message: "); myString = Console.ReadLine(); return MessageBox(0, myString, "My Message Box", 0); }
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
C#基础概念之abstract 是什么意思?
abstract 修饰符可以用于类、方法、属性、事件和索引指示器(indexer),表示其为抽象成员,abstract 不可以和 static 、virtual 、override 一起使用,声明为 abstract 成员可以不包括实现代码,但只有类中还有未实现的抽象成员,该类就不可以被实例化,通常用于强制继承类必须实现某一成员
示例:
复制
using System; using System.Collections.Generic; using System.Text; namespace Example04 { public abstract class BaseClass { //抽象属性,同时具有get和set访问器表示继承类必须将该属性实现为可读写 public abstract String Attribute { get; set; } //抽象方法,传入一个字符串参数无返回值 public abstract void Function(String value); //抽象事件,类型为系统预定义的代理(delegate): EventHandler public abstract event EventHandler Event; //抽象索引指示器,只具有get访问器表示继承类必须将该索引指示器实现为只读 public abstract Char this[int Index] { get; } public class DeriveClass : BaseClass { private String attribute; public override String Attribute { get { return attribute; } set { attribute = value; } public override void Function(String value){ attribute = value; if (Event != null){ Event(this, new EventArgs()); } public override event EventHandler Event; public override Char this[int Index] { get { return attribute[Index]; } class Program { static void OnFunction(object sender, EventArgs e){ for (int i = 0; i < ((DeriveClass)sender)。Attribute.Length; i++){ Console.WriteLine(((DeriveClass)sender)[i]); } static void Main(string[] args){ DeriveClass tmpObj = new DeriveClass(); tmpObj.Attribute = "1234567";Console.WriteLine(tmpObj.Attribute); //将静态函数OnFunction与tmpObj对象的Event事件进行关联 tmpObj.Event += new EventHandler(OnFunction); tmpObj.Function("7654321"); Console.ReadLine(); }
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
C#基础概念之internal 修饰符起什么作用?
internal 修饰符可以用于类型或成员,使用该修饰符声明的类型或成员只能在同一程集内访问,接口的成员不能使用 internal 修饰符
示例:
复制
using System; using System.Collections.Generic; using System.Text; namespace Example05Lib { public class Class1 { internal String strInternal = null; public String strPublic; }
1.
2.
3.
4.
5.
6.
7.
8.
9.
【编辑推荐】