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动态创建Flash动画
Oct 09 PHP
PHP MemCached 高级缓存应用代码
Aug 05 PHP
PHP SEO优化之URL优化方法
Apr 21 PHP
linux命令之调试工具strace的深入分析
Jun 03 PHP
关于PHPDocument 代码注释规范的总结
Jun 25 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
Aug 09 PHP
PHP获取服务器端信息的方法
Nov 28 PHP
ThinkPHP 404页面的设置方法
Jan 14 PHP
PHP实现的数组和XML文件相互转换功能示例
Mar 15 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 23 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
Oct 12 PHP
PHP isset empty函数相关面试题及解析
Dec 11 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将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
PHP获取对象属性的三种方法实例分析
2019/01/03 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
php新建文件的方法实例
2019/09/26 PHP
JavaScript 图片预览效果 推荐
2009/12/22 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
2013/01/08 Javascript
js抽奖实现随机抽奖代码效果
2013/12/02 Javascript
js返回上一页并刷新的多种实现方法
2014/02/26 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
AngularJS快速入门
2015/04/02 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
Vue内部渲染视图的方法
2019/09/02 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
python中的yield使用方法
2014/02/11 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
Python实现扫码工具的示例代码
2020/10/09 Python
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
建筑人员岗位职责
2013/12/25 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
2014年学生会工作总结范文
2014/11/07 职场文书
交通安全月活动总结
2015/05/08 职场文书
golang定时器
2022/04/14 Golang