class Program
static void Main(string[] args)
ClassName someClass = new ClassName();
ClassName.Method();
ClassName.instance.Method();
ClassName.Method();
我们为什么要把方法区分为:静态方法和非静态方法(实例方法) ?
早期的结构化编程,几乎所有的方法都是“静态方法”,引入实例化方法概念是面向对象概念出现以后的事情了,区分静态方法和实例化方法不能单单从性能上去理解,创建c++,java,c#这样面向对象语言的大师引入实例化方法一定不是要解决什么性能、内存的问题,而是为了让开发更加模式化、面向对象化。这样说的话,静态方法和实例化方式的区分是为了解决模式的问题。
拿一个例子说事:
比如说“人”这个类,每个人都有姓名、年龄、性别、身高等,这些属性就应该是非静态的,因为每个人都的这些属性都不相同;但人在生物学上属于哪个门哪个纲哪个目等,这个属性是属于整个人类,所以就应该是静态的——它不依赖与某个特定的人,不会有某个人是“脊椎动物门哺乳动物纲灵长目”而某个人却是“偶蹄目”的。
上学时C#老师讲到对象有两类方法,静态方法(Static)和实例方法(非Static),当时不理解静态是为何意,只是强记。
后来从事了前端的工作,一直在对类(即对象,Js中严格来说没有类的定义,虽众所周知,这里还是赘述一番,以免产生歧义)的操作上,严重缺乏整体概念,最近看extetnd中再次提到拓展静态方法与实例方法,故而再次百度,才幡然领悟,其实一直有用,只是不知其专业术语呀,哈哈~
静态方法,属于类的方法,即类可以直接调用的方法。为类所有实例化对象所共用(但不能用实例对象之间调用),所以静态成员只在内存中占一块区域;
实例方法,属于实例化类后对象的方法,即实例对象调用的方法。每创建一
(1)静态方法和实例方法,在加载时机上是一样的,在类型第一次被使用的时候加载,调用的速度基本上没有差别(2)静态方法和实例化方法在本质上都是方法,所以在内存中,无论是静态方法还是实例化方法,在内存中都只保存一份(3)如果一个方法,与他所在的类的事例对象无关,那么它就应该是静态的,而不应该把它写成实例方法。   从面向对象的角度来说,在抉择使用静态方法还是实...
C#静态方法与非静态方法的区别不仅仅是概念上的,那么他们有什么具体的区别呢?让我们通过本文向你做一下解析。
C#的类中可以包含两种方法:C#静态方法与非静态方法。那么他们的定义有什么不同呢?他们在使用上会有什么不同呢?
让我们来看看最直观的差别:使用了static 修饰符的方法为静态方法,反之则是非静态方法。
下面我们分四个方面来看看C#静态方法与非静态方法的差异:
C#静态方法...
C#的类中可以包含两种方法:C#静态方法与非静态方法。那么他们的定义有什么不同呢?他们在使用上会有什么不同呢?让我们来看看最直观的差别:使用了static 修饰符的方法为静态方法,反之则是非静态方法。
下面我们分四个方面来看看C#静态方法与非静态方法的差异:
C#静态方法与非静态方法比较一:C#静态成员:
①静态成员属于类所有,非静态成员属于类的实例所有。
静态类无法被实例化,且该类中的变量和方法都无法实例化
静态类中的方法、变量、属性都是静态的
静态类的本质是一个抽象的密封类abstract sealed class ,无法被继承无法实例化
不包含实例构造函数
如果一个类中所有成员都要被共享,可以定义成静态类
静态方法与非静态方法的比较
方法前有static修饰符的是静态方法,否则就是非静态方法
第一:C#静态成员:
(1)静态成员属于类所有,非静态成员属于类的实例所有。
(2)每创建一个类的实例,都会在内存中为非
为了调用方法,需要在方法名前附加方法所在类型的名称(例如string)。
//例1:Format()方法
string text, firstName, lastName;
private void Start()
firstName = "张";
lastName = "三";
text = string.Format("你的全名是{0}{1}。", firstName, lastName);
1.静态类与非静态类
●.静态类中只能包含静态成员和静态方法,否则会抛出编译错误;
而非静态类中可以包含非静态成员和非静态方法,也可以包含 静态成员和静态方法;
●.静态类不可以实例化;非静态类可以实例化。不管是静态类还是 非静态类,对于静态成员和静态方法的调用都必须通过类来实现;
●.如果一个类只包含静态成员和静态方法,应该将该类标记为static, ...