gpt4 book ai didi

c# - 为什么使用类级访问修饰符而不是对象级?

转载 作者:可可西里 更新时间:2023-11-01 03:04:30 24 4
gpt4 key购买 nike

在使用 C# 时,我最近意识到我可以调用 Foo对象的私有(private)函数来自 Foo的静态函数,甚至来自其他 Foo对象。在了解了所有关于访问修饰符的知识之后,这对我来说听起来很奇怪。

据我所知,当函数执行属于某种内部流程的一部分时,您将函数设为私有(private)。只有对象本身知道何时使用这些函数,因为其他对象不应该/不能控制对象的流程。是否有任何理由可以将同一类的其他对象排除在这个非常简单的规则之外?

根据要求,一个例子:

public class AClass {
private void doSomething() { /* Do something here */ }
public void aFunction() {
AClass f = new AClass();
f.doSomething(); // I would have expected this line to cause an access error.
}
}

最佳答案

private 修饰符强制执行 Encapsulation原则。

这个想法是“外部世界”不应该改变 AClass 的内部流程,因为 AClass 的实现可能会随着时间的推移而改变(你将不得不改变整个外部世界来修复实现中的差异——这几乎是不可能的) .

当 AClass 的实例访问其他 AClass 实例的内部时 - 您可以确定这两个实例始终知道 AClass 的实现细节。如果 AClass 流程的内部逻辑发生变化 - 您所要做的就是更改 AClass 的代码。

然而,在其他一些语言中,private 在实例级别工作,但在 C# 中并非如此。

关于c# - 为什么使用类级访问修饰符而不是对象级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16354728/

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