c# - 最初设置的类声明在内部是否与在构造函数中设置它们相同?

标签 c#

初始设置的类声明在内部是否与在构造函数中设置它们相同?

例子:

class test
{
     int test1 = 5;
}

那和有什么区别吗

class test
{
     int test1;
     public test()
     {
         test1 = 5;
     }
}  

如果没有区别,哪个更正确?

最佳答案

在您提供的特定情况下,没有功能差异。但是,当涉及到继承时,字段初始值设定项的行为方式可能会令人惊讶。字段初始值设定项实际上是在构造函数之前调用的,构造函数是从派生最少到派生最多的顺序调用的,而字段初始值设定项是从派生最多到派生最少的顺序调用的。因此,如果类 A 派生自 B。当创建 A 的实例时,将执行以下顺序:A 的字段初始值设定项、B 的字段初始值设定项、System.Object 构造函数、B 的构造函数、A 的构造函数。

以上仅适用于实例字段初始化器/构造器。对于静态字段初始值设定项/构造函数,行为完全不同。

至于哪个在你的情况下是正确的,没有商定的惯例,但读者通常会赞赏一致性。

关于c# - 最初设置的类声明在内部是否与在构造函数中设置它们相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11733786/

相关文章:

c# - 如何检测 .Net 中(路由器/网关的)公共(public) IP 地址的变化?

c# - 创建新线程时,不对 GUI 进行更改 (C#)

c# - 将 C++ 项目转换为 DLL 以在 C# 应用程序中使用

c# - 为什么 MoqMockingKernel 中缺少 Get 方法?

c# - XElement with LINQ 在特定节点后添加节点

c# - Emgu Cv 和 16 位灰度图像

c# - Microsoft ReportViewer 2012 引用

c# - 如何配置 Visual Studio 2017 以在 ASP.Net MVC https 站点中公开非加密端口

c# - SignalR .NET 客户端不接收消息

c# - 如何返回一个空的 View 组件 MVC 6?