Static Classes and Methods Practical Examples
Possible Duplicate:
When to Use Static Classes in C#
我理解静态类和静态类成员的概念,但我确信我可以在我的项目中更多地使用它们。有人能给我举一些实际的例子,说明他们何时在C中创建和使用了静态类吗?
谢谢
静态类和方法的最实际使用是创建扩展方法。类似于LINQ查询扩展方法。
为了响应您对扩展方法示例的请求,这将使字符串的第一个字母大写。
1 2 3 4 5 6 7 8 9 10 11 12 13 | public static class StringExtensions { public static string UppercaseFirst(this String s) { if (string.IsNullOrEmpty(s)) { return string.Empty; } char[] a = s.ToCharArray(); a[0] = char.ToUpper(a[0]); return new string(a); } } |
在代码的其他地方,您可以这样使用它
1 2 3 | var pirate ="yar"; System.Diagnostics.Debug.WriteLine(pirate.UppercaseFirst()); //Yar |
静态类就像一个保存方法和其他数据的容器。考虑一个数学实用程序类。您不想创建MathUtility的实例,但可以定义一个常量(如
您可以在一个非静态类中完成所有这些事情;但是它们可能与它们所连接的类没有太多关系。
扩展方法也需要它们——这允许您增强预定义类的功能。
参见C中的数学类链接。
考虑单件模式-您只想使用一个实例和一个实例:
1 2 3 4 5 6 7 8 9 10 11 |
构造类的方式,只能使用存储在静态变量中的一个实例。考虑EDOCX1×1的静态特性。
此外,静态项对于状态维护是有用的;例如,您希望缓存任何实例所需的内存中的一些数据,但不需要重新读取数据。
您还需要为扩展方法创建静态类。
当您需要在设计中表示一个流程时,与实体或值不同,您应该使用一个静态类。流程是设计中的一个对象或事物,它没有状态,但操纵或管理其他对象的状态。它将拥有不接触类本身的私有或公共状态变量的静态方法,但只对传递给这些方法的对象的公共属性进行操作。
一些例子可能包括为学术机构执行调度功能的类,
或负责在入境港处理散货和装运集装箱,以便装载到船舶或飞机上的一类。
静态类(使用static关键字)是一个抽象和密封的类。因此,允许静态成员。您需要使用静态类来实现扩展方法,因为这是由C编译器仲裁的。
大多数时候我使用
实用程序类、帮助程序类、转换类…任何一组方法放在一个实例上都没有意义,但是与其他类实例一起工作的话,都是静态的很好的候选者。还有很多其他的例子-这些只是一些。