我们可以在外部类的构造函数中创建内部类的对象到C#中吗?这是合法的吗?
public class Outer
{
public Inner InnerObj {get; set; }
public Outer()
{
Inner inner = new Inner();
}
public Outer(Inner inner)
{
InnerObj = inner;
}
public class Inner
{
}
}
for Java我从下面的链接中获取参考: Can we create an object of the inner class in the constructor of the outer class?
我的同事说在C#中这是不可能的,这完全是非法的。请指导我。
答案 0 :(得分:2)
如果您声明Inner class public
,则可能public class Inner { }
答案 1 :(得分:1)
你的代码的问题是调用代码如何知道内部obj是什么,因为它不能在外部类之外访问。
更好的设计是将内部类放在外部类之外,这样它就不会紧密耦合。还要将对象传递给接口。
public class Outer
{
public Outer(IInner inner)
{
}
}
public class Inner: IInner
{
}
public Interface IInner
{
}
答案 2 :(得分:1)
当然,这是可能的。从技术上讲,您的代码没有任何问题(如果您将内部公共内部或外部类设置为内部代码)。
但请注意,建议不要使用公共嵌套类,有关详细信息,请参阅此问题:
答案 3 :(得分:0)
在Inner
不是public
之前,这是非法的(导致编译错误)。
在公开标记后,它绝对合法。