静态类和方法实例

本文关键字:实例 方法 静态类 | 更新日期: 2023-09-27 18:05:30

可能重复:
何时在C#中使用静态类

我理解静态类和静态类成员的概念,但我相信我可以在项目中更多地使用它们。有人能给我看一些他们在C#中创建和使用静态类的实际例子吗?

感谢

静态类和方法实例

Static类和方法最实用的用途是创建扩展方法。类似于LinqQuery扩展方法。

任何时候,当您需要在设计中表示过程,而不是体或值时,都应该使用静态类。Process是设计中的一个对象或事物,它没有状态,但操纵或管理其他对象的状态。它将具有静态方法,这些方法不涉及类本身的私有或公共状态变量,而只对传递给这些方法的对象的公共属性进行操作。

一些例子可能包括一个为学术机构执行调度功能的类

或者负责在入境口岸处理货物和船运集装箱以装载到船只或飞机上的类别。

实用程序类、帮助程序类、转换类。。。任何一组方法如果放在实例上没有意义,而是与其他类实例一起使用,那么它们都是很好的静态候选方法。还有很多其他的例子——这些只是少数。

我使用static类的大多数时候都是用于工具、实用程序函数。

静态类(使用static关键字(是一个同时具有Abstract和Sealed的类。因此,允许使用静态成员。您需要使用一个静态类来实现扩展方法,因为这是由c#编译器仲裁的。

考虑单例模式-您希望只使用一个实例和一个实例:

 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静态属性。

此外,静态项目对状态维护很有用;假设您想在内存中缓存任何实例都需要的一些数据,但不需要重新蚀刻数据。

您还需要为扩展方法创建静态类。

为了响应您对扩展方法示例的请求,这将使字符串的第一个字母大写。

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

静态类就像一个容器,用于存放方法和其他数据
考虑一个数学实用程序类。您可能不想创建MathUtility的实例,但可以定义一个常量(如PI(或一些数学函数的方法(static double sqrt(double)(。

你可以在一个非静态类中完成所有这些事情;但它们可能与所属的类没有太大关系。

它们也是扩展方法所必需的,允许您增强预定义类的功能。

请参阅C#中数学类的链接。