亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C# 嵌套类

C# 嵌套类

在本教程中,您将通过示例了解 C# 中的嵌套类。

在 C# 中,我们可以在另一个类中定义一个类。它被称为嵌套类。例如,

class OuterClass {
  ...
  class InnerClass {
    ...
  }
}

在这里,我们创建了类 InnerClass 在类 OuterClass 内 . InnerClass 被称为嵌套类。


访问成员

要访问嵌套类的成员,我们首先需要创建它们的对象。

1.创建Outer类的对象

OuterClass obj1 = new OuterClass();

在这里,我们创建了 obj1 OuterClass 类的对象 .

2。创建内部类的对象

OuterClass.InnerClass obj2 = new OuterClass.InnerClass();

可以看到我们使用了OuterClass.InnerClass 创建 obj2 内部类的对象。这是因为 InnerClassOuterClass 的嵌套类 .

一旦我们创建了各个类的对象,我们就可以使用对象名称和点运算符来访问每个类的成员。

示例:C# 嵌套类

using System;
namespace CsharpNestedClass {
 
  // outer class
  public class Car {

    public void displayCar() {
      Console.WriteLine("Car: Bugatti");
    }
 
    // inner class
    public class Engine {
      public void displayEngine() {
        Console.WriteLine("Engine: Petrol Engine");
      }
    }
  }
  class Program {
    static void Main(string[] args) {

      // create object of outer class
      Car sportsCar = new Car();

      // access method of outer class
      sportsCar.displayCar();
 
      // create object of inner class
      Car.Engine petrolEngine = new Car.Engine();
      
      // access member of inner class
      petrolEngine.displayEngine();
 
      Console.ReadLine();
 
    }
  }
}

输出

Car: Bugatti
Engine: Petrol Engine

在上面的程序中,我们嵌套了 Engine Car 里面的类 类。

Program里面 类,我们已经创建了外部类和内部类的对象。

// object of outer class
Car sportsCar = new Car();

// object of nested class
Car.Engine petrolEngine = new Car.Engine();

然后我们使用这些对象来访问每个类的方法。

注意 :我们无法使用外部类的对象访问内部类的成员。例如,

// error code
sportsCar.displayEngine();

在这里,我们无法访问 displayEngine() 内部类Engine的方法 使用 sportsCar 外部类的对象。


在内部类中访问外部类成员

我们可以在内部类中访问外部类的成员。为此,我们使用外部类的对象。例如,

using System;
namespace CsharpNestedClass {

  // outer class
  public class Car {
 
    public string brand = "Bugatti";

    // nested  class
    public class Engine {
      public void displayCar() {

        // object of outer class
        Car sportsCar = new Car();
        Console.WriteLine("Brand: " + sportsCar.brand);
      }
    }
  }

  class Program {
    static void Main(string[] args) {

       // object of inner class
       Car.Engine engineObj = new Car.Engine();
       engineObj.displayCar();

      Console.ReadLine();
    }
  }
}

输出

Brand: Bugatti

在上面的例子中,我们嵌套了 Engine Car 中的类 班级。注意这一行,

// inside Engine class
Car sportsCar = new Car();
Console.WriteLine("Brand: " + sportsCar.brand);

在这里,我们使用了类 Car 的对象 访问字段 brand .


在内部类中访问外部类的静态成员

如果我们需要访问外部类的静态成员,我们不需要创建它的对象。相反,我们可以直接使用外部类的名称。例如,

using System;
namespace CsharpNestedClass {

  // outer class
  public class Car {
    //static member of outer class
    public static string brand = "Bugatti";

    // nested class
    public class Engine {
      public void display() {
        
        // access static member of outer class
        Console.WriteLine("Brand: " + Car.brand);
      }
    }
  }
  class Program {
    static void Main(string[] args) {

      // object of inner class
       Car.Engine obj = new Car.Engine();
       obj.display();

      Console.ReadLine();
    }
  }
}

输出

Brand: Bugatti

在上面的例子中,我们嵌套了 Engine Car 里面的类 班级。 Car 有一个静态字段 brand .

在这里,我们访问了静态字段 brand 在内部类(Engine ) 使用外部类的名称 (Car )。

Console.WriteLine("Brand: " + Car.brand);

继承外部类

像普通类一样,我们也可以继承外部类。例如,

using System;
namespace CsharpNestedClass {
 
  // outer class
  class Computer {

    public void display() {
      Console.WriteLine("Method of Computer class");
    }
 
    // nested class
    public class CPU {
 
    }
   }

    class Laptop : Computer {
 
    }

  class Program  {
    static void Main(string[] args) {
 
      // object of derived class
      Laptop obj = new Laptop();
      obj.display();     
 
      Console.ReadLine();
    }
  }
}

输出

Method of Computer class

在上面的例子中,我们派生了类 Laptop 从外部类 Computer .

因此,我们能够访问 display() Computer 类的方法 使用类 Laptop 的对象 .


继承内部类

在 C# 中,我们也可以继承内部类。例如,

using System;
namespace CsharpNestedClass {

  // outer class
  class Computer {

    // nested  class
    public class CPU {
      public void display() {
        Console.WriteLine("Method of CPU class");
      }

    }
  }
    
  // inheriting inner class
  class Laptop : Computer.CPU {

  }

  class Program  {
    static void Main(string[] args) {

      // object of derived class
      Laptop obj = new Laptop();
      obj.display();     

      Console.ReadLine();
    }
  }
}

输出

Method of CPU class

在上面的例子中,我们导出了 Laptop 来自内部类 CPU 的类 .

请注意,我们使用了外部类的名称以及嵌套类来继承内部类。

class Laptop : Computer.CPU {}

C语言

  1. C# 类和对象
  2. C# 访问修饰符
  3. C# 构造函数
  4. C# 静态关键字
  5. C#抽象类和方法
  6. C# 嵌套类
  7. C# 部分类和部分方法
  8. C# 密封类和方法
  9. C# 构造函数重载
  10. C++中的多态性
  11. C++ 中的数据抽象
  12. C# - 程序结构