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 相关文章推荐
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
May 04 PHP
一个简单php扩展介绍与开发教程
Aug 19 PHP
header跳转和include包含问题详解
Sep 08 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
Codeigniter实现多文件上传并创建多个缩略图
Jun 12 PHP
PHP中常用的字符串格式化函数总结
Nov 19 PHP
php实现字符串首字母转换成大写的方法
Mar 17 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
Mar 19 PHP
php超快高效率统计大文件行数
Jul 05 PHP
PHP简单检测网址是否能够正常打开的方法
Sep 04 PHP
PHP实现的日历功能示例
Sep 01 PHP
Yii框架小部件(Widgets)用法实例详解
May 15 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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
php简单图像创建入门实例
2015/06/10 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
js中的replace方法使用介绍
2013/10/28 Javascript
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
实现图片预加载的三大方法及优缺点分析
2014/11/19 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
Nodejs 识别图片类型的方法
2019/08/15 NodeJs
react quill中图片上传由默认转成base64改成上传到服务器的方法
2019/10/30 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
js+css实现全屏侧边栏
2020/06/16 Javascript
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
Python数据库小程序源代码
2019/09/15 Python
python 利用百度API识别图片文字(多线程版)
2020/12/14 Python
Trip.com香港网站:Ctrip携程旗下,全球最大的网上旅游社之一
2016/08/01 全球购物
本科生个人求职自荐信
2013/09/26 职场文书
玩具公司的创业计划书
2013/12/31 职场文书
小学毕业家长寄语
2014/01/19 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
Redis持久化与主从复制的实践
2021/04/27 Redis
MySQL里面的子查询的基本使用
2021/08/02 MySQL
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS