静态类和方法实际例子

时间:2011-08-12 15:09:29

标签: c# static

  

可能重复:
  When to Use Static Classes in C#

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

由于

8 个答案:

答案 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