内部类对象进入外部类构造函数进入c#

时间:2012-04-25 07:50:54

标签: c# .net inner-classes

我们可以在外部类的构造函数中创建内部类的对象到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#中这是不可能的,这完全是非法的。请指导我。

4 个答案:

答案 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之前,这是非法的(导致编译错误)。

在公开标记后,它绝对合法。