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 相关文章推荐
关于Intype一些小问题的解决办法
Mar 28 PHP
仿AS3实现PHP 事件机制实现代码
Jan 27 PHP
php在服务器执行exec命令失败的解决方法
Mar 03 PHP
使用Sphinx对索引进行搜索
Jun 25 PHP
php基于socket实现SMTP发送邮件的方法
Mar 05 PHP
功能强大的php文件上传类
Aug 29 PHP
PHP实现接收二进制流转换成图片的方法
Jan 10 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
php用xpath解析html的代码实例讲解
Feb 14 PHP
Thinkphp 框架扩展之类库扩展操作详解
Apr 23 PHP
PHP 技巧 * SVG 保存为图片(分享图生成)
Apr 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 inc文件使用的风险和注意事项
2013/11/12 PHP
php导入模块文件分享
2015/03/17 PHP
PHP基于新浪IP库获取IP详细地址的方法
2017/05/04 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
Using the TextRange Object
2006/10/14 Javascript
Javascript的一种模块模式
2008/03/22 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
python实现logistic分类算法代码
2020/02/28 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
解释一下ArrayList Vector和LinkedList的实现和区别
2013/04/26 面试题
煤矿班组长岗位职责
2013/12/29 职场文书
2014年情人节活动方案
2014/02/16 职场文书
2014年元旦感言
2014/03/06 职场文书
安全保证书范文
2014/04/29 职场文书
热爱祖国的演讲稿
2014/05/04 职场文书
财务情况说明书范文
2014/05/06 职场文书
文明礼仪标语
2014/06/13 职场文书
2014医学院领导班子对照检查材料思想汇报
2014/09/19 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL