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 相关文章推荐
php5数字型字符串加解密代码
Apr 24 PHP
zen cart新进商品的随机排序修改方法
Sep 10 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
May 10 PHP
如何使用FireFox插件FirePHP调试PHP
Jul 23 PHP
对于PHP 5.4 你必须要知道的
Aug 07 PHP
php获取目录所有文件并将结果保存到数组(实例)
Oct 25 PHP
php多文件上传下载示例分享
Feb 20 PHP
使用PHP生成二维码的两种方法(带logo图像)
Mar 14 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
PHP7内核之Reference详解
Mar 14 PHP
Smarty模板类内部原理实例分析
Jul 03 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中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
BootStrap扔进Django里的方法详解
2016/05/13 Javascript
Vue2.0父子组件传递函数的教程详解
2017/10/16 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
Vue基础配置讲解
2019/11/29 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
详解在Python中处理异常的教程
2015/05/24 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
找到不普通的东西:Bonanza
2016/10/20 全球购物
Java如何获得ResultSet的总行数
2016/09/03 面试题
客服实习的个人自我鉴定
2013/10/20 职场文书
心理学专业毕业生推荐信范文
2013/11/21 职场文书
校园环保建议书
2014/05/14 职场文书
2015年电话销售工作总结范文
2015/04/20 职场文书
利用python进行数据加载
2021/06/20 Python
Java基于字符界面的简易收银台
2021/06/26 Java/Android
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js