亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

理解C#編程中的靜態類和靜態成員以及密封類

2020-01-24 01:18:39
字體:
來源:轉載
供稿:網友

靜態類
靜態類與非靜態類基本相同,但存在一個區別:靜態類不能實例化。也就是說,不能使用 new 關鍵字創建靜態類類型的變量。因為沒有實例變量,所以要使用類名本身訪問靜態類的成員。例如,如果名為 UtilityClass 的靜態類有一個名為 MethodA 的公共方法,則按下面的示例所示調用該方法:

UtilityClass.MethodA();

對于只對輸入參數進行運算而不獲取或設置任何內部實例字段的方法集,靜態類可以方便地用作這些方法集的容器。例如,在 .NET Framework 類庫中,靜態類 System.Math 包含的方法只執行數學運算,而無需存儲或檢索特定 Math 類實例特有的數據。就是說,通過指定類名稱和方法名稱來應用類成員,如下示例所述。

double dub = -3.14;Console.WriteLine(Math.Abs(dub));Console.WriteLine(Math.Floor(dub));Console.WriteLine(Math.Round(Math.Abs(dub)));

輸出:

3.14-4 3


和所有類類型一樣,當加載引用靜態類的程序時,.NET Framework 公共語言運行時 (CLR) 將加載該靜態類的類型信息。程序不能指定加載靜態類的確切時間。但是,可以保證在程序中首次引用該類前加載該類,并初始化該類的字段并調用其靜態構造函數。靜態構造函數僅調用一次,在程序駐留的應用程序域的生存期內,靜態類一直保留在內存中。

靜態類的主要特性:

  • 僅包含靜態成員。
  • 無法實例化。
  • 是密封的。
  • 不能包含實例構造函數。


因此,創建靜態類與創建僅包含靜態成員和私有構造函數的類基本相同。私有構造函數阻止類被實例化。使用靜態類的優點在于,編譯器能夠執行檢查以確保不致偶然地添加實例成員。編譯器將保證不會創建此類的實例。
靜態類是密封的,因此不可被繼承。它們不能從除 Object 外的任何類中繼承。靜態類不能包含實例構造函數,但可以包含靜態構造函數。如果非靜態類包含需要進行重要的初始化的靜態成員,也應定義靜態構造函數。

下面是一個靜態類的示例,它包含兩個在攝氏溫度和華氏溫度之間執行來回轉換的方法:

public static class TemperatureConverter{ public static double CelsiusToFahrenheit(string temperatureCelsius) {  // Convert argument to double for calculations.  double celsius = Double.Parse(temperatureCelsius);  // Convert Celsius to Fahrenheit.  double fahrenheit = (celsius * 9 / 5) + 32;  return fahrenheit; } public static double FahrenheitToCelsius(string temperatureFahrenheit) {  // Convert argument to double for calculations.  double fahrenheit = Double.Parse(temperatureFahrenheit);  // Convert Fahrenheit to Celsius.  double celsius = (fahrenheit - 32) * 5 / 9;  return celsius; }}class TestTemperatureConverter{ static void Main() {  Console.WriteLine("Please select the convertor direction");  Console.WriteLine("1. From Celsius to Fahrenheit.");  Console.WriteLine("2. From Fahrenheit to Celsius.");  Console.Write(":");  string selection = Console.ReadLine();  double F, C = 0;  switch (selection)  {   case "1":    Console.Write("Please enter the Celsius temperature: ");    F = TemperatureConverter.CelsiusToFahrenheit(Console.ReadLine());    Console.WriteLine("Temperature in Fahrenheit: {0:F2}", F);    break;   case "2":    Console.Write("Please enter the Fahrenheit temperature: ");    C = TemperatureConverter.FahrenheitToCelsius(Console.ReadLine());    Console.WriteLine("Temperature in Celsius: {0:F2}", C);    break;   default:    Console.WriteLine("Please select a convertor.");    break;  }  // Keep the console window open in debug mode.  Console.WriteLine("Press any key to exit.");  Console.ReadKey(); }}

輸出:

