【问题标题】:Conversion from java to c# super(ClassName.this) argument从 java 到 c# super(ClassName.this) 参数的转换
【发布时间】:2015-05-04 22:48:00
【问题描述】:

我有以下代码:

public ClassC 
{
    public class ClassA extends ClassB<T> 
    {
        /**
        * @uml.property  name="index"
        */
        private int index;
        public ClassA()
        {
            super(ClassC.this);
            index = 0;
        }
    }

我发现,内部类需要ClassName.this 才能到达this 的外部类实例,但这对我没有多大帮助。我知道我的问题是缺乏知识,但一些简短的解释会节省我一些时间。这在 c# 中应该如何看?我重命名了类只是为了使它成为一个更普遍的问题。

【问题讨论】:

  • 在 c# 中,大约 99.5% 的时间你都不应该需要任何类型的嵌套类。
  • @RobertHarvey 0.05% 听起来有点高 :)
  • @RobertHarvey true 对于 public 类,嵌套的私有类非常有用。
  • @alex:我的百分比仍然适用。请注意在我的原始评论中使用了“任何类型的”一词。如果你有一个有效的例子,我会全力以赴,但通常嵌套类表明你的类做得太多了。
  • 改用组合,把所有需要的类写在同一个命名空间中,而不是嵌套。

标签: java c# super nested-class


【解决方案1】:

来自documentation

嵌套或内部类型可以访问包含或外部类型。到 访问包含类型,将其作为构造函数传递给嵌套 类型。例如:

public class Container
{
    public class Nested
    {
        private Container parent;

        public Nested()
        {
        }
        public Nested(Container parent)
        {
            this.parent = parent;
        }
    }
}

【讨论】:

  • 那么在 Nested 的构造函数中我可以使用 base(parent) 吗?
  • 不,你可以使用parent.Member()
猜你喜欢
  • 2020-08-11
  • 2012-07-17
  • 2020-02-26
  • 2014-09-07
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
相关资源
最近更新 更多