gpt4 book ai didi

C# 将构造函数参数传递给私有(private)成员的目的是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:52 25 4
gpt4 key购买 nike

人们总是定义一个私有(private)成员,然后将构造函数参数值传递给它,就像设计 A。但我不明白这样做的好处,因为私有(private)成员没有得到副本(我的意思是深度克隆) ,那么为什么不选择设计 B 呢?

设计 A:

public class ClassA
{
public int num {get;set;}
}

public class ClassB
{

private ClassA a ;

public ClassB(ClassA _a) {
a = _a;
}
}

设计 B:

public class ClassA
{
public int num {get;set;}
}

public class ClassB
{
public ClassA a {get; set;}
}

最佳答案

设计 A 和设计 B 都有用,但适用于不同的情况。

设计 A 的一个优点是,有一个用实例构造函数的参数初始化的私有(private)实例字段,您知道字段 a 的“身份”不会被任何人更改(类本身之外的任何人)只要 ClassB 对象存在。所以你可以基于此做出假设。这为设计 A 提供了一种设计 B 所缺乏的浅层不变性。

您还可以使用自动属性(而不是显式字段)制作设计 A;只需将自动属性 ​​privateset; 访问器。

关于C# 将构造函数参数传递给私有(private)成员的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29443646/

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