 Please select the convertor direction 1. From Celsius to Fahrenheit. 2. From Fahrenheit to Celsius. :2 Please enter the Fahrenheit temperature: 20 Temperature in Celsius: -6.67 Press any key to exit.

靜態成員
非靜態類可以包含靜態的方法、字段、屬性或事件。即使沒有創建類的實例,也可以調用該類中的靜態成員。始終通過類名而不是實例名稱訪問靜態成員。無論對一個類創建多少個實例,它的靜態成員都只有一個副本。靜態方法和屬性不能訪問其包含類型中的非靜態字段和事件,并且不能訪問任何對象的實例變量(除非在方法參數中顯式傳遞)。
更常見的做法是聲明具有一些靜態成員的非靜態類,而不是將整個類聲明為靜態類。靜態字段有兩個常見的用法:一是記錄已實例化對象的個數,二是存儲必須在所有實例之間共享的值。
靜態方法可以被重載但不能被重寫,因為它們屬于類,不屬于類的任何實例。
雖然字段不能聲明為 static const,但 const 字段的行為在本質上是靜態的。這樣的字段屬于類型,不屬于類型的實例。因此,可以同對待靜態字段一樣使用 ClassName.MemberName 表示法來訪問 const 字段。不需要對象實例。
C# 不支持靜態局部變量(在方法范圍內聲明的變量)。
通過在成員的返回類型之前使用 static 關鍵字可以聲明靜態類成員,如下面的示例所示:

public class Automobile{ public static int NumberOfWheels = 4; public static int SizeOfGasTank {  get  {   return 15;  } } public static void Drive() { } public static event EventType RunOutOfGas; // Other non-static fields and properties...}

靜態成員在第一次被訪問之前并且在調用靜態構造函數(如有存在)之前進行初始化。若要訪問靜態類成員,應使用類名而不是變量名來指定該成員的位置,如下面的示例所示:

Automobile.Drive();int i = Automobile.NumberOfWheels;

如果類包含靜態字段,請提供在加載類時初始化這些字段的靜態構造函數。
對靜態方法的調用以 Microsoft 中間語言 (MSIL) 生成調用指令,而對實例方法的調用生成 callvirt 指令,該指令還檢查 null 對象引用。但是,兩者之間的性能差異在大多數時候并不明顯。

C#的密封類
使用 sealed 關鍵字可以防止繼承以前標記為 virtual 的類或某些類成員。
通過在類定義前面放置關鍵字 sealed,可以將類聲明為密封類。例如:

public sealed class D{ // Class members here.}

密封類不能用作基類。因此,它也不能是抽象類。密封類禁止派生。由于密封類從不用作基類,所以有些運行時優化可以略微提高密封類成員的調用速度。
在對基類的虛成員進行重寫的派生類上,方法、索引器、屬性或事件可以將該成員聲明為密封成員。在用于以后的派生類時,這將取消成員的虛效果。方法是在類成員聲明中將 sealed 關鍵字置于 override 關鍵字的前面。例如:

public class D : C{ public sealed override void DoWork() { }}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美乱大交xxxxx另类电影| 97在线视频一区| 成人免费在线视频网站| 日韩精品免费在线视频| 国产精品久久电影观看| 欧美怡红院视频一区二区三区| 亚洲欧洲自拍偷拍| 亚洲国产日韩欧美在线99| 亚洲电影成人av99爱色| 欧美激情欧美激情| 日韩在线免费高清视频| 精品呦交小u女在线| 欧美中文字幕在线视频| 国产欧美欧洲在线观看| 一本色道久久综合狠狠躁篇的优点| 日韩欧美主播在线| 日韩一区二区三区在线播放| 亚洲精品v天堂中文字幕| 亚洲一区二区三区视频| 日韩激情视频在线播放| 456国产精品| 亚洲精品视频免费| 久久亚洲精品视频| 亚洲欧美日韩精品| 欧美性极品少妇精品网站| 美女性感视频久久久| 亚洲精品自拍第一页| 精品精品国产国产自在线| 久久久av电影| 永久555www成人免费| 欧美精品精品精品精品免费| 久久精品亚洲热| 95av在线视频| 综合欧美国产视频二区| 久久久久久91香蕉国产| 日韩中文字幕在线播放| 国产精品福利观看| 国产精品爽爽爽| 黑人巨大精品欧美一区二区三区| 精品久久久久人成| 国产精品视频精品视频| 欧美激情视频一区二区三区不卡| 国产成人精品在线视频| 日韩精品欧美国产精品忘忧草| 国产91网红主播在线观看| 亚洲日韩中文字幕在线播放| 中文字幕欧美在线| 日韩国产在线看| 亚洲开心激情网| 色综合91久久精品中文字幕| 亚洲午夜未满十八勿入免费观看全集| 亚洲第一区第二区| 国产精品香蕉在线观看| 亚洲美女激情视频| 亚洲一区二区三区四区视频| 成人午夜激情网| 91精品成人久久| 欧美亚洲成人xxx| 久久久爽爽爽美女图片| 国产精品高潮在线| 亚洲天堂开心观看| 亚洲经典中文字幕| 在线亚洲国产精品网| 欧美一区三区三区高中清蜜桃| 日韩免费高清在线观看| 懂色av一区二区三区| 日韩中文字幕不卡视频| 美女扒开尿口让男人操亚洲视频网站| 亚洲色图综合久久| 久久69精品久久久久久国产越南| 欧美猛交ⅹxxx乱大交视频| 欧美大片免费看| 国产精品久久久久免费a∨| 91在线免费看网站| 在线播放日韩av| 日本午夜在线亚洲.国产| 久久久噜噜噜久久中文字免| 91久久久久久| 欧美激情亚洲视频| 91av在线视频观看| 亚洲最大av网| 亚洲欧洲一区二区三区在线观看| 日韩在线欧美在线国产在线| 国产视频精品久久久| 668精品在线视频| 欧美日韩999| 91久久久久久久久| 热久久99这里有精品| 久久99热精品这里久久精品| 欧美午夜激情在线| 日本久久中文字幕| 成人免费淫片aa视频免费| 国产精品偷伦免费视频观看的| 国产精品午夜国产小视频| 77777亚洲午夜久久多人| 欧美网站在线观看| 911国产网站尤物在线观看| 亚洲图片欧美日产| 少妇久久久久久| 欧美精品少妇videofree| 国产精品电影观看| 亚洲美女喷白浆| 国产精品久久久久久久久久久新郎| 国产成人激情小视频| 日本一区二区三区四区视频| 成人一区二区电影| 国产精品久久久久久久久久久不卡| 日韩欧美极品在线观看| 欧美激情视频给我| 青青在线视频一区二区三区| 欧美性xxxxxxxxx| 日韩久久午夜影院| 91chinesevideo永久地址| 97国产成人精品视频| 久热精品视频在线观看| 欧美激情小视频| 亚洲v日韩v综合v精品v| 久久精品夜夜夜夜夜久久| 国产一区红桃视频| 久久久成人的性感天堂| 精品一区二区三区四区在线| 777777777亚洲妇女| 久久天天躁狠狠躁老女人| 欧美日韩美女在线观看| 亚洲美女av在线播放| 国产日韩av高清| 国产美女久久精品| 国产日本欧美一区二区三区| 成人a级免费视频| 日本精品视频在线观看| 国产精品久久久久久久久久| 亚洲欧洲国产精品| 国产精品一区专区欧美日韩| 姬川优奈aav一区二区| 欧美日韩国产黄| 欧美午夜美女看片| 成人美女免费网站视频| 久久综合色影院| 国产精品激情av在线播放| 国产性色av一区二区| 欧美精品在线免费观看| 成人黄色av网站| 国产精品aaa| 久久琪琪电影院| 91在线视频一区| 欧美黑人巨大xxx极品| 亚洲人成网7777777国产| 91视频九色网站| 久久这里只有精品99| 亚洲第一偷拍网| 亚洲一区亚洲二区| 欧美香蕉大胸在线视频观看| 日韩电影中文字幕在线| 国产精品永久免费观看| 97精品国产97久久久久久春色| 国产精品va在线播放| 亚洲欧洲在线播放| 亚洲天堂第一页| 成人国产在线激情| 国产aⅴ夜夜欢一区二区三区| 欧美日韩性视频| 亚洲欧美国产精品专区久久| 久99九色视频在线观看| 国产精品ⅴa在线观看h|