1. 程式人生 > >靜態方法和實例方法

靜態方法和實例方法

不能 static關鍵字 不一定 name oid lin 包括 判斷 特定

判斷是否靜態方法的標識

1) 有static關鍵字:靜態方法

2) 沒用static關鍵字:實例方法

區別:

  1. 靜態方法部隊特定實例進行操作,靜態方法只能訪問類中的靜態成員,而不能實例成員。訪問靜態方法也只能使用類名,而不能創建對象,也不能使用對象名來引用

  1. 實例方法可以使用類的任何成員。調用實例方法時,必須使用類的實例或對象來引用。實例方法對類的某個給定的實例進行操作,在實例方法類中可以使用this來訪問該實例,調用實例方法時,必須先創建一個對象

  靜態方法只能訪問靜態方法

  實例方法可以訪問靜態和實例成員

  之所以不允許靜態方法訪問實例成員變量,時因為實例成員變量時屬於某個對象的,而靜態方法在執行時,並不一定存在對象,同樣,因為實例方法可以訪問實例成員變量,如果允許靜態方法調用實例方法,將間接的允許靜態方法使用實例成員變量,這是錯誤的,基於同樣的道理,靜態方法也不能使用關鍵字this

代碼實例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _8._3靜態方法和實例方法
{
class Program
{
int exampleVar = 0; //實例成員
static int staticVar = 0;//靜態成員
static void staticMethod() //靜態方法
{
//報錯不能引用非靜態的字段
// exampleVar = 1;
//只能使用靜態的字段
staticVar = 1;
}
void exampleMethod() //實例方法
{
//實例中可以調用任何成員,包括靜態與實例成員
exampleVar = 1;
staticVar = 1;
}
static void Main(string[] args)
{
//調用靜態方法一
staticMethod();
//調用靜態方法二
Program.staticMethod();
//調用實例對象必須new出一個新的對象才可以使用
Program p = new Program();

}
}
}

靜態方法和實例方法