程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#基本語法:Base症結字進修筆記

C#基本語法:Base症結字進修筆記

編輯:C#入門知識

C#基本語法:Base症結字進修筆記。本站提示廣大學習愛好者:(C#基本語法:Base症結字進修筆記)文章只能為提供參考,不一定能成為您想要的結果。以下是C#基本語法:Base症結字進修筆記正文


它與this症結字一樣,都是作為類的實例(是以不克不及挪用基類的靜態成員和籠統成員)簡寫或許替換而存在的,只不外this症結字用於替換本類的實例,base症結字用於替換基類的實例,用法很簡略,其拜訪基類的情勢以下: 

base.【標識符】

base[【表達式列表】]      這個類型的一看即可以年夜概猜想多用於基類實例的索引器操作,在我上面演示的代碼中你會看到它的用法。

關於  base.【標識符】的拜訪情勢再次解釋一下:

關於非虛辦法,這類拜訪僅僅是對基類實例成員的直接拜訪,完整等價於((base)this).【標識符】。

關於虛辦法,關於這類訪子類重寫該虛辦法應用這類拜訪情勢也是(禁用了虛辦法挪用的機制)對基類實例成員的直接拜訪,將其看作非虛辦法處置,此時則不等價於((base)this).【標識符】,由於這類格局完整遵照虛辦法挪用的機制,其聲明試時為積聚類型,運轉時為子類類型,所以履行的照樣子類的重寫辦法。於未重寫的虛辦法同等於簡略的非虛辦法處置。

測試代碼以下:

using System;

namespace BaseTest
{
  class father
  {
    string str1 = "this field[1] of baseclass", str2 = "this field[2] of baseclass";
    public void F1() //Non-virtual method
    {
      Console.WriteLine(" F1 of the baseclass");
    }
    public virtual void F2()//virtual method
    {
      Console.WriteLine(" F2 of the baseclass");
    }
    public virtual void F3()
    {
      Console.WriteLine(" F3 of the baseclass that is not overrided "); 
    }
    public string this[int index]
    {
      set
      {
        if (index==1 )
        {
          str1 = value;
        }
        else
        {
          str2 = value;
        }
      }
      get
      {
        if (index ==1)
        {
          return str1;
        }
        else
        {
          return str2;
        }
      }
    }
  }
  class Child:father
  {
    public void G()
    {
      Console.WriteLine("======Non-virtual methods Test =========");
      base.F1();
      ((father)this).F1();
      Console.WriteLine("======virtual methods Test=========");
      base.F2();
      ((father)this).F2();
      base.F3();
      ((father)this).F3();
      Console.WriteLine("=====Test the type that the tbase [[expression]] ==========");
      Console.WriteLine(base[1]);
      base[1] = "override the default ";
      Console.WriteLine(base[1]);
      Console.WriteLine("================Test Over=====================");
    }
    public override void F2()
    {
      Console.WriteLine(" F2 of the subclass ");
    }
    
    static void Main(string[] args)
    {
      Child child=new Child();
      child.G();
      Console.ReadKey();
    }
  }
}


base用於結構函數聲明,用法和this用於結構函數聲明完整分歧,但base是對基類結構函數形參的婚配。

 

using System;

namespace BaseCoTest
{
  class Base
  {
    public Base(int a, string str)
    {
      Console.WriteLine("Base. Base(int a,string str)");
    }
    public Base(int a)
    {
      Console.WriteLine("Base. Base(int a)");
    }
    public Base()
    {
    }
  }
  class Sub : Base
  {
    public Sub()
    {
    }
    public Sub(int a)
      : base(1, "123")
    {
      Console.WriteLine("Sub .Sub(int a)");
    }
    class Test
    {
      public static void Main()
      {
        Sub sub = new Sub(1);
        Console.ReadKey();
      }
    }
  }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved