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);
- }
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();
- }
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;
- }
【编辑推荐】