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

C#方法

編輯: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)注意:僅有一個元素時,沒有必要使用索引器進行訪問,索引器專門針對於數組進行索引

 

 

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