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连接Oracle数据库
Oct 09 PHP
PHP产生随机字符串函数
Dec 06 PHP
php 接口类与抽象类的实际作用
Nov 26 PHP
支持数组的ADDSLASHES的php函数
Feb 16 PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 PHP
php上传文件并存储到mysql数据库的方法
Mar 16 PHP
PHP5多态性与动态绑定介绍
Apr 03 PHP
php+mysql实现简单的增删改查功能
Jul 13 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
PHP curl批处理及多请求并发实现方法分析
Aug 15 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
Apr 23 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检测图片木马多进制编程实践
2013/04/11 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
PHP封装的非对称加密RSA算法示例
2018/05/28 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
JavaScript中的私有/静态属性介绍
2012/07/26 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
Immutable 在 JavaScript 中的应用
2016/05/02 Javascript
总结jQuery插件开发中的一些要点
2016/05/16 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
解决html input验证只能输入数字,不能输入其他的问题
2017/07/21 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
elementUI 设置input的只读或禁用的方法
2018/10/30 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
Python闭包之返回函数的函数用法示例
2018/01/27 Python
pandas object格式转float64格式的方法
2018/04/10 Python
pandas 根据列的值选取所有行的示例
2018/11/07 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
详解python变量与数据类型
2020/08/25 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
药学专业大学生个人的自我评价
2013/11/04 职场文书
硕士研究生自我鉴定
2013/11/08 职场文书
财务管理个人自荐书范文
2013/11/24 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
启动仪式策划方案
2014/06/14 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python
golang定时器
2022/04/14 Golang