深入浅出C#中的静态与非静态
C#语言静态类 vs 普通类
C#语言静态类与普通类的区别有以下几点:
1)C#语言静态类无法实例化而普通类可以;
2)C#语言静态类只能从System.Object基类继承;普通可以继承其它任何非static和非sealed类,但也只能继承一个类;
3)C#语言静态类不能继承接口;普通类可以继承多个接口;
4)C#语言静态类只能包含C#语言静态成员;普通类可以包含C#语言静态和非C#语言静态成员;
5)C#语言静态类不能作为字段,方法参数和局部变量使用;普通类可以;
C#语言静态类的意义: 可以用C#语言静态类封装一组不与任何对象相关联的方法,如Math类,Console类。
C#语言静态方法 vs C#语言实例方法
C#语言静态方法与C#语言实例方法的区别有以下几点:
1)C#语言静态方法属于类,通过类来调用;C#语言实例方法属于对象,通过对象来调用;
2)C#语言静态方法不能访问类的非C#语言静态成员;
C#语言静态方法的意义: 完成一个与特定对象无关的功能。
C#语言静态字段 vs 非C#语言静态字段
C#语言静态字段与非C#语言静态字段的区别:C#语言静态字段属于类,通过类来调用;非C#语言静态字段属于对象,通过对象来调用。
C#语言静态字段的意义: 可以用C#语言静态字段来记录一些属于类本身的信息。
C#语言静态构造函数 vs 实例构造函数
C#语言静态构造函数与实例构造函数的区别有以下几点:
1)C#语言静态构造函数属于类,在第一次用到该类时执行且只执行一次;实例构造函数属于对象,在每次初始化一个新对象的时候都会执行;
2)C#语言静态构造函数只能定义一次,且不能包含参数;实例构造函数可以定义重载,且可以包含参数;
3)C#语言静态构造函数只能访问类型的C#语言静态字段;实例构造函数可以访问类型的C#语言静态和非C#语言静态字段,可参考http://youyanji.bjp111.com ;
4)C#语言静态类不能包含访问修饰符,默认为private.
C#语言静态构造函数的意义:
设置类型的初始化,例如初始化类型需要的实例对象,为类型的C#语言静态字段赋值等。
静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类;其次,它防止在类的内部声明任何实例字段或方法。
静态成员与非静态成员的调用:
C#函数成员:
C#方法可以主要分为C#静态方法,C#实例方法
C#静态方法:C#静态方法是不属于特定对象的方法,C#静态方法可以访问静态成员变量,C#静态方法不可以直接访问实例变量,可以在实例函数调用的情况下,实例变量做为参数传给C#静态方法。C#静态方法也不能直接调用C#实例方法,可以间接调用,首先要创建一个类的实例,然后通过这一特定对象来调用C#实例方法,但可以调用C#静态方法。
C#实例方法:
一个C#实例方法的执行与特定对象关联,他的执行需要一个对象存在。C#实例方法可以直接访问静态变量和实例变量,C#实例方法可以直接访问C#实例方法、和C#静态方法,C#静态方法的访问方式为类名加点操作符加变量名。当多个实例对象存在时,内存中并不是存在美个特定的C#实例方法的拷贝,而是,相同类的所有对象都共享每个C#实例方法的一个复制。
深入浅出C#中的静态与非静态的更多相关文章
- 初学者必看:.NET 中的静态与非静态的异同
对于初学者来说,.NET 的静态和非静态一直比较难掌握,这里做一个总结,介绍静态类和普通类,静态方法和实例方法,静态构造函数和实例构造函数,静态字段和非静态字段的区别. 静态类 vs 普通类 静态类与 ...
- 值类型与引用类型(特殊的string) Typeof和GetType() 静态和非静态使用 参数传递 相关知识
学习大神博客链接: http://www.cnblogs.com/zhili/category/421637.html 一 值类型与引用类型 需要注意的string 是特殊类型的引用类型. 使用方法: ...
- .NET 基础 一步步 一幕幕[面向对象之静态、非静态]
静态.非静态 先来看一段代码来区分静态与非静态: using System; using System.Collections.Generic; using System.Linq; using Sy ...
- C#基础知识之静态和非静态
项目中静态和非静态常被用到,什么时候需要用静态的,什么时候需要使用非静态,以及他们的区别是什么? 一.概述 静态和非静态的不同地方,就是静态从程序一启动就会一直占用内存,而非静态只有在实例化的时候才会 ...
- C#基础--类/接口/成员修饰符,多态、重载、重写,静态和非静态
C#基础--类/接口/成员修饰符,多态.重载.重写,静态和非静态 类/接口/成员修饰符 C#修饰符---接口: 接口默认访问符是internal接口的成员默认访问修饰符是public C#修饰符--类 ...
- 20151024_001_C#基础知识(静态与非静态的区别,值类型和引用类型,堆和栈的区别,字符串的不可变性,命名空间)
1:我们把这些具有相同属性和相同方法的对象进行进一步的封装,抽象出来类这个概念. 类就是个模子,确定了对象应该具有的属性和方法. 对象是根据类创建出来的. 2:类:语法 [public] class ...
- c#基础3-方法的重载静态和非静态,字段属性,方法
方法的重载概念:方法的重载指的就是方法的名称相同给,但是参数不同.参数不同,分为两种情况1).如果参数的个数相同,那么参数的类型就不能相同.2).如果参数的类型相同,那么参数的个数就不能相同.***方 ...
- Net基础篇_学习笔记_第十一天_面向对象(静态与非静态 static)
static:静态的 静态和非静态的区别1).在非静态类中,既可以有实例成员(非静态成员),也可以有静态成员. 成员----方法/函数2).在调用实例成员的时候,需要使用对象名.实例成员; 在调 ...
- C# 面向对象3 静态和非静态的区别
静态和非静态的区别 1.在非静态类中,既可以有实例成员(非静态成员),也可以有静态成员. 2.在调用实例成员的时候,需要使用对象名.实例成员; 在调用静态成员的时候,需要使用类名.静态成员名; 总结: ...
- 【Java】静态与非静态
文章目录 静态与非静态 static关键字 使用static修饰属性:静态变量(或类变量) 类变量与实例变量的内存解析 使用static修饰方法:静态方法 使用static的注意点 开发中,如何确定一 ...
随机推荐
- c语言选择排序
简单选择排序是经常用到的一种排序算法. 原理: 1.简单选择排序一句话概括:每次选择无序数列中最小的将其放在有序数列的最后. 2.在简单选择排序中,我们用初始化的数字int a[6]={2,5,6,3 ...
- Oracle RMAN 恢复控制文件到指定的路径
Oracle 数据库通过RMAN恢复控制文件到指定的路径 --------------------------------------------------------- 先查询备份集信息,再指定备 ...
- [翻译]:怎样从C/C++代码中对C#进行回调
声明:网络上类似的中文博客大有存在,本人知识水平有限,业余爱好,也是为了备份收藏How to make a callback to C# from C/C++ code 本着共享知识的初衷,翻译一份给 ...
- Reset CSS:只选对的,不选"贵"的
玉伯和正淳一起整理的一份 reset.css: /* KISSY CSS Reset 理念:清除和重置是紧密不可分的 特色:1.适应中文 2.基于最新主流浏览器 维护:玉伯(lifesinger@gm ...
- hihoCoder 1309:任务分配 贪心 优先队列
#1309 : 任务分配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定 N 项任务的起至时间( S1, E1 ), ( S2, E2 ), ..., ( SN, ...
- Knockout.Js官网学习(value绑定)
前言 value绑定是关联DOM元素的值到view model的属性上.主要是用在表单控件<input>,<select>和<textarea>上. 当用户编辑表单 ...
- 大型网站seo优化之行业网站seo优化具体操作思路
第一部分:站内优化 第二部分:站外优化 第三部分:内容建设 第四部分:网站完善 一.站内优化 1.站内结构优化 2.内链策略 3.站内细节优化 4.网站地图设置 5.关键词竞争度分析 5.关键词部 ...
- [翻译][erlang]cowboy handler模块的使用
关于Cowboy Cowboy是基于Erlang实现的一个轻量级.快速.模块化的http web服务器. Handlers,用于处理HTTP请求的程序处理模块. Plain HTTP Handlers ...
- CSS自适应布局(包括两边宽度固定中间宽度自适应与中间宽度固定两边宽度自适应)
1.两边宽度固定,中间宽度自适应 (1)非CSS3布局,浮动定位都可以(以下用浮动) css样式: #left { float: left;width: 200px; background: lime ...
- Config文件的读写
using System; using System.Configuration; using System.Xml; namespace COMMON { public class ConfigHe ...