gpt4 book ai didi

c# - 是否接受使用私有(private)方法来避免构造函数中的虚拟成员?

转载 作者:太空狗 更新时间:2023-10-29 23:57:48 24 4
gpt4 key购买 nike

据我所知,大家一致认为从构造函数访问虚拟成员是一种危险的做法。我们能否通过使用额外的步骤(一种方法)来进行所需的初始化来克服这个问题?像下面这样:

public class EntityAlpha {
public virtual string Value { get; protected set; }

public EntityAlpha(string value) {
Value = value;
}
}

替换为

public class EntityAlpha {
public virtual string Value { get; protected set; }

public EntityAlpha(string value) {
AssignValue(value);
}

private void AssignValue(string value) {
Value = value;
}
}

使用这种额外方法的后果是什么?它是否仍然像在构造函数中使用虚拟成员一样危险或最糟糕?!如何测试这个假设是否有害?

最佳答案

您实际上遇到了同样的问题,只是现在代码更难阅读了。

关键是设计您的类,以便构造函数不会到达任何虚拟成员,即使是间接通过其他方法也是如此。

关于c# - 是否接受使用私有(private)方法来避免构造函数中的虚拟成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3103888/

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