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实现rc4加密算法代码
Apr 25 PHP
实现PHP多线程异步请求的3种方法
Jan 17 PHP
php采集内容中带有图片地址的远程图片并保存的方法
Jan 03 PHP
PHP实现阳历到农历转换的类实例
Mar 07 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
Apr 08 PHP
PHP使用file_get_content设置头信息的方法
Feb 14 PHP
php文件上传的两种实现方法
Apr 04 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
May 16 PHP
php对接java现实加签验签的实例
Nov 25 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
Jun 10 PHP
PHP设计模式之原型模式定义与用法详解
Apr 03 PHP
浅谈PHP中的那些魔术常量
Dec 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
用文本文件制作留言板提示(下)
2006/10/09 PHP
php&mysql 日期操作小记
2012/02/27 PHP
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
ThinkPHP 模板substr的截取字符串函数详解
2017/01/09 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
详解json在php中的应用
2018/09/30 PHP
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
jQuery入门知识简介
2010/03/04 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
Vue.js学习教程之列表渲染详解
2017/05/17 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
基于axios 的responseType类型的设置方法
2019/10/29 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
2020/02/17 Javascript
Vue 中使用lodash对事件进行防抖和节流操作
2020/07/26 Javascript
python解析模块(ConfigParser)使用方法
2013/12/10 Python
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
Python二分法搜索算法实例分析
2015/05/11 Python
python生成圆形图片的方法
2020/03/25 Python
浅析python redis的连接及相关操作
2019/11/07 Python
Python自省及反射原理实例详解
2020/07/06 Python
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
公司司机岗位职责范本
2014/03/03 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
保安辞职信范文
2015/02/28 职场文书
会议主持人开场白台词
2015/05/28 职场文书
离职证明范本
2015/06/12 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang
vue动态绑定style样式
2022/04/20 Vue.js