- static
用于所有成员(函数,类、方法、属性)成员不作用于类的具体实例。因此不需要实例化。
创建的一个Test1类里面包含static静态的属性和方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsFormsApplication3
{
public class Test1
{
public static string a = "123";
string _b = "";
public string b
{
get { return _b; }
set { value = _b; }
}
public static void TestFunction()
{
}
}
}
FORM窗口中调用该函数
Test1.a = "qwe";
Test1.TestFunction();
注意:这是不需要实例化的。
- virtual
用于函数成员,成员可以由派生类重写。用该修饰符修饰的函数可以作为正常的函数使用,也可以在派生类中用override进行重写。 - abstract
对于该修饰符,在我的另一篇微博中作出了详细的讲解。
4.sealed
用于类、方法和属性。对于类不能进行继承只能实例化。对于属性和方法,不是类的每个成员方法都可以作为密封方法,要作为密封方法必须对基类的虚方法进行重写,提供具体的实现方法。
using System ;
class A
{
public virtual void F( )
{
Console.WriteLine("A.F") ;
}
public virtual void G( )
{
Console.WriteLine("A.G") ;
}
}
class B: A
{
sealed override public void F( )
{
Console.WriteLine("B.F") ;
}
override public void G( )
{
Console.WriteLine("B.G") ; }
}
class C: B
{
override public void G( )
{
Console.WriteLine("C.G") ;
}
}
5.extern
extern 修饰符用于声明在外部实现的方法。 extern 修饰符的常见用法是在使用 Interop 服务调入非托管代码时与 DllImport 特性一起使用。 在这种情况下,还必须将方法声明为 static,如下面的示例所示:
[DllImport(“avifil32.dll”)]
private static extern void AVIFileInit();
将 abstract 和 extern 修饰符一起使用来修改同一成员是错误的做法。 使用 extern 修饰符意味着方法是在 C# 代码的外部实现的,而使用 abstract 修饰符意味着类中未提供方法实现。
示例 1. 在此示例中,程序接收来自用户的字符串并将该字符串显示在消息框中。 程序使用从 User32.dll 库导入的 MessageBox 方法。
//using System.Runtime.InteropServices;
class ExternTest
{
[DllImport("User32.dll", CharSet=CharSet.Unicode)]
public static extern int MessageBox(IntPtr h, string m, string c, int type);
static int Main()
{
string myString;
Console.Write("Enter your message: ");
myString = Console.ReadLine();
return MessageBox((IntPtr)0, myString, "My Message Box", 0);
}
}