3

嗨,试图在静态类中创建一个类以在 JINT 中使用,但是当它被引用时,我得到一个错误

C# 代码


namespace Hi {
    public static class Ok {
        public class Wowa {
            public Wowa(){}
        }
    }
}

但是当我尝试在 JavaScript 中创建一个新的时,我从 JINT 收到一个错误“对象不能用作构造函数”

var k = new Hi.Ok.Wowa()

我这样做对吗?如何设置 C# 以便能够在 JINT 的 JavaScript 中使用上述代码?

顺便说一句,如果“Ok”不是一个静态类,而是一个命名空间,它可以工作,但我希望它作为一个类,因为我也想在其中包含静态方法

4

2 回答 2

2

您不能在静态类(ReadThis)中使用非静态类,但如果您在第一个类中删除(静态)

  namespace Hi {
    public class Ok {
        public class Wowa {
            public Wowa(){}
        }
    }
}

并且可以说它并没有太大的区别,因为(静态)只会使您的类的子类别必须使用(静态)。但是如果你希望你的类不可能建立在变量上,你可以使用 abstract( ReadThis )

namespace Hi {
    public abstract class Ok {
        public class Wowa {
            public Wowa(){}
        }
    }
}

Main()
{
    Ok k = new Ok();//Error
}
于 2020-09-14T06:58:21.780 回答
0

想象一下你有这个:

namespace Hi
{
  public static class Ok
  {
    public class Wowa
    {
         public Wowa() { }
         public static string MyStaticMethod() => "Hello from 'Static Method'";
         public string MyNormalMethod() => "Hello from 'Normal Method'";
    }
  }
}

可以通过创建它的实例来使用非静态类Wowa,然后您可以调用MyNormalMethod该实例(您只能在该类的实例中调用非静态方法)。

 Hi.Ok.Wowa wowa = new Hi.Ok.Wowa();
 wowa.MyNormalMethod();     

并且无需创建任何实例,Wowa您就可以在其中调用静态方法,如下所示:

Hi.Ok.Wowa.MyStaticMethod();

最后你可以在这里看到工作代码。

于 2020-09-16T12:04:48.090 回答