gpt4 book ai didi

C# 在另一个类的公共(public)方法中找不到静态方法

转载 作者:行者123 更新时间:2023-11-30 14:46:06 25 4
gpt4 key购买 nike

我有一台静态类电视:

namespace nTV {
public static class TV {

public static bool isOn;

public static void SetOn(){
//do stuff to set attribute isOn
}
}
}

我有类 House:

namespace nHouse{
public class House{

public void CheckTV(){
TV.SetOn();
}

}
}

当我从 House 内部调用 TV.SetOn()(甚至是 TV.isOn)时,它说

TV does not contain a definition for SetOn.

我做错了什么?如何在另一个类中找到 TV 的方法?

最佳答案

已编辑:

我认为您有 2 个 TV 类,一个在 nHouse 中,一个在 nTV 中。

原始答案:

要么按照 Vulpex 的建议,要么

using nTV; 添加到文件中。

问题是 TV 的全名是 nTV.TV,但是当从同一个命名空间内调用时,您可以将它缩短。所以你要么

  • 使用全名
  • 在同一个命名空间中使用它(这里显然不可能)
  • 或者像我提到的那样添加一个 using 语句。

编辑

看起来您的问题是由于该类是静态的。因此,您(根据 https://stackoverflow.com/a/28123407/939213 )需要使用以下语法:

使用静态 nTV;

编辑 2

我已经测试了我的第一个编辑解决方案(使用 static)并发现 a) 没有必要 b) 它甚至不起作用(我在 Visual Studio 中遇到错误).这是我的代码,工作正常。这些文件位于不同的目录中,我在每个文件之前放置了另一个带有类的命名空间(以测试这是否会导致 VS 关闭。它没有。)

namespace calledNS
{
public static class CalledClass
{
public static void CalledMethod() { }
}
}

using calledNS;
...
namespace callerNS
{
public class CallerClass
{
public void CallerMethod() { CalledClass.CalledMethod(); }
}
}

所以我唯一的想法(实际上最适合你的错误)是:

你有 2 个 TV 类,一个在 nHouse 中,一个在 nTV 中。

我认为这可以解释您所看到的所有行为。

关于C# 在另一个类的公共(public)方法中找不到静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50568831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com