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!"); }
以上就是C#中静态方法和实例化方法的区别、使用的详细内容,更多关于C# 静态方法和实例化方法的资料请关注我们其它相关文章!
相关推荐
-
C# 静态变量与静态方法实例研究
程序如下: 复制代码 代码如下: public static string 英汉(string english,翻译结果 一个或多个) { string 英汉辞典 = Settings.Default.辞典所在目录+"haou_dict.xml"; try { if (File.Exists(英汉辞典)) { XDocument dictionary = XDocument.Load(英汉辞典); var query = from p in dictionary.Descendants
-
C#中实现抽象类里建立静态方法
本文简述了C#中实现抽象类里建立静态方法的解决办法,示例程序如下: public class TestMain { public static void main(String[] args) { AbstractTest.out(); } } 如上面所示的程序是可以运行的. 一般情况下抽象类中可以包含抽象方法和非抽象方法,静态类中只能包含静态成员,所有的静态成员也只能包含在静态类中. 因为静态static的本质是包含abstract和sealed的,所以静态方法可以包含在抽象类中,并通过抽象类
-
C#中的静态成员、静态方法、静态类介绍
1.静态成员.实例成员 1.1定义及说明 数据成员: 静态成员:静态成员变量是和类相关联的,可以作为类中"共"有的变量(是一个共性的表现),他不依赖特定对象的存在,访问的时候通过类名加点操作符加变量名来访问. 实例成员:实例成员变量是和对象相关联的,访问实例成员变量依赖于实例的存在. 函数成员: 静态方法:静态方法是不属于特定对象的方法,静态方法可以访问静态成员变量和静态方法:静态方法不可以直接访问实例变量和实例方法,可以间接调用,首先要创建一个类的实例,然后通过这一特定对象来调用静态
-
浅析C#中静态方法和非静态方法的区别
静态方法和非静态方法的区别: 1.静态方法不需要类实例化就可以调用,反之非静态方法需要实例化后才能调用: 2.静态方法只能访问静态成员和方法,非静态方法都可以访问: 3.静态方法不能标记为override,导致派生类不能重写,但是可以访问: 4.静态成员是在第一次使用时进行初始化.非静态的成员是在创建对象的时候,从内存分配上来说静态是连续的,非静态在内存的存储上是离散的,因此静态方法和非静态方法,在调用速度上,静态方法速度一定会快点,因为非静态方法需要实例化,分配内存,但静态方法不用,但是这种速
-
c#静态方法和非静态方法详细介绍
C#的类中可以包含两种方法:静态方法和非静态方法. 使用了static 修饰符的方法为静态方法,反之则是非静态方法. 静态方法是一种 特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身.所以对静态方法不需要 首先创建一个类的实例,而是采用类名.静态方法的格式 .1.static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用!static内部只能出现static变量和其他static方法!而且static方法中还不能使用this....等关键字..因为它是 属于整
-
C#静态方法与非静态方法实例分析
本文实例分析了C#静态方法与非静态方法,并对其用法进行了较为全面的分析.分享给大家供大家参考.具体分析如下: 通常来说,C#的类中可以包含两种方法:静态方法和非静态方法. 使用了static 修饰符的方法为静态方法,反之则是非静态方法. 静态方法是一种特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身.所以对静态方法不需要首先创建一个类的实例,而是采用 类名.静态方法 的格式 . 1)static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用. static内部
-
详解Kotlin中如何实现类似Java或C#中的静态方法
大家可以在网络上搜到不少这样的文章,官方推荐是包级函数,也有人说用伴生对象(companion class).这些都是不错的选择,但并不完善,我们在不同的情况下有更好的选择.我总结了几种方法,分别是:包级函数.伴生对象.扩展函数和对象声明.这需要大家根据不同的情况进行选择. 一.包级函数 Kotlin和Java及C#不同的是,可以在包里面直接声明函数.做法和类中是一样的,这里就不多说了,的确是一个非常好的选择.适用于函数不需要不包内部的类进行数据共享的方法. 二.伴生对象 从语义上来讲,伴生函数
-
C#中静态方法和实例化方法的区别、使用
1.定义方法的格式 访问修饰符 返回类型 方法名 (参数列表) { // 方法的主体- } 2.静态方法 在大多数时候,我们定义写一个方法,会把方法区分为实例化方法(普通方法)和静态方法. 用static修饰一个方法,就是静态方法. public string InstanceMethod()//定义一个实例化方法(普通方法) { return "实例化方法(普通方法)"; } public static string StacticMethod()//定义一个静态方法 { retur
-
详谈php静态方法及普通方法的区别
如下所示: <?php header('content-type:text/html;charset=utf-8'); /* 普通方法,存放类内,只有一份 静态方法,也是存放于类内,只有一份 区别在于:普通方法需要对象去调用,需要绑定$this 即,普通方法,必须要有对象,然后让对象来调用 而静态方法,不属于哪一个对象,因此不需要绑定$this 即,不需要对象也可以调用 */ class Human{ static public $head=1; public function easyeat(
-
深入理解关于javascript中apply()和call()方法的区别
如果没接触过动态语言,以编译型语言的思维方式去理解javaScript将会有种神奇而怪异的感觉,因为意识上往往不可能的事偏偏就发生了,甚至觉得不可理喻.如果在学JavaScript这自由而变幻无穷的语言过程中遇到这种感觉,那么就从现在形始,请放下的您的"偏见",因为这对您来说绝对是一片新大陆,让JavaScrip慢慢融化以前一套凝固的编程意识,注入新的生机! 好,言归正传,先理解JavaScrtipt动态变换运行时上下文特性,这种特性主要就体现在apply, call两个方法的运用上.
-
java中构造方法和普通方法的区别说明
1.普通方法: 定义:简单的说方法就是完成特定功能的代码块. 普通方法定义格式: 修饰符 返回值类型 方法名 (参数类型 参数名1,参数类型 参数名2,.........) { 函数体: return 返回值: } 返回值类型用于限定返回值的数据类型. 普通方法分为:有明确返回值的方法和没有明确返回值的方法. A.有明确返回值的方法的调用 可以单独调用(无意义).输出调用.赋值调用(推荐). public static int sum (int a , int b) { int c =a+b;
-
Python中静态方法,类方法,属性方法使用方法
目录 1.静态方法 2.类方法 3.静态方法与类方法总结 4.属性方法 1.静态方法 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法 应用: 对与一个类,我们要调用它的一个方法,必须要绑定实例,
-
js正则表达式中test,exec,match方法的区别说明
js正则表达式中test,exec,match方法的区别说明 test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var reg = new RegExp("1.", "");alert(reg.test(str)); // true exec exec 查找并返回当前的匹配结果,并以数组的形式返回.var str = "1a1b1c";var reg = new R
-
JavaScript中递归实现的方法及其区别
递归函数:递归函数是在通过名字调用自身的情况下构成的. 递归实现阶乘函数: 方法一:通过使用函数的名字 function factorial(num){ if(num<=1){ return 1; }else{ return num*factorial(num-1); } } console.log(factorial(4)); 结果为:24: 但是这种方法实现递归有一个问题,观察以下代码: function factorial(num){ if(num<=1){ return 1; }els
-
Go语言中普通函数与方法的区别分析
本文实例分析了Go语言中普通函数与方法的区别.分享给大家供大家参考.具体分析如下: 1.对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,反之亦然. 2.对于方法(如struct的方法),接收者为值类型时,可以直接用指针类型的变量调用方法,反过来同样也可以. 以下为简单示例: 复制代码 代码如下: package structTest //普通函数与方法的区别(在接收者分别为值类型和指针类型的时候) //Date:2014-4-3 10:00:07 import (
-
Java中==运算符与equals方法的区别及intern方法详解
Java中==运算符与equals方法的区别及intern方法详解 1. ==运算符与equals()方法 2. hashCode()方法的应用 3. intern()方法 /* Come from xixifeng.com Author: 习习风(StellAah) */ public class AboutString2 { public static void main(String[]arsgs) { String myName="xixifeng.com"; String
-
java 中sendredirect()和forward()方法的区别
HttpServletResponse.sendRedirect与RequestDispatcher.forward方法都可以实现获取相应URL资源. sendRedirect实现请求重定向,forward实现的是请求转发. 在web服务器内部的处理机制也是不一样的. 1. 跳转方式 运用forward方法只能重定向到同一个Web应用程序中的一个资源.而sendRedirect方法可以让你重定向到任何URL. 表单form的action= "/uu ";sendRedirect( &q
随机推荐
- Vue v2.5 调整和更新不完全问题
- Lua中的文件I/O操作教程
- 简化SQL Server备份与还原到云工作原理及操作方法
- jquery动态增加text元素以及删除文本内容实例代码
- AngularJs定时器$interval 和 $timeout详解
- JavaScript的原型继承详解
- 用JavaScript显示浏览器客户端信息的超相近教程
- 关于华为设备产品型号解释
- Bootstrap列表组学习使用
- VS2013安装提示必须安装ie10的解决办法
- 浅析Android App的相对布局RelativeLayout
- 扩展JavaScript功能的正确方法(译文)
- 浅析Node.js 中 Stream API 的使用
- JS实现兼容性较好的随屏滚动效果
- javascript动画效果打开/关闭层
- vbs实现右键菜单中添加CMD HERE
- Java持久层框架MyBatis简单实例
- jQuery图片的展开和收缩实现代码
- 在Debian系的Linux中编译并安装ixgbe驱动的教程
- ViewPager顶部导航栏联动效果(标题栏条目多)