我理解静态类和静态类成员的概念,但我确信我可以在我的项目中使用它们更多。有人能告诉我一些他们在C#中创建和使用静态类的实际例子吗?
由于
答案 0 :(得分:2)
静态类和方法的最实际用途是创建扩展方法。像Linq Query扩展方法一样。
答案 1 :(得分:0)
实用程序类,帮助程序类,转换类......任何在实例上放置都没有意义的方法,但是与其他类实例一起使用是很好的候选方法。还有很多其他的例子 - 这些只是少数几个。
答案 2 :(得分:0)
我大多数时候使用static
类用于工具,实用程序功能。
答案 3 :(得分:0)
静态类(使用static关键字)是一个Abstract和Sealed类。因此允许静态成员。 您需要使用静态类来实现扩展方法,因为这是由c#编译器仲裁的。
答案 4 :(得分:0)
您需要在设计中代表 流程 ,而不是 实体 ,或者 值 ,您应该使用静态类。 进程是设计中的一个对象或事物,它没有 状态 ,但是操纵或管理其他对象的状态。它将具有静态方法,不触及类本身的私有或公共状态变量,但仅对传递给这些方法的对象的公共属性进行操作。
一些例子可能包括一个为学术机构执行调度功能的类,
或负责在入境口岸处理货物和集装箱以装载到船舶或飞机上的舱位。
答案 5 :(得分:0)
考虑单例模式 - 您只想使用一个实例和一个实例:
public class MySingleton
{
protected static Lazy<MySingleton> _instance = new Lazy<MySingleton>(() => new MySingleton());
protected MySingleton() {}
public static MySingleton Instance
{
get { return _instance.Value; }
}
}
构造类的方式,您只能使用存储在静态变量中的一个实例。考虑HttpContext.Current
静态属性。
此外,静态项目对于状态维护很有用;假设你想在内存中缓存一些任何实例需要的数据,但是不需要重新获取数据。
您还需要为扩展方法创建静态类。
答案 6 :(得分:0)
静态类就像是用于保存方法和其他数据的容器
考虑一个Math Utilities类。您不希望创建MathUtility的实例,但您可以定义一个常量(例如PI
)或一些数学功能的方法(static double sqrt(double)
)。
你可以在非静态类中完成所有这些事情;但是他们可能与他们所依赖的课程没什么关系。
对于扩展方法,它们也是必需的 - 它们允许您增强预定义类的功能。
请参阅link了解C#中的Math类。
答案 7 :(得分:0)
响应您对扩展方法示例的请求,这将大写字符串的第一个字母。
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);
}
}
代码中的其他地方,您可以像这样使用它
var pirate = "yar";
System.Diagnostics.Debug.WriteLine(pirate.UppercaseFirst());
//Yar