繁体   English   中英

静态类 JINT 中的 C# 非静态类

[英]C# non-static class inside static class JINT

嗨,试图在静态类中创建一个类以在 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”是一个静态类,而是一个命名空间,它可以工作,但我希望它作为一个类,因为我也想在其中包含静态方法

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

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

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

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

Main()
{
    Ok k = new Ok();//Error
}

想象一下你有这个:

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();

最后,您可以在此处查看工作代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM