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 相关文章推荐
NT IIS下用ODBC连接数据库
Oct 09 PHP
PHP连接access数据库
Mar 27 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
Jun 21 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
PHP实现多图片上传类实例
Jul 26 PHP
php生成QRcode实例
Sep 22 PHP
Yii入门教程之目录结构、入口文件及路由设置
Nov 25 PHP
PHP利用APC模块实现文件上传进度条的方法
Jan 26 PHP
php实现以只读方式打开文件的方法
Mar 16 PHP
PHP实现linux命令tail -f
Feb 22 PHP
php观察者模式应用场景实例详解
Feb 03 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 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 ADODB使用方法集锦
2008/03/25 PHP
详解phpstorm2020最新破解方法
2020/09/17 PHP
Prototype Number对象 学习
2009/07/19 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
总结jQuery插件开发中的一些要点
2016/05/16 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
Vue递归实现树形菜单方法实例
2018/11/06 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
Python urlopen 使用小示例
2008/09/06 Python
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
简单了解Python中的几种函数
2017/11/03 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
selenium+python配置chrome浏览器的选项的实现
2020/03/18 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
汽车专业毕业生自荐信
2013/11/03 职场文书
校园文化建设方案
2014/02/03 职场文书
年会主持词结束语
2014/03/27 职场文书
大学生评语大全
2014/04/18 职场文书
公司联欢会策划方案
2014/05/19 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
个人合伙协议书范本
2014/10/14 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
2015年社区流动人口工作总结
2015/05/12 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python