C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > c# :this() 和 :base()

c# :this() 和 :base()区别小结

作者:ou.cs

本文介绍了C#中:this()和:base()的区别,:this()用于调用当前类的其他构造函数,适用于构造函数重载;:base()用于调用基类构造函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在 C# 中,:this() 和 :base() 都用于构造函数的重载和继承,但它们有不同的用途和上下文:

1.:this()

2.:base()

关键区别

特性:this():base()
调用目标当前类的其他构造函数基类的构造函数
使用场景构造函数重载(简化代码)继承(初始化基类成员)
是否可选可选(根据需要)可选(如果基类有无参构造函数,可省略)

其他注意事项

  1. 如果省略 :base(),编译器会自动调用基类的无参构造函数(如果基类没有无参构造函数,则必须显式调用)。
  2. :this() 和 :base() 必须出现在构造函数声明之后,且只能选择其中之一(不能同时使用)。
  3. 它们可以带参数,例如 :this("hello") 或 :base(42)。

示例(结合使用)

public class Animal
{
    public Animal(string name)
    {
        Console.WriteLine($"Animal: {name}");
    }
}

public class Dog : Animal
{
    public Dog() : this("Buddy") // 调用当前类的其他构造函数
    {
        Console.WriteLine("Dog()");
    }

    public Dog(string name) : base(name) // 调用基类构造函数
    {
        Console.WriteLine($"Dog(name: {name})");
    }
}

输出(当调用 new Dog() 时):

Animal: Buddy
Dog(name: Buddy)
Dog()

到此这篇关于c# :this() 和 :base()区别小结的文章就介绍到这了,更多相关c# :this() 和 :base()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文