c# 静态成员和实例成员的区别

静态成员也称为共享成员,例如静态属性 静态字段 静态方法;静态成员可以在类的实例之间共享。

静态类中只能有静态成员,不能有实例成员,因为静态类不能进行实例化;

在非静态类中 即可以有静态成员 也可以有非静态成员;

只要是静态成员 属性 字段 方法,都需要用类名去调用;

静态成员和实例成员的区别:

静态成员需要通过static修饰,非静态成员不需要通过static修饰;

静态成员属于类,可以直接通过“类名.静态成员”的方式访问;

非静态成员,必须实例化对象后,通过对象.实例成员来访问;  

当类第一次加载的时候(第一次被加载到内存的时候),该类下的所有的静态成员都会被加载,实例成员有多少个对象,就会创建多少个对象;静态成员会被加载到静态存储区,直到程序退出时才会被释放;

由上面显然可知,定义静态的成员是可以影响程序的执行效率的。那么什么时候定义静态的成员变量呢?

①变量需要被共享的时候②方法需要被反复的调用的时候

静态成员和实例成员的区别:
静态成员是需要通过static关键字来修饰的,而实例成员不用static关键字修饰。他们区别如下代码:

01 class Program
02     {
03         static void Main(string[] args)
04         {
05             //静态成员属于类,可以直接通过“类名.静态成员”的方式访问
06             Person.Run();
07             //实例成员属于对象,需要通过“对象名.实例成员”来访问
08             Person p = new Person();
09             p.Sing();
10         }
11     }
12     class Person
13     {
14         //静态成员变量
15         private static int nAge;
16         //实例成员变量
17         private string strName;
18         public static void Run()
19         {
20             Console.WriteLine("我会奔跑!");
21         }
22         public void Sing()
23         {
24             Console.WriteLine("我会唱歌");
25         }
26     }

当类第一次被加载的时候(就是该类第一次被加载到内存当中),该类下面的所有静态的成员都会被加载。实例成员有多少对象,就会创建多少对象。
而静态成员只被加载到静态存储区,只被创建一次,且直到程序退出时才会被释放。
看下面的代码:

01 class Program
02     {
03         static void Main(string[] args)
04         {
05             Person p = new Person();
06             Person p1 = new Person();
07             Person p2 = new Person();
08         }
09     }
10                                         
11     class Person
12     {
13         //静态成员变量
14         private static int nAge;
15         //实例成员变量
16         private string strName;
17         public static void Run()
18         {
19             Console.WriteLine("我会奔跑!");
20         }
21         public void Sing()
22         {
23             Console.WriteLine("我会唱歌");
24         }
25     }

那么在内存中发生了什么呢?如下图:

由上面显然可知,定义静态的成员是可以影响程序的执行效率的。那么什么时候定义静态的成员变量呢?
①变量需要被共享的时候②方法需要被反复的调用的时候

时间: 2024-10-11 16:45:18

c# 静态成员和实例成员的区别的相关文章

C++中类的静态成员与实例成员的区别

在C++类中,由static定义的(静态)数据成员 和 (静态)函数成员属于类:相反没有被static定义的成员和函数称为实例数据成员和实例函数成员,他们属于某一个实例(对象). 在内存中,类的静态数据成员占有一块特定的内存空间,被该类的所有实例(对象)共享.而同一个类的不同对象的实例数据成员相互独立,占有各自的存储空间. 定义类后,必须在类外的文件作用域中定义静态数据成员,即为它们分配存储空间. 在程序中可以直接使用类名和域解析操作符::直接访问类的共有静态数据成员和共有函数成员,不能直接访问

静态类、静态方法、静态成员和实例成员的比较

任何项目中都会使用到静态类.静态方法.静态成员和实例成员了.那么这几个名词到底有哪些区别呢? 1.静态成员和实例成员 静态成员:静态成员通常和类是相关联的.它可以作为类中公有的变量,不依赖特定对象的存在.通常我们在访问它们的时候很简单,直接通过类名加点操作符再加变量名来进行操作. 实例成员:实例成员通过和对象是相关联的.一般情况下,我们都是对类的实例化来进行访问操作.如果实例不存在,那么也就无法访问实例成员对象. 所以实例成员的存在必须要有对象实例的存在,如果对象实例都不存在了,那么就将无法访问

