<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # virtual(C# 參考) **virtual** 關鍵字用于修飾方法、屬性、索引器或事件聲明,并使它們可以在派生類中被重寫。例如,此方法可被任何繼承它的類重寫。 ``` public virtual double Area() { return x * y; } ``` 虛擬成員的實現可由派生類中的[重寫成員](https://msdn.microsoft.com/zh-cn/library/ebca9ah3.aspx)更改。有關如何使用 **virtual** 關鍵字的更多信息,請參見[使用 Override 和 New 關鍵字進行版本控制(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/6fawty39.aspx)和[了解何時使用 Override 和 New 關鍵字(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/ms173153.aspx)。 ## 備注 調用虛方法時,將為重寫成員檢查該對象的運行時類型。將調用大部分派生類中的該重寫成員,如果沒有派生類重寫該成員,則它可能是原始成員。 默認情況下,方法是非虛擬的。不能重寫非虛方法。 **virtual** 修飾符不能與 **static**、**abstract, private** 或 **override** 修飾符一起使用。下面的示例演示一個虛擬屬性: ``` class MyBaseClass { // virtual auto-implemented property. Overrides can only // provide specialized behavior if they implement get and set accessors. public virtual string Name { get; set; } // ordinary virtual property with backing field private int num; public virtual int Number { get { return num; } set { num = value; } } } class MyDerivedClass : MyBaseClass { private string name; // Override auto-implemented property with ordinary property // to provide specialized accessor behavior. public override string Name { get { return name; } set { if (value != String.Empty) { name = value; } else { name = "Unknown"; } } } } ``` 除了聲明和調用語法不同外,虛擬屬性的行為與抽象方法一樣。 * 在靜態屬性上使用 **virtual** 修飾符是錯誤的。 * 通過包括使用 **override** 修飾符的屬性聲明,可在派生類中重寫虛擬繼承屬性。 在該示例中,Shape 類包含 x、y 兩個坐標和 Area() 虛方法。不同的形狀類,如 Circle、Cylinder 和 Sphere 繼承 Shape 類,并為每個圖形計算表面積。每個派生類都有各自的 Area() 重寫實現。 通知繼承的類 Circle、 Sphere和 Cylinder 初始化基類的所有使用構造函數,如以下聲明所示。 ``` public Cylinder(double r, double h): base(r, h) {} ``` 下面的過程通過調用 Area() 方法的適當實現計算并顯示由每個圖形的合適區域,根據與該方法的對象。 ``` class TestClass { public class Shape { public const double PI = Math.PI; protected double x, y; public Shape() { } public Shape(double x, double y) { this.x = x; this.y = y; } public virtual double Area() { return x * y; } } public class Circle : Shape { public Circle(double r) : base(r, 0) { } public override double Area() { return PI * x * x; } } class Sphere : Shape { public Sphere(double r) : base(r, 0) { } public override double Area() { return 4 * PI * x * x; } } class Cylinder : Shape { public Cylinder(double r, double h) : base(r, h) { } public override double Area() { return 2 * PI * x * x + 2 * PI * x * y; } } static void Main() { double r = 3.0, h = 5.0; Shape c = new Circle(r); Shape s = new Sphere(r); Shape l = new Cylinder(r, h); // Display results: Console.WriteLine("Area of Circle = {0:F2}", c.Area()); Console.WriteLine("Area of Sphere = {0:F2}", s.Area()); Console.WriteLine("Area of Cylinder = {0:F2}", l.Area()); } } /* Output: Area of Circle = 28.27 Area of Sphere = 113.10 Area of Cylinder = 150.80 */ ``` ## C# 語言規范 有關詳細信息,請參閱 [C# 語言規范](https://msdn.microsoft.com/zh-cn/library/ms228593.aspx)。該語言規范是 C# 語法和用法的權威資料。 ## 請參閱 [C# 參考](https://msdn.microsoft.com/zh-cn/library/618ayhy6.aspx) [C# 編程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx) [修飾符(C# 參考)](https://msdn.microsoft.com/zh-cn/library/6tcf2h8w.aspx) [C# 關鍵字](https://msdn.microsoft.com/zh-cn/library/x53a06bb.aspx) [多態性(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/ms173152.aspx) [abstract(C# 參考)](https://msdn.microsoft.com/zh-cn/library/sf985hc5.aspx) [override(C# 參考)](https://msdn.microsoft.com/zh-cn/library/ebca9ah3.aspx) [new(C# 參考)](https://msdn.microsoft.com/zh-cn/library/51y09td4.aspx)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看