一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

C#中静态方法和普通方法的区别、使用

1、定义方法的格式

1 访问修饰符 返回类型 方法名 (参数列表)
2 {
3     // 方法的主体…
4 }

2、静态方法

在大多数时候,我们定义写一个方法,会把方法区分为实例化方法(普通方法)和静态方法。

用static修饰一个方法,就是静态方法。

复制代码
1 public string InstanceMethod()//定义一个实例化方法(普通方法)
2 {
3     return "实例化方法(普通方法)";
4 }
5 public static string StacticMethod()//定义一个静态方法
6 {
7     return "静态方法";
8 }
复制代码

3、静态方法和实例化方法的区别

(1)静态方法和实例方法,在加载时机上是一样的,在类型第一次被使用的时候加载,调用的速度基本上没有差别

(2)静态方法和实例化方法在本质上都是方法,所以在内存中,无论是静态方法还是实例化方法,在内存中都只保存一份

(3)如果一个方法,与他所在的类的事例对象无关,那么它就应该是静态的,而不应该把它写成实例方法。

    从面向对象的角度来说,在抉择使用静态方法还是实例化方法,应该依据这个方法和实例化对象是否有逻辑关系

  (4) 静态方法只与类有关,它不依赖于对象的存在而存在;实例方法则在对象存在后才能使用。

普通方法、静态方法的使用

实例化方法:需要实例化对象,用对象点出来。

静态方法:直接用类名点出来,不需要实例化对象。

(1)如果两个方法都是实例化方法(普通方法),那么可以直接用方法名调用

复制代码
1 public void Eat()
2 {
3     Console.WriteLine("吃饭!");
4     Sleep();//直接调用Sleep方法
5 }
6 public void Sleep()
7 {
8     Console.WriteLine("睡觉!");
9 }
复制代码

(2)如果两个方法都是静态方法, 那么可以直接用方法名调用

复制代码
1 public static void Hello()
2 {
3     Console.WriteLine("Hello!");
4 }
5 public static void Music()
6 {
7     Hello();//直接调用Hello方法
8 }
复制代码

(3)在静态方法中调用非静态方法,那么要先创建对象,再通过对象名.方法名()

复制代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace ConsoleApp4
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             Program a = new Program();//先创建一个对象
14             a.Hello();//通过 对象名.方法名(),来调用方法
15             Console.ReadLine();
16         }
17         public void Hello()
18         {
19             Console.WriteLine("Say Hello!");
20         }
21     }
22 }    
复制代码

(4)在非静态方法中,可以使用静态方法

复制代码
1 public void Name()
2 {
3     Hello();//在非静态方法中,直接调用静态方法
4 }
5 public static void Hello()
6 {
7     Console.WriteLine("Say Hello!");
8 }
复制代码

End

posted on   一杯清酒邀明月  阅读(3415)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示