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 相关文章推荐
基于mysql的bbs设计(五)
Oct 09 PHP
关于php内存不够用的快速解决方法
Oct 26 PHP
php对包含html标签的字符串进行截取的函数分享
Jun 19 PHP
PHP缓存机制Output Control详解
Jul 14 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
Codeigniter的一些优秀特性总结
Jan 21 PHP
PHP数组函数知识汇总
May 12 PHP
Yii输入正确验证码却验证失败的解决方法
Jun 06 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
php-fpm中max_children的配置
Mar 15 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 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
基于pear auth实现登录验证
2010/02/26 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
2017/07/11 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
JavaScript WeakMap使用详解
2021/02/05 Javascript
[01:30:54]《加油DOTA》 第三期
2014/08/18 DOTA
Python中的高级数据结构详解
2015/03/27 Python
Python实现Windows上气泡提醒效果的方法
2015/06/03 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
Tensorflow使用支持向量机拟合线性回归
2018/09/07 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
经典优秀毕业生求职信范文分享
2013/12/18 职场文书
2014年五一劳动节社区活动总结
2014/04/14 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
大学毕业生管理学求职信
2014/09/01 职场文书
沙滩主题婚礼活动策划方案
2014/09/15 职场文书
劳动仲裁调解书
2015/05/20 职场文书
致创业您:正能量激励人心句子(48条)
2019/08/15 职场文书
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL