在c#中有什么理由不使用静态修饰符吗?

本文关键字:静态 什么 理由 | 更新日期: 2023-09-27 18:08:02

我对c#编程很陌生,我还在学习。我想知道是否有任何特殊的原因不使用静态修饰符时创建一个方法,对我来说,它只是看起来简单得多。我试着看看MSDN,但如果我不知道一半的单词是什么意思,那就没有多大帮助了。

例如:

using System;
namespace StaticModifier
{
    class Program
    {
        static void Main(string[] args)
        {
            SayHi();
        }
        static void SayHi()
        {
            Console.WriteLine("Hi");
        }
    }
}

看起来比这简单多了:

using System;
namespace StaticModifier
{
    class Program
    {
        static void Main(string[] args)
        {
            Program p = new Program();
            p.SayHi();
        }
        void SayHi()
        {
            Console.WriteLine("Hi");
        }
    }
}

有人愿意解释吗?请记住,我是新手,所以请保持简单:)

在c#中有什么理由不使用静态修饰符吗?

Program的非静态方法提供了类Program.的当前实例。

由于Program不包含任何变量或使用的属性,您不需要用不必要的对象来骚扰您的CPU。

Program p = new Program();不是你将实例化你的"程序"的方式。Main()方法是静态的,通常包含在带有静态方法的静态类中。你不能从静态方法中调用动态方法,因为没有对象的实例。

TL;博士

如果你想传递this(当前对象)给方法,而你的方法利用了它的属性,那么不要使用static。否则绝对没有理由不使用static !

如果一个类需要多于一个自身实例,则不应该使用静态修饰符。例如,如果您有一个名为car的类,其中包含static关键字,那么您只能通过该类的静态引用来访问该类的成员。所以你不可能有两个car对象实例。

这取决于你的程序要做什么可能是合适的。然而,如果你有一个职业名称玩家得分,你可能会使用static关键字。因为这只会存在一次,除非你有更多的玩家,否则你会想要一个玩家得分实例。这意味着你可以考虑一个单例实例,也可以只使用一个静态类。

有很多原因可以解释为什么你会或者不会使用静态修饰符。然而,要确定何时应该使用它是不可能的,这取决于您正在创建的应用程序的特定场景。