【问题标题】:Why use static methods in program.cs C#? [duplicate]为什么在 program.cs C# 中使用静态方法? [复制]
【发布时间】:2020-12-09 15:10:43
【问题描述】:

我一直都知道我必须使用静态方法,但我想知道为什么? 正如您在下面看到的,我必须将“MigrateDatabase”设为静态

using System;

namespace OdeToFood
{
    public class Program
    {
        public static void Main(string[] args)
        {
            MigrateDatabase();
        }

        private static void MigrateDatabase()
        {
          //.....
        }


    }
}

【问题讨论】:

  • 在这种情况下,这是因为在这种特定情况下,您不能从静态函数中调用非静态函数。
  • 您必须将其设为静态对于此代码,但如果您以不同方式编写代码,则不必将其设为静态。
  • 在这种情况下,new Program().MigrateDatabase() 是我的首选,因为每次输入 static 都很痛苦。
  • @MathewHD:不是真的:如果您有对包含该方法的对象的引用,则可以从静态函数调用非静态函数。

标签: c#


【解决方案1】:

让我们明确一点,在这种情况下MigrateDatabase 必须是静态的唯一原因是因为您从静态方法 (Main) 调用它。如果 MigrateDatabase 是类的实例方法,则可以实例化该类并调用它

using System;

namespace OdeToFood
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var migration = new Migration();
            migration.MigrateDatabase();
        }   
    }

    public class Migration
    {
        private void MigrateDatabase()
        {
          //.....
        }
    }
}

如果您要实例化 that 类的实例,也可以将其作为实例方法放在 Program

using System;

namespace OdeToFood
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var program = new Program();
            program.MigrateDatabase();
        }

        private void MigrateDatabase()
        {
          //.....
        }


    }
}

【讨论】:

  • 人们:我很高兴我的答案能被更正,但请不要随意更改!
猜你喜欢
  • 2012-06-10
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 2014-09-28
  • 2011-11-16
  • 2020-10-18
  • 1970-01-01
相关资源
最近更新 更多