C# 方法的定義

一、static關鍵字
  1、靜態方法與實例化方法的區別:
  a)訪問、調用方式:
  靜態方法:調用前初始化
  實例化方法:實例化對象時初始化
  b)靜態字段:在程序編譯時就預先分配空間,訪問效率更快
  實例化字段:執行到該代碼段時才分配空間,需要關鍵字 new
  2、靜態調用關鍵字:static
  靜態方法能訪問到其他靜態成員,不能訪問實例成員
  例:
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  namespace 靜態方法
  {
  public class Test
  {
  private static int member;
  //實例方法訪問靜態字段
  public void Way(int num)
  {
  member = num;
  }
  //靜態方法訪問靜態字段
  public static void Show()
  {
  Console.WriteLine("Value of member:"+member);
  }
  }
  class Program
  {
  static void Main(string[] args)
  {
  Test test = new Test();
  //對象調用實例方法
  test.Way(40);
  Test.Show();
  }
  }
  }
  3、靜態類:若類上加上static 關鍵字,則該類中的成員必須爲靜態成員,且不能繼承靜態類

  二、方法重載

  1、含義:在同一個類中,方法名相同,參數數據類型、個數或順序不同的方法
  2、例:
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  namespace ConsoleApplication4
  {
  public class Student
  {
  public void Show1(int num1, int num2)
  {
  Console.WriteLine("兩個整數相加爲:{0}",num1+num2);
  }
  public void Show2(string sign1, string sign2)
  {
  Console.WriteLine("兩個字符串相加等於:{0}",sign1+sign2);
  }
  }
  class Program
  {
  static void Main(string[] args)
  {
  Student student = new Student(); //得到Student類的對象
  student.Show1(12,21);
  student.Show2("Hello", "girl");
  }
  }
  }
  三、構造函數:與類名相同,初始化成員變量
  1、特徵:
  a):無返回值
  b):可重載
  c):任何對象要創建成功必須先調用相應的構造函數再對屬性進行賦值
  2、語法:
  訪問修飾符 類名(參數列表)
  {
  //構造函數主體
  }
  3、默認構造函數
  a)若類中沒有顯示定義構造函數,編譯器會自動提供一個隱式的默認的不帶參數的構造函數,當顯示的定義了構造函數時,編譯器則不會提供,若要使用默認的構造函數,則需顯示定義
  例:Student 類中聲明兩個構造函數
  public class Student
  {
  private int no;
  private string name;
  //定義一個帶int參數的構造函數
  public Student(int num){ }
  //定義一個帶string參數的構造函數
  public Student(string name) { }
  } 調用構造方法實例化對象
  Student student = new Student(); //錯誤 沒有不帶參數的構造函數 需要在Student類中手動定義一個無參數的構造函數
  public Student(){}4、帶參數的構造函數
  例:
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  namespace 帶參數的構造函數
  {
  public class Program
  {
  public int num;
  public string name;
  //無參數的構造函數中初始化兩個字段
  public Program()
  {
  num = 39;
  name = "Shelly";
  }
  //帶int參數的構造函數
  public Program(int id)
  {
  num = id;
  name = "Shelly"
  }
  //帶string參數的構造函數
  public Program(string sname)
  {
  num = 49;
  name = sname;
  }
  public void Print()
  {
  Console.WriteLine("name={0},num={1}",name,num);
  }
  static void Main(string[] args)
  {
  //實例化對象
  Program p1 = new Program();
  p1.Print();
  //int
  Program p2 = new Program(29);
  p2.Print();
  //string
  Program p3 = new Program("Hi");
  p3.Print();
  }
  }

  }


  5、靜態構造函數:不需要訪問修飾符
  例:
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  namespace 靜態構造函數
  {
  public class Test
  {
  //靜態字段
  private static int num;
  //靜態構造函數
  static Test()
  {
  num = 10;
  Console.WriteLine("num="+num);
  }
  static void Main(string[] args)
  {
  Test test = new Test();
  }
  }
  }


  6、析構函數
  析構方法的重要內容:
  1) 不帶參數
  2) 每個類中有且只有一個
  3) 不帶訪問修飾符
  4) 與類名相同,以~作前綴
  5) 不能在代碼中顯示調用析構方法,在垃圾收集過程中調用,垃圾器分析代碼,並確定在代碼中沒有任何途徑引用該對象
  注意:若不需要就避免執行,只應釋放對象自己外部的資源,不應該訪問其他對象

  例:
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  namespace 析構函數
  {
  public class ShowClass1
  {
  public ShowClass1()
  {
  Console.WriteLine("調用構造函數:ShowClass1");
  }
  ~ShowClass1()
  {
  Console.WriteLine("調用析構函數:ShowClass1");
  }
  }
  public class ShowClass2
  {
  public ShowClass2()
  {
  Console.WriteLine("調用構造函數:ShowClass2");
  }
  ~ShowClass2()
  {
  Console.WriteLine("調用析構函數:ShowClass2");
  }
  public void test()
  {
  ShowClass1 sc1 = new ShowClass1();
  ShowClass2 sc2 = new ShowClass2();
  }
  }
  class Program
  {
  static void Main(string[] args)
  {
  //析構函數調用
  Program pro = new Program();
  pro.test();
  Console.WriteLine();
  }
  //析構函數的實例化
  public void test()
  {
  ShowClass1 sc1 = new ShowClass1();
  ShowClass2 sc2 = new ShowClass2();
  }
  }
  }
  構造函數與析構函數不同點:
  1)實例化:構造函數:創建類的每個新實例時調用一次
  析構函數:在每個實例被銷燬前調用
  2)靜態:構造函數:只調用一次,在類的任意靜態變量第一次被訪問之前,或在實例被創建之前
  析構函數:不存在,只有實例纔有析構函數
  7、readonly關鍵字
  1)、與const不同點:
  字段初始化:readonly:可以在聲明字段時初始化,也可在構造函數中初始化
  const:只能在聲明時初始化
  字段狀態:readonly:可靜態頁可非靜態
  const:總是靜態
  2)、例:
  public class Evaluation
  {
  public int x;
  //聲明readonly字段
  public readonly int y = 25; //在聲明時初始化值
  public readonly int z;
  public Evaluation(int x)
  {

  this.x = x;
  //在構造函數中初始化值
  z = 25;
  Console.WriteLine("x={0},y={1},z={2}",x,y,z);
  }
  public Evaluation(int num1,int num2,int num3)
  {
  x = num1;
  y = num2;
  z = num3;
  Console.WriteLine("x={0},y={1},z={2}", x, y, z);
  }
  }
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  class Program
  {
  static void Main(string[] args)
  {
  //readonly關鍵字在聲明或構造函數中初始化
  Evaluation show = new Evaluation(11,21,31);
  Evaluation show2 = new Evaluation(22);
  }
  }

  View Code


  8、this關鍵字:在類中訪問自身成員,常用在索引器中
  使用範圍:實例化構造函數、實例方法、屬性和索引的實力訪問器、用於區分類的成員和本地變量或參數、作爲調用方法的實參
  例:
  public Round(double r)
  {
  this.r=r;//用於區分類成員和參數
  }
  9、索引器:對象的數組訪問器
  a)使用範圍:在任何可以聲明屬性的地方都可聲明
  b)語法:
  訪問修飾符 數據類型 this [數據類型 標識符]
  {
  get{};
  set{};
  }
  c)注意:僅有一個元素時,沒有必要使用索引器進行訪問,索引器專門針對於數組進行索引

解決問題的思路


往下:半小時一次


往上:固定上傳,出錯做異步拋掉數據


低於250:算次數
高於250:固定積分
規則


監控端:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章