1. 程式人生 > >C#學習筆記3

C#學習筆記3

C#多型性

靜態多型性:

  • 函式過載
    C#函式過載與Java類似,可以是引數列表中的引數型別不同,也可以是引數個數不同。

    • 運算子過載:
      可以重新定義或過載C#中內建的運算子,也可以使用使用者自定義型別的運算子。過載運算子是具有特殊名稱的函式,是通過關鍵字operator後跟運算子的符號來定義的。過載運算子有返回型別和引數列表。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OperatorOverloading
{
    class Opreator
    {
        private int length;

        public int Length
        {
            get { return length; }
            set { length = value; }
        }
        private int breadth;

        public int Breadth
        {
            get { return breadth; }
            set { breadth = value; }
        }
        private int height;

        public int Height
        {
            get { return height; }
            set { height = value; }
        }
        public int getVolume()
        {
            return length * breadth * height;
        }
        public static Opreator operator+ (Opreator o1, Opreator o2)
        {
            Opreator o3=new Opreator();
            o3.Height = o1.height + o2.height;
            o3.Length = o1.length + o2.length;
            o3.Breadth = o1.breadth + o2.breadth;
            return o3;
        }

        static void Main(string[] args)
        {
            Opreator o1 = new Opreator();
            Opreator o2 = new Opreator();
            Opreator o3 = new Opreator();

            o1.Breadth = 3;
            o1.Height = 3;
            o1.Length = 3;

            o2.Length = 2;
            o2.Height = 2;
            o2.Breadth = 2;

            o3 = o2 + o1;

            int vol = o3.getVolume();
            Console.WriteLine("{0}",vol);
            Console.ReadKey();
        }
    }
}
  • 運算子過載
    可過載的運算子和不可過載的運算子

動態多型性:

  1. 抽象類
    C#允許使用abstract建立抽象類,用於提供介面的部分類的實現。當一個派生類繼承自該抽象類時,實現即完成。抽象類包含抽象方法,抽象方法可被派生類實現。派生類具有更專業的功能。

     1. 抽象類不能建立例項
     2. 不能在抽象類外部宣告一個抽象方法
     3. 通過在類定義前面放置關鍵字sealed,可以將類宣告為密封類。當一個類被宣告為sealed時,它不能被繼承。抽象類不能被宣告為sealed。
    
  2. 虛方法:
    當有一個定義在類中的函式需要在繼承類中實現時,可以使用虛方法。虛方法使用關鍵字virtual宣告。虛方法可以在不同的繼承類中有不同的實現。對虛方法的呼叫是在執行時發生的。

C#介面:

C#介面與Java類似,使用interface關鍵字宣告,介面宣告預設是public的。

C#前處理器指令:

前處理器指令指導編譯器在實際編譯開始之前對資訊進行預處理
所有的前處理器指令都是以#開始,且在一行上,只有空白字元可以出現在前處理器指令之前。前處理器指令不是語句,所以不以分號結束。
C#編譯器沒有一個單獨的前處理器,但是,指令被處理時就像是有一個單獨的前處理器一樣。在C#中,前處理器指令用於在條件編譯中起作用。與C和C++不同,他們不是用來建立巨集。一個前處理器指令必須是該行上的唯一指令。
C#預處理指令

C# I/O類:

I/O類
FileStream類:
Systom.IO名稱空間中的FileStream類有助於檔案的讀寫與關閉.該類派生自抽象類Stream。
在這裡插入圖片描述


在這裡插入圖片描述