【问题标题】:C# only runs main() classC# 只运行 main() 类
【发布时间】:2018-07-28 20:07:40
【问题描述】:
namespace ConsoleApp5
{
class Program
{
    private static MySqlConnection connection;
    private static string server;
    private static string database;
    private static string uid;
    private static string password;


    public static void Main(string[] args)
    {

        server = "localhost";
        database = "database";
        uid = "domica";
        password = "domica";
        string connectionString;
        connectionString = "SERVER=" + server + ";" + "DATABASE=" +
        database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";

        connection = new MySqlConnection(connectionString);
        connection.Open();
    }
    public static void Insert()
    {
        Console.Write("Ukucaj nesto:");
        var kucaj = Console.ReadLine();
        string query = "INSERT INTO table1 (Ci) VALUES (@tt);";
        MySqlCommand cmd = new MySqlCommand(query, connection);
        cmd.Parameters.AddWithValue("@tt", kucaj);
        cmd.ExecuteNonQuery();
    }

  }
}

这是我的代码,我有一个简单的问题。该代码不起作用。 Main() 部分有效,但 Insert() 类永远不会运行。如果我将所有内容放在 Main() 类中,它会全部工作,但我不希望这样。我尝试将其切换为构建为类库,而不是控制台应用程序,我只是收到一个错误,说那是不可能的。谢谢

【问题讨论】:

  • 你应该从 main() 方法调用 Insert()
  • 您可能会认为 c# 是程序化的,因为它会依次运行每个方法?这不是它的工作原理。 Main 是自动调用的,其他的都必须显式调用。
  • 仅供参考 MainInsert 是方法。你唯一的课程是Program

标签: c# main


【解决方案1】:

您需要在 Main 方法中调用 Insert() 方法。

namespace ConsoleApp5
{
    class Program
    {
        private static MySqlConnection connection;
        private static string server;
        private static string database;
        private static string uid;
        private static string password;

        public static void Main(string[] args)
        {

            server = "localhost";
            database = "database";
            uid = "domica";
            password = "domica";
            string connectionString;
            connectionString = "SERVER=" + server + ";" + "DATABASE=" +
            database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";

            connection = new MySqlConnection(connectionString);
            connection.Open();

            Insert();
        }
        public static void Insert()
        {
            Console.Write("Ukucaj nesto:");
            var kucaj = Console.ReadLine();
            string query = "INSERT INTO table1 (Ci) VALUES (@tt);";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            cmd.Parameters.AddWithValue("@tt", kucaj);
            cmd.ExecuteNonQuery();
        }

      }
}

【讨论】:

    【解决方案2】:

    必须每次调用每个新函数。在 private static void Main(string[] args) { ... } 函数中的 connection.Open(); 之后调用 Insert()

    祝你好运

    【讨论】:

      【解决方案3】:

      好的,我想是时候解释一下了。首先,一些术语。 MainInsert 被称为函数或方法。你程序中唯一的类是Program

      什么是函数?

      函数是(相对)小的代码块,用于更好地组织程序。当您需要重复执行相同的操作(或非常相似的操作)时,可以重用它们。可以使用参数稍微更改和自定义它们的操作以满足特定需求。必须调用(调用)每个函数才能运行。 Main 也是一种方法。

      为什么 Main 运行而不调用它?

      Main 被称为程序的入口点,因为它是程序自动调用的唯一函数。在Main 中,您可以调用您定义的其他函数。

      在哪里可以调用函数?

      你可以在另一个函数中调用一个函数。您甚至可以在其内部调用一个函数(称为递归的过程),只需确保创建一个退出条件,这样您就不会出现无限循环。

      可以我调用Main吗?

      当然。但请注意,这意味着重新执行它。

      应该我调用Main吗?

      这可能是一个讨论主题。从我的角度来看,你永远不应该调用Main,因为它非常危险。你可以很容易地创建一个无限循环,而且很难避免这种情况。而且,它并没有真正给你带来很大的优势。老实说,我从未见过重新调用Main 的程序。

      希望您现在理解,以后可以提出更多有用的问题。

      【讨论】:

        猜你喜欢
        • 2021-10-04
        • 2014-01-09
        • 2022-01-25
        • 2019-10-31
        • 2020-03-28
        • 1970-01-01
        • 1970-01-01
        • 2021-02-08
        • 1970-01-01
        相关资源
        最近更新 更多