2015-05-04 2 views
1

У меня есть следующий код:Преобразование из Java в C# супер (ClassName.this) аргумент

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#? Я переименовал классы, чтобы сделать его более общим.

+0

Может что-то делать с вложенными классами ... – BradleyDotNET

+1

В C#, вы не должны вложенные классы любого рода около 99,5 процентов времени. –

+1

@RobertHarvey 0.05% звучит немного высоко :) – BradleyDotNET

ответ

2

От documentation:

Вложенный или внутренний типа может получить доступ к содержащему, или внешнему виду. К доступ к содержащему типу, передайте его как конструктор вложенный тип . Например:

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

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

Итак, в конструкторе Nested я могу использовать base (parent)? – David

+0

Нет, вы можете использовать 'parent.Member()' –

 Смежные вопросы

  • Нет связанных вопросов^_^