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通过COM使用ADODB的简单例子
Dec 31 PHP
php设计模式 FlyWeight (享元模式)
Jun 26 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
Jun 10 PHP
php程序总是提示验证码输入有误解决方案
Jan 07 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
php+mysql实现简单登录注册修改密码网页
Nov 30 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 PHP
PHP PDOStatement::bindColumn讲解
Jan 30 PHP
在PHP中输出JS语句以及乱码问题的解决方案
Feb 13 PHP
php模式设计之观察者模式应用实例分析
Sep 25 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
Apr 01 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/07/16 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
PHP编写简单的App接口
2016/08/28 PHP
PHP信号处理机制的操作代码讲解
2019/04/19 PHP
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
2013/01/08 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
JS实现搜索关键词的智能提示功能
2017/07/07 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
python利用OpenCV2实现人脸检测
2020/04/16 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
python实现简单的tcp 文件下载
2020/09/16 Python
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
幼儿园安全检查制度
2014/01/30 职场文书
2013年军训通讯稿
2014/02/05 职场文书
《小动物过冬》教学反思
2014/04/17 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书