C#静态方法与非静态方法实例分析


Posted in PHP onSeptember 22, 2014

本文实例分析了C#静态方法与非静态方法,并对其用法进行了较为全面的分析。分享给大家供大家参考。具体分析如下:

通常来说,C#的类中可以包含两种方法:静态方法和非静态方法。

使用了static 修饰符的方法为静态方法,反之则是非静态方法

静态方法是一种特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要首先创建一个类的实例,而是采用 类名.静态方法 的格式 。

1)static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用。
static内部只能出现static变量和其他static方法,而且static方法中还不能使用this等关键字,因为它是属于整个类。

2)静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。

3)静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。

4)那么在程序中什么地方可以利用静态字段和静态构造方法,通常适用于于一些不会经常变化而又频繁使用的数据,比如连接字符串,配置信息等,当满足上面所说的两点时,进行一次读取,以后就可以方便的使用了,同时也节约了托管资源,因为对于静态成员,一个静态字段只标识一个存储位置。对一个类无论创建了多少个实例,它的静态字段永远都只有一个副本。

静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员。因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员。公用的处理函数,使用静态方法应该没有问题,牵涉到数据共享,静态变量的函数要多考虑,静态变量要小心使用。

静态方法:
原理就是共享代码段;
共享代码段不会产生任何问题;
因为代码段都是给CPU作为"读取"用的,除非你进行恶意"修改"运行时的代码段;
所以静态方法是可以放心使用的;

静态变量:
原理就是共享数据段;
只要没有进行"写入"操作就不会产生问题,但是数据通常都是用于读和写,所以静态变量要注意使用;

下面是一个使用静态方法的简单例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
 class Program
 {
 static void Main(string[] args)
 {
  int i = MyClass.Add(7, 11); //调用静态方法
  Console.WriteLine(i);
  Console.ReadKey();
 }


 }
 class MyClass
 {

 public static int Add(int x, int y)
 {
  return x + y;
 }
 }
}
输出结果:18

希望本文所述对大家C#程序设计的学习有所帮助。

PHP 相关文章推荐
PHP入门学习的几个不错的实例代码
Jul 13 PHP
php设计模式 Strategy(策略模式)
Jun 26 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
Aug 21 PHP
初识php MVC
Sep 10 PHP
php之readdir函数用法实例
Nov 13 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
Jan 11 PHP
PHP实现ASCII码与字符串相互转换的方法
Apr 29 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 PHP
laravel 根据不同组织加载不同视图的实现
Oct 14 PHP
浅谈PHP中的那些魔术常量
Dec 02 PHP
php操作csv文件代码实例汇总
Sep 22 #PHP
PHP提示Cannot modify header information - headers already sent by解决方法
Sep 22 #PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 #PHP
PHP中exec与system用法区别分析
Sep 22 #PHP
PHP-Java-Bridge使用笔记
Sep 22 #PHP
11个PHPer必须要了解的编程规范
Sep 22 #PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
Sep 22 #PHP
You might like
php你的验证码安全码?
2007/01/02 PHP
Discuz 5.0 中读取纯真IP数据库函数分析
2007/03/16 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
如何重写Laravel异常处理类详解
2020/12/20 PHP
Array对象方法参考
2006/10/03 Javascript
Javascript - HTML的request类
2007/01/09 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
js获取系统的根路径实现介绍
2013/09/08 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
jquery实现倒计时功能
2015/12/28 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
AngularJS使用拦截器实现的loading功能完整实例
2017/05/17 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
node内置调试方法总结
2018/02/22 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
详解vue 兼容IE报错解决方案
2018/12/29 Javascript
读懂CommonJS的模块加载
2019/04/19 Javascript
vue.js 子组件无法获取父组件store值的解决方式
2019/11/08 Javascript
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
Django model update的多种用法介绍
2020/03/28 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
圣诞树世界:Christmas Tree World
2019/12/10 全球购物
鲜果饮品店创业计划书
2014/01/21 职场文书
数据保密承诺书
2014/06/03 职场文书
安全承诺书
2015/01/19 职场文书
家长对孩子的寄语
2015/02/26 职场文书
创业计划书之熟食店
2019/10/16 职场文书
Ajax实现三级联动效果
2021/10/05 Javascript
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL