【问题标题】:Can I call a static method inside another method?我可以在另一个方法中调用静态方法吗?
【发布时间】:2010-11-28 12:51:27
【问题描述】:

基本问题:如何在另一个方法中调用静态方法。请帮忙!!

public static class Class1
{
  public static string RenderCompareStatus()
  {
      bool isFound = Class1.Found(id);
  }

  private static bool Found(string id)
  {

  }

//错误信息:不包含 Found 的定义

【问题讨论】:

  • 您在正文中的第一句话有点描述性,但您的标题/主题是非描述性的。请考虑修改。
  • 好的,这是一个最小的代码。我已经在代码中进行了建议的编辑。但是还是不行。
  • Found 在你从它返回一个布尔值之前不会编译,所以在你解决它之前调用它是行不通的。
  • Found 是私有的,因此你不能调用它。更改发现公开

标签: c# class static methods


【解决方案1】:

我将您的示例扩展为一个完整的示例:

using System;

public static class Class1
{
    public static void Main()
    {
        Console.WriteLine(RenderCompareStatus());
    }

    public static string RenderCompareStatus()
    {
        String id = "test";
        bool isFound = Found(id);
        return "Test: " + isFound;
    }

    private static bool Found(string id)
    {
        return false;
    }
}

结果:

Test: False

编辑:如果上面的示例与您的代码相似,但您的代码不起作用,请edit your question,提供更多详细信息,例如您遇到的确切错误以及产生错误的更完整的代码示例.

编辑:将 public static bool Found(string id) 更改为 private static bool Found(string id) 重新编译后仍然有效。

【讨论】:

  • 谢谢。那么这对你有用吗。这就是我所做的,并且在以下语句中出现错误 bool isFound = Found(id); (在此处找到下方的红色波浪线)
  • @sa:我使用csc.exe 和记事本而不是Visual Studio 对此进行了测试,但您不应该遇到任何编译错误,它可以正常工作。如果您将鼠标悬停在 Found() 上,弹出窗口会显示什么内容?
  • 好的,我会尝试这样做。但是有一个问题:我可以在 C# 中的静态类中的另一个静态方法中调用静态方法吗!!
  • @sa:您的示例缺少Class1 上的结束}。此外,Found() 必须返回 bool(如我的示例中:return false;)。
  • @sa:我的例子从另一个static方法(RenderCompareStatus())调用static方法(Found())。
【解决方案2】:

你使用类名 例如Class1.Found

【讨论】:

  • @Tzury:你不需要使用类名。
【解决方案3】:

代码看起来不错 - 如果这是您的实际代码,而不仅仅是一个最小示例,您需要在 RenderCompareStatus 的范围内指定 id(或其他变量)作为参数传递给 Found .

【讨论】:

    【解决方案4】:

    您的两种方法都缺少返回语句。如果不为非 void 方法指定返回值,则会出现编译错误。

    可以使用 Class1.Found(id) 调用静态方法。但是如果你从同一个类中调用它,你可以省略“Class1”。通话前。

    【讨论】:

      猜你喜欢
      • 2022-11-18
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 2015-12-05
      • 1970-01-01
      • 2015-01-04
      • 2010-12-24
      • 1970-01-01
      相关资源
      最近更新 更多