C# 中的默认构造函数及其调用
介绍
万事皆有始。在 C# 中创建类或结构时,会调用其构造函数。构造函数的典型调用是使用new关键字。构造函数允许根据构造函数所采用的参数使用默认或自定义属性初始化实例。构造函数的名称与构造实例的类相同。
构造函数
让我们举一个简单的例子来说明构造函数。我们将定义一个具有两个不同构造函数的类,这称为重载。
using System;
namespace Pluralsight
{
public class DefaultConstructors
{
bool isInitialized;
private int a;
private int b;
public DefaultConstructors()
{
Console.WriteLine("Constructor without argument.");
isInitialized = true;
}
public DefaultConstructors(int aa, int bb)
{
this.a = aa;
this.b = bb;
Console.WriteLine($"Constructor with two arguments: int {aa}, and int {bb}");
}
public static void Main()
{
DefaultConstructors a = new DefaultConstructors();
Console.WriteLine($"The instance of {nameof(DefaultConstructors)} is initialized: {a.isInitialized}");
DefaultConstructors b = new DefaultConstructors(10,20);
Console.WriteLine($"The instance of {nameof(DefaultConstructors)} is initialized with arguments {b.a}, and {b.b}");
Console.ReadKey();
}
}
}
执行的输出给了我们以下结果。
Constructor without argument.
The instance of DefaultConstructors is initialized: True
Constructor with two arguments: int 10, and int 20
The instance of DefaultConstructors is initialized with arguments 10, and 20
如果我们不想根据参数对类进行任何修改,我们可以完全省略构造函数,因为它将在编译时由 C# 动态生成。
该代码也有效。
using System;
namespace Pluralsight
{
public class DefaultConstructors
{
public static void Main()
{
DefaultConstructors a = new DefaultConstructors();
Console.WriteLine($"The instance of {nameof(DefaultConstructors)} is initialized!");
Console.ReadKey();
}
}
}
这将产生以下输出。
The instance of DefaultConstructors is initialized!
关于默认构造函数的另一个非常重要的特性是,它们将每个数字字段初始化为0,将每个字符串或对象字段初始化为null。
让我们通过下一个例子来证明这一点。
using System;
namespace Pluralsight
{
public class DefaultConstructors
{
int a;
string b;
object c;
public static void Main()
{
DefaultConstructors a = new DefaultConstructors();
Console.WriteLine($"The instance of {nameof(DefaultConstructors)} is initialized!");
Console.WriteLine($"The value of a: {a.a}");
Console.WriteLine($"The value of b: {object.Equals(a.b,null)}");
Console.WriteLine($"The value of c: {object.Equals(a.c,null)}");
Console.ReadKey();
}
}
}
object.Equals ()函数帮助我们检查特定对象或实例的值是否为空。执行应用程序后,我们将看到以下输出。
The instance of DefaultConstructors is initialized!
The value of a: 0
The value of b: True
The value of c: True
使用默认构造函数的缺点是您无法选择以不同的方式初始化实例。
您可以使用两种类型的构造函数:私有和公共。作为一般经验法则,请记住私有构造函数仅用于仅包含静态成员的类。如果类只存在私有构造函数,则除嵌套类外,其他类无法创建它的新实例。
结论
在本指南中,我们了解了构造函数最重要的方面,查看了如何通过构造函数强制类执行不同行为的示例,并演示了它如何帮助我们使用默认值初始化实例字段或属性。这背后的想法是让您作为程序员在构建应用程序时避免犯常见错误。我希望本指南对您有所帮助,并感谢您阅读它。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~