【问题标题】:"No Overload Method for GetLine" Help (C#) [closed]“GetLine 没有重载方法”帮助(C#)[关闭]
【发布时间】:2023-03-09 01:14:01
【问题描述】:

我已经尝试过类似:“GetLine(fileName,line)”没有运气

代码:

static void Main(string[] args)
        {
            GetLine();
        }


        string GetLine(string fileName, int line)
{

......

}

【问题讨论】:

  • 你到底想做什么?你的GetLine 在哪里定义?为什么你有一个没有传入参数的调用?
  • 您还不太清楚自己要做什么或遇到了什么问题。根据您发布的信息,您似乎有一个名为 GetLine 的方法,它接受一个字符串和 int 参数,但是,您正在调用一个名为 GetLine 的方法,不传递任何参数。因此,编译器正在为 GetLine 寻找一个没有参数定义的方法定义,但它找不到。如果您使用参数的默认值定义了 GetLine,则您的 GetLine() 调用将被编译。这解释够了吗?

标签: c# .net windows


【解决方案1】:

您正在从静态函数中调用声明为非静态的 GetLine。

要么将 GetLine 声明标记为静态,要么创建包含这两个函数的类的实例。

【讨论】:

    【解决方案2】:

    如果你想直接调用它应该是一个静态方法。 private static string GetLine(string fileName, int line)

    【讨论】:

      【解决方案3】:

      如果要重载方法GetLine,则必须使用virtual 指示符进行标记。

      virtual string GetLine(string fileNmae, int line)
      {
          //Code for method goes here
      }
      

      更新:

      正如 Mario Vernari 所建议的,您需要将方法设为静态。

      如果你想像GetLine()这样调用方法,那么你需要为GetLine创建一个新的重载方法。

      static string GetLine()
      {
         return "Some string message"; //Return a string.
      }
      

      【讨论】:

      • 谢谢!我会调查的:)
      • 他并没有尝试重载方法GetLine,问题是GetLine 不是静态的,但Main 是静态的。查看马里奥的回答
      • @Kieren,这是真的,但他也试图在不传递任何参数的情况下调用 GetLine 方法,这就是给他消息“GetLine 没有重载方法”的原因。他需要做两件事使方法成为静态方法,或者不传入任何参数,或者重载 GetLine() 方法以不接受任何参数。
      • @Jethro - 这些都与添加 virtual 关键字没有任何关系,这就是你的回答所说的,这是错误的
      • @Kieren,我已经更新了我的答案以显示这一点。
      猜你喜欢
      • 2012-10-15
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多