关于javascript中静态成员和实例成员的详细解释

关于javascript中静态成员和实例成员的详细解释  在我们了解什么是静态成员和实例成员之前,我们首先来了解一下什么是实例? 实例就是由构造函数创建出来的对象. 例如案例中 p 就是实例: function Person() {}//  此函数为构造函数 var p=new Person();  // p为构造函数创建出来的对象 我们在讨论静态成员和实例成员时候,把函数当成构造函数, 把创建出来的对象称之为实例.在此明白了什么是实例,下面我们就可以说什么是静态  成员和实例成员了. 首先什么

2017-9-20C#笔记(类,访问修饰符以及访问性,静态成员和实例成员,字段,Main方法,常量,对象的创建,类的属性)

软件开发的两种主要的方式为面向对象和面向过程,面向过程的焦点主要放在指令的组合和优化上,面向对象的焦点从指令转移到组织程序的数据和功能上. 类 程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,称之为类.类作为一个有机的不可分割的整体,对外隐藏具体实现细节,从而实现可重用和易维护等特性,同时还提供了继承功能,支持子类获得父类特征. 类是一个能存储数据并执行代码的数据结构,是逻辑相关的数据和函数的封装,通常代表真实世界中的或概念上的事物. 类包括以下内容: (1) 数据成员:数据成员用来

14、类的静态成员和实例成员

默认为实例成员,static为静态成员 实例成员只能在实例化的时候用 静态成员只能被类访问 如图所示,类只能访问到静态成员,不能访问到实例成员 如图所示,实例化后能够访问到实例成员,不能访问到静态成员 原文地址:https://www.cnblogs.com/hihi-jing/p/9532960.html

228 静态成员和实例成员

1.2.1 实例成员 实例成员就是构造函数内部通过this添加的成员 如下列代码中uname age sing 就是实例成员,实例成员只能通过实例化的对象来访问 function Star(uname, age) { this.uname = uname; this.age = age; this.sing = function() { console.log('我会唱歌'); } } var ldh = new Star('刘德华', 18); console.log(ldh.uname);/

python的静态成员变量、实例成员变量、静态方法、类方法、实例方法

静态成员变量(类变量)和普通成员变量(实例变量) 静态成员变量只能通过类名.变量名获得,实例成员变量,通过该实例引用.变量名获得. 在实例对静态成员变量赋值时,实例 python是动态类型的语言,没有特别的标志区分静态成员变量和普通成员变量 如果你使用类名.成员变量    那这个成员变量现在就是静态成员变量(类变量) 如果你使用实例.成员变量    那这个成员变量现在就是普通成员变量(实例变量) 静态方法.类方法.实例方法      实例方法,类中的普通方法,由实例调用 类方法,被@classm

关于实例成员与类成员的区别

1.实例成员 实例成员包括实例成员变量和实例成员方法,实例成员变量(对象的字段)和方法(对象的方法)是隶属于对象的,实例变量的值代表了该对象的状态,实例成员方法代表了该对象的行为.只有创建了对象之后才能访问实例成员变量和实例成员方法,通过"对象名.变量名(方法名)"的方法可以访问实例成员 2.类成员 类成员(静态成员)需要用关键字static标识,类成员包括,类成员变量和类成员方法,类成员是隶属于类的,意思是说通过类名可以直接访问类成员变量或调用类成员方法,即使没有创建对象,也能够引用

es6-02—实例成员与静态成员

1.实例成员与静态成员: 在es6的类中.声明在类的构造方法中的成员称为实例成员,可以使变量或者方法,实例成员只能通过实例对象来访问.静态成员是通过类直接添加的,只能通过类来访问. <script> class Star{ constructor(uname, age){ this.uname = uname; this.age = age; this.sing = function () { console.log(this.uname+'正在唱歌'); } } } //实例成员就是在构造方