C#中靜態(tài)方法和實(shí)例化方法的區(qū)別、使用
1、定義方法的格式
訪問(wèn)修飾符 返回類型 方法名 (參數(shù)列表) { // 方法的主體… }
2、靜態(tài)方法
在大多數(shù)時(shí)候,我們定義寫一個(gè)方法,會(huì)把方法區(qū)分為實(shí)例化方法(普通方法)和靜態(tài)方法。
用static修飾一個(gè)方法,就是靜態(tài)方法。
public string InstanceMethod()//定義一個(gè)實(shí)例化方法(普通方法) { return "實(shí)例化方法(普通方法)"; } public static string StacticMethod()//定義一個(gè)靜態(tài)方法 { return "靜態(tài)方法"; }
3、靜態(tài)方法和實(shí)例化方法的區(qū)別
(1)靜態(tài)方法和實(shí)例方法,在加載時(shí)機(jī)上是一樣的,在類型第一次被使用的時(shí)候加載,調(diào)用的速度基本上沒(méi)有差別
(2)靜態(tài)方法和實(shí)例化方法在本質(zhì)上都是方法,所以在內(nèi)存中,無(wú)論是靜態(tài)方法還是實(shí)例化方法,在內(nèi)存中都只保存一份
(3)如果一個(gè)方法,與他所在的類的事例對(duì)象無(wú)關(guān),那么它就應(yīng)該是靜態(tài)的,而不應(yīng)該把它寫成實(shí)例方法。
從面向?qū)ο蟮慕嵌葋?lái)說(shuō),在抉擇使用靜態(tài)方法還是實(shí)例化方法,應(yīng)該依據(jù)這個(gè)方法和實(shí)例化對(duì)象是否有邏輯關(guān)系
(4)靜態(tài)方法只與類有關(guān),它不依賴于對(duì)象的存在而存在;實(shí)例方法則在對(duì)象存在后才能使用。
普通方法、靜態(tài)方法的使用
實(shí)例化方法:需要實(shí)例化對(duì)象,用對(duì)象點(diǎn)出來(lái)。
靜態(tài)方法:直接用類名點(diǎn)出來(lái),不需要實(shí)例化對(duì)象。
(1)如果兩個(gè)方法都是實(shí)例化方法(普通方法),那么可以直接用方法名調(diào)用
public void Eat() { Console.WriteLine("吃飯!"); Sleep();//直接調(diào)用Sleep方法 } public void Sleep() { Console.WriteLine("睡覺(jué)!"); }
(2)如果兩個(gè)方法都是靜態(tài)方法, 那么可以直接用方法名調(diào)用
public static void Hello() { Console.WriteLine("Hello!"); } public static void Music() { Hello();//直接調(diào)用Hello方法 }
(3)在靜態(tài)方法中調(diào)用非靜態(tài)方法,那么要先創(chuàng)建對(duì)象,再通過(guò)對(duì)象名.方法名()
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp4 { class Program { static void Main(string[] args) { Program a = new Program();//先創(chuàng)建一個(gè)對(duì)象 a.Hello();//通過(guò) 對(duì)象名.方法名(),來(lái)調(diào)用方法 Console.ReadLine(); } public void Hello() { Console.WriteLine("Say Hello!"); } } }
(4)在非靜態(tài)方法中,可以使用靜態(tài)方法
public void Name() { Hello();//在非靜態(tài)方法中,直接調(diào)用靜態(tài)方法 } public static void Hello() { Console.WriteLine("Say Hello!"); }
以上就是C#中靜態(tài)方法和實(shí)例化方法的區(qū)別、使用的詳細(xì)內(nèi)容,更多關(guān)于C# 靜態(tài)方法和實(shí)例化方法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C#實(shí)現(xiàn)將應(yīng)用程序設(shè)置為開(kāi)機(jī)啟動(dòng)的方法
這篇文章主要介紹了C#實(shí)現(xiàn)將應(yīng)用程序設(shè)置為開(kāi)機(jī)啟動(dòng)的方法,涉及C#針對(duì)注冊(cè)表的寫入技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09讀寫XML文件的內(nèi)容并將其顯示在ListView控件上的方法
下面小編就為大家?guī)?lái)一篇讀寫XML文件的內(nèi)容并將其顯示在ListView控件上的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02C# 關(guān)于LoadLibrary的疑問(wèn)詳解
這篇文章主要介紹了C# 關(guān)于LoadLibrary的疑問(wèn)詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08Unity?UGUI的MaskableGraphic可遮罩圖形組件介紹使用
這篇文章主要為大家介紹了Unity?UGUI的MaskableGraphic可遮罩圖形組件介紹使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07C#?DataSet結(jié)合FlyTreeView實(shí)現(xiàn)顯示樹(shù)狀模型數(shù)據(jù)
NineRays.WebControls.FlyTreeView?是?9rays.net?推出的一款功能強(qiáng)大的樹(shù)狀模型數(shù)據(jù)顯示控件,本文主要介紹了如何使用其并結(jié)合?DataSet對(duì)象進(jìn)行數(shù)據(jù)顯示,感興趣的可以了解下2024-04-04基于WPF實(shí)現(xiàn)經(jīng)典紙牌游戲
這篇文章主要為大家詳細(xì)介紹了如何溧陽(yáng)WPF實(shí)現(xiàn)經(jīng)典紙牌游戲,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)WPF有一定的幫助,需要的可以參考一下2023-02-02