Why are static classes used?

后端 未结 6 1047
故里飘歌
故里飘歌 2021-01-17 23:23

I have doubts on static class and static methods. From MSDN I understood that \"Static classes and class members are used to create data and functions that can be accessed w

相关标签:
6条回答
  • 2021-01-17 23:43

    For utility classes they are great. As you mentioned, they are similiar to global state. So for classes which have no state, for performance benefits the class should be static.

    On the other hand, static classes are hard to test (if they contain state). Polymorphism and other OO concepts are also lost.

    Use wisely.

    0 讨论(0)
  • 2021-01-18 00:00

    Static properties mainly used to introduce Context of running code. And you can find confirmation for that in every piece of .NET stack.
    ASP.NET - HttpContext.Current
    Threading - Thread.CurrentThread
    WinForms - WindowsFormsSynchronizationContext.Current
    WPF - Dispatcher
    etc
    static class for me is just container for utility methods.

    0 讨论(0)
  • 2021-01-18 00:01

    IMO static classes are procedural programming in disguise. Not necessarily a bad thing, but it's not very OOPly. Watch out for the functional decomposition antipattern.

    0 讨论(0)
  • 2021-01-18 00:03

    Applying the static keyword to a class is a C# language convention, it doesn't mean anything special to the CLR. It merely makes sure that all members are static as well and that you can't accidentally create an instance of the class with the new keyword.

    The merits of static methods are discussed in this thread.

    0 讨论(0)
  • 2021-01-18 00:08

    Static classes are great for defining static methods. This is classic 'utility class' approach. However, be extremely careful with storing state (i.e. defining fields) in a static class. In our multi-threaded world this can lead to unpredictable program behavior unless you synchronize access to static fields.

    0 讨论(0)
  • 2021-01-18 00:08

    Static Classes globalizes a particular variable which makes it easier to handle during the code. Hence at basic level we prefer using Static Classes.

    0 讨论(0)
提交回复
热议问题