C#中静态方法和实例化方法的区别、使用

作者:一杯清酒邀明月 时间:2023-08-25 20:49:33 

1、定义方法的格式


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

2、静态方法

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

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


public string InstanceMethod()//定义一个实例化方法(普通方法)
{
 return "实例化方法(普通方法)";
}
public static string StacticMethod()//定义一个静态方法
{
 return "静态方法";
}

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

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

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

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

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

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

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

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

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

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


public void Eat()
{
Console.WriteLine("吃饭!");
Sleep();//直接调用Sleep方法
}
public void Sleep()
{
Console.WriteLine("睡觉!");
}

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


public static void Hello()
{
Console.WriteLine("Hello!");
}
public static void Music()
{
Hello();//直接调用Hello方法
}

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


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();//先创建一个对象
 a.Hello();//通过 对象名.方法名(),来调用方法
 Console.ReadLine();
}
public void Hello()
{
 Console.WriteLine("Say Hello!");
}
}
}

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


public void Name()
{
Hello();//在非静态方法中,直接调用静态方法
}
public static void Hello()
{
Console.WriteLine("Say Hello!");
}

来源:https://www.cnblogs.com/ybqjymy/p/12502185.html

标签:C#,静态方法,实例化方法
0
投稿

猜你喜欢

  • Spring存储与读取Bean对象方法

    2021-11-12 03:35:27
  • Spring Boot实现配置文件的自动加载和刷新功能

    2023-07-14 02:26:55
  • C#窗体布局方式详解

    2023-09-26 11:17:32
  • win7中C#的winForm编程使用savefiledialog不能弹出保存窗体的解决方法

    2022-09-18 07:27:57
  • Spring Boot 整合JPA 数据模型关联使用操作(一对一、一对多、多对多)

    2022-11-18 23:14:29
  • Java线程池的几种实现方法和区别介绍

    2023-12-12 12:46:04
  • SpringBoot打jar包遇到的xml文件丢失的解决方案

    2023-04-11 23:39:06
  • 简单谈谈android studio 的单元测试

    2021-08-21 14:52:30
  • 常用Eclipse快捷方式(推荐)

    2022-01-22 04:37:56
  • Android后端服务器的搭建方法

    2022-05-07 19:38:04
  • C++ 实现球迷 今日头条面试题

    2022-07-08 11:03:24
  • Kotlin Lambda表达式实践使用介绍

    2023-08-16 06:11:14
  • C#几种截取字符串的方法小结

    2023-07-16 09:55:10
  • SpringBoot封装响应数据实现过程详解

    2023-01-17 21:32:51
  • Android 验证码功能实现代码

    2023-06-12 23:19:06
  • Java类初始化和实例化中的2个“雷区”

    2021-12-13 00:48:18
  • Android Bluetooth蓝牙技术使用流程详解

    2022-07-07 02:41:16
  • SpringBoot + validation 接口参数校验的思路详解

    2023-10-09 11:59:12
  • java搜索无向图中两点之间所有路径的算法

    2023-11-10 09:28:26
  • SpringCloud超详细讲解微服务网关Gateway

    2021-09-11 14:54:49
  • asp之家 软件编程 m.aspxhome.com