gpt4 book ai didi

c# - 为什么要为类中的私有(private)成员创建公共(public)包装器?

转载 作者:行者123 更新时间:2023-11-30 19:09:07 26 4
gpt4 key购买 nike

我一直有这个问题,但到目前为止我一直在盲目跟进。

这是一段示例代码:

为什么这样做:

public class EmployeeInfo
{
int _EmpNo;
public virtual int EmpNo
{
get { return _EmpNo; }
set { _EmpNo = value; }
}

string _EmpName;
public virtual string EmpName
{
get { return _EmpName; }
set { _EmpName = value; }
}
}

当在获取/设置期间没有进行任何额外操作(例如计算或验证)时?

这就够了吗?

public class EmployeeInfo
{
public int EmpNo { get; set; }
public string EmpName { get; set; }
}

此外,为什么要为公共(public)成员包装器使用 virtual

最佳答案

Why do this?

自从在 C# 3.0 中添加了自动实现的属性以来,确实没有理由这样做。它可能是未更改的遗留代码、旧习惯或与 C# 3 之前的代码保持一致。

Will this suffice?

否 - 您已将 虚拟 属性转换为非虚拟。所以它们并不完全等价。

等同于

public class EmployeeInfo
{
public virtual int EmpNo { get; set; }
public virtual string EmpName { get; set; }
}

Also, why virtual for the public member wrappers?

以便派生类可以覆盖属性的逻辑 - 添加验证、更改通知等。

When does the shortened form actually have an impact?

当支持字段被类的内部代码引用时(可以在编译时检测到),或者当它们被反射访问时(直到运行时才能检测到,或者通过静态代码分析).

一个“自动实现”的属性实际上得到了一个由编译器创建的支持字段,所以从这个意义上说,如果引用支持字段的唯一地方是在属性代码中,它们是等价的。

关于c# - 为什么要为类中的私有(private)成员创建公共(public)包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33240183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com