C#中静态方法和实例化方法的区别、使用
作者:一杯清酒邀明月 发布时间:2023-08-25 20:49:33
标签:C#,静态方法,实例化方法
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
0
投稿
猜你喜欢
- 本文实例为大家分享了利用多线程和Socket实现猜拳游戏的具体代码,供大家参考,具体内容如下实例:猜拳游戏猜拳游戏是指小时候玩的石头、剪刀、
- seata-1.4.0安装及使用 1、简介Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。
- 首先微信公众号开发网页授权登录使用环境:开发工具:eclipse;服务器:tomcat8,开发语言:JAVA。我写的网页授权登录时用开发者模
- 前言Mybatis作为一个应用广泛的优秀的ORM框架,已经成了JavaWeb世界近乎标配的部分,这个框架具有强大的灵活性,在四大组件(Exe
- 该说不唠,直接上代码。可直接复制使用package com.yuezhi.util;import java.math.BigDecimal;
- 1. 增强for概述增强for循环,也叫Foreach循环,用于数组和容器(集合类)的遍历。使用foreach循环遍历数组和集合元素时,无需
- Java中的Static class详解Java中的类可以是static吗?答案是可以。在Java中我们可以有静态实例变量、静态
- Semaphore 通常用于限制可以访问某些资源(物理或逻辑的)的线程数目。自从5.0开始,jdk在java.util.concurrent
- 谷歌官方推出了一种侧滑菜单的实现方式(抽屉效果),即 DrawerLayout,这个类是在Support Library里的,需要加上and
- SSM在Controller中添加事务管理本人使用:集成开发环境:idea项目管理工具:maven数据库:oracle框架:Spring+S
- 本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序的数据缓存功能。在Spring Boot应用程序中,我们可
- Mybatis所需要的jar包:需要引用两个jar包,一个是mybatis,另一个是MySQL-connector-Java,如果是mave
- java8的stream流能完美解对象集合去重问题. List<UserCar> list1 = new ArrayList()
- 委托:委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。委托(Delegate)特别用于实现事件和回
- JNI中的java接口使用项目需求,需要在c++函数中监听相应的状态,并在java端进行一些列的处理。这个需要在JNI中写一个subscri
- 采集器概貌,如下:最近做一个项目,功能类似于CNZZ站长统计功能,要求显示Ip所在的省份市区/提供商等信息。网上的Ip纯真数据库,下载下来一
- 前言基于SpingBoot框架中, 我们随处可以见的便是各种各样的功能注解, 注解的实现原理AOP之前有说过(翻看本系列的前面几章即可),
- FTPS:一种多传输协议,相当于加密版的FTP。当你在FTP服务器上收发文件的时候,你面临两个风险。第一个风险是在上载文件的时候为文件加密。
- 说到事件机制,可能脑海中最先浮现的就是日常使用的各种 listener,listener去监听事件源,如果被监听的事件有变化就会通知list
- C#中的null与SQL中的NULL是不一样的,SQL中的NULL用C#表示出来就是DBNull.Value。注意:SQL参数是不能接受C#