What is the meaning of static in differents parts of the code?
我已经学了两个星期的C语言,尽管它不是我的第一语言,也不是第二语言。我一直在想这个静态的词。我知道我早就应该研究这个词了……但这是我第一次意识到这个词对我来说有多混乱。我读到的:
静态类是不需要声明就可以使用的类。(用单一方法类--最佳方法?)这可能在测试、多态性等方面有一些优势和缺点。
但是静态词也可以应用于类、字段、方法、属性、运算符、事件和构造函数!!!!(https://msdn.microsoft.com/en-us/library/98f28cdx%28v=vs.80%29.aspx)。例子:
财产:
1 | private static string s =""; |
方法:
1 2 3 | public static void helperMethod() { Console.WriteLine("Whatever"); } |
"静态"一词是否具有全局意义,或者在代码的不同部分中使用,意思可以改变吗?
当它被应用到
- 仅包含静态成员。
- instantiated不能。
- 是密封的。
- 不能包含实例构造函数。
改性剂的性能或功能(和事件和方法)
当应用到的特性和功能,例如
1 2 3 4 5 6 7 8 9 | public Thing { static int SharedCount { get; set; } static string GenerateName() { // ... } } |
它意味着在性能及功能将不可访问,通过类型名称,instantiating的类。这将是不可访问的性质和功能,通过一个实例的类。这两个操作系统。
1 2 | var i = Thing.SharedCount; var s = Thing.GenerateName(); |
是有效和正确的语句的WHERE子句
1 2 |
都是不正确的。
代码在功能和性能符合性与
成员变量
成员变量,以符合
1 2 3 4 5 6 7 8 9 10 | class Thing { private static int sharedCount = 0; private static readonly IDictionary<string, int> ThingLookup = new Dictionary<string, int> { {"a", 1 }, {"b", 2 } }; } |
在共享的所有功能和特性和静态的类的所有实例。
当应用到建筑。
1 2 3 4 5 6 7 | class Thing { static Thing() { \\ Do this once and first. } } |
该构造函数将
算子
当一个运营商是一个摘要是型,这是符合的
1 2 3 4 | public static Thing operator +(Thing left, Thing right) { // Something special to do with things. } |
这是不符合逻辑的话,这是因为运营商必须在一级适用于实例的类型。
这是在这里,distinctions解释,在这里和这里。
静态成员是被认为非常普通的项,在调用成员时不需要创建该类型的实例。虽然任何类都可以定义静态成员,但它们最常见于实用程序类中,如System.Console、System.Math、System.Environment或System.GC等。
另外,C中的静态关键字也指的是类中的某些内容,或类本身,这些内容在类的所有实例中共享。例如,可以通过类名从该类的所有实例访问标记为静态的字段。
有许多相关的静态概念。这将解决你的困惑的答案是静态的。
在简单的话,是不可以改变的静态特性,在你的类,如果类的静态成员是一个多变化的影响,它一次,你的价值,它将改变*在每一个类是受它的人。
静态方法是静态的,如果你有它,往往使用静态上下文(静态或操作系统)。
静态类是一个静态类不能被instantiated },如汽车的汽车将永远拥有这一特性(颜色、大小……)
1 | ClassName.memberName |
注意,操作符必须声明为
在C中,数据成员、成员函数、属性和事件可以声明为静态或非静态。
静态字段和事件只有一个副本,静态方法和属性只能访问静态字段和静态事件。
静态成员通常用于表示响应对象状态而不改变的数据或计算。
静态可以通过以下方式使用:
更多参考:MSDN
静态的
C语言中的静态
什么是静态的?
快速回答:没有一个
从dotnetperls:
使用类型名调用这些。不需要实例,这会使它们稍微快一点。静态方法可以是公共的或私有的。
信息:静态方法使用静态关键字,通常在公共之后作为第一关键字或第二关键字。
警告:静态方法不能访问EDCOX1×6级成员。它没有EDCOX1×7指针。
实例:实例方法可以访问这些成员,但必须通过实例化对象调用。这增加了间接性。使用实例和静态方法的EDCOX1×8程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | using System; class Program { static void MethodA() { Console.WriteLine("Static method"); } void MethodB() { Console.WriteLine("Instance method"); } static char MethodC() { Console.WriteLine("Static method"); return 'C'; } char MethodD() { Console.WriteLine("Instance method"); return 'D'; } static void Main() { // // Call the two static methods on the Program type. // Program.MethodA(); Console.WriteLine(Program.MethodC()); // // Create a new Program instance and call the two instance methods. // Program programInstance = new Program(); programInstance.MethodB(); Console.WriteLine(programInstance.MethodD()); } } |
产量
1 2 3 4 5 6 | Static method Static method C Instance method Instance method D |
来自MSDN:
It is useful to think of static members as belonging to classes and
instance members as belonging to objects (instances of classes).
源:静态成员和实例成员
静态成员可以通过类对象访问,类似于
很明显,编译器需要一些时间来创建实例,只有这样您才能访问它的属性。因此实例成员的工作速度比静态成员慢。