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 文件上传功能实现代码
Jun 24 PHP
PHP对象转换为数组函数(递归方法)
Feb 04 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
Aug 10 PHP
php环境下利用session防止页面重复刷新的具体实现
Jan 09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
Jun 30 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PHP多维数组排序array详解
Nov 21 PHP
Laravel 加载第三方类库的方法
Apr 20 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 PHP
laravel实现简单用户权限的示例代码
May 28 PHP
浅谈Laravel模板实体转义带来的坑
Oct 22 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
Layui给switch添加响应事件的例子
2019/09/03 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
python中list循环语句用法实例
2014/11/10 Python
深入理解Python装饰器
2016/07/27 Python
Python实现的弹球小游戏示例
2017/08/01 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
Python基础知识点 初识Python.md
2019/05/14 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
Python用input输入列表的实例代码
2020/02/07 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
留学自荐信
2013/10/10 职场文书
自我推荐书
2013/12/04 职场文书
管理心得体会
2013/12/28 职场文书
汽车维修工岗位职责
2014/02/12 职场文书
医院安全生产月活动总结
2014/07/05 职场文书
大一新生检讨书
2014/10/29 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
考勤制度通知
2015/04/25 职场文书
思想品德课教学反思
2016/02/24 职场文书