C#中靜態(tài)方法和實(shí)例化方法的區(qū)別、使用
1、定義方法的格式
訪問(wèn)修飾符 返回類(lèi)型 方法名 (參數(shù)列表)
{
// 方法的主體…
}
2、靜態(tài)方法
在大多數(shù)時(shí)候,我們定義寫(xiě)一個(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ī)上是一樣的,在類(lèi)型第一次被使用的時(shí)候加載,調(diào)用的速度基本上沒(méi)有差別
(2)靜態(tài)方法和實(shí)例化方法在本質(zhì)上都是方法,所以在內(nèi)存中,無(wú)論是靜態(tài)方法還是實(shí)例化方法,在內(nèi)存中都只保存一份
(3)如果一個(gè)方法,與他所在的類(lèi)的事例對(duì)象無(wú)關(guān),那么它就應(yīng)該是靜態(tài)的,而不應(yīng)該把它寫(xiě)成實(shí)例方法。
從面向?qū)ο蟮慕嵌葋?lái)說(shuō),在抉擇使用靜態(tài)方法還是實(shí)例化方法,應(yīng)該依據(jù)這個(gè)方法和實(shí)例化對(duì)象是否有邏輯關(guān)系
(4)靜態(tài)方法只與類(lèi)有關(guān),它不依賴于對(duì)象的存在而存在;實(shí)例方法則在對(duì)象存在后才能使用。
普通方法、靜態(tài)方法的使用
實(shí)例化方法:需要實(shí)例化對(duì)象,用對(duì)象點(diǎn)出來(lái)。
靜態(tài)方法:直接用類(lè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#如何根據(jù)Model字段名稱自動(dòng)匹配并替換值
這篇文章主要為大家詳細(xì)介紹了如何使用 C# 反射機(jī)制實(shí)現(xiàn)一個(gè)靈活的模板引擎,能夠根據(jù) Model 字段名稱自動(dòng)匹配并替換模板中的占位符,需要的可以了解下2025-04-04
C#實(shí)現(xiàn)簡(jiǎn)易計(jì)算器功能(2)(窗體應(yīng)用)
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡(jiǎn)易計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
C#動(dòng)態(tài)執(zhí)行字符串(動(dòng)態(tài)創(chuàng)建代碼)的實(shí)例代碼
在編寫(xiě)C#程序的時(shí)候,有時(shí)我們需要?jiǎng)討B(tài)生成一些代碼并執(zhí)行。然而C#不像JavaScript有一個(gè)Eval函數(shù),可以動(dòng)態(tài)的執(zhí)行代碼。所有這些功能都要我們自己去完成2013-03-03
C#實(shí)現(xiàn)的二維數(shù)組排序算法示例
這篇文章主要介紹了C#實(shí)現(xiàn)的二維數(shù)組排序算法,涉及C#針對(duì)二維數(shù)組的遍歷、判斷、排序等相關(guān)操作技巧,需要的朋友可以參考下2017-12-12
c# 使用谷歌身份驗(yàn)證GoogleAuthenticator的示例
這篇文章主要介紹了c# 使用谷歌身份驗(yàn)證GoogleAuthenticator的示例,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2021-01-01
UnityShader使用Plane實(shí)現(xiàn)翻書(shū)效果
這篇文章主要為大家詳細(xì)介紹了UnityShader使用Plane實(shí)現(xiàn)翻書(shū)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07

