- 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);
}
}