gpt4 book ai didi

c# - 为什么 C# 不提供 C++ 风格的 'friend' 关键字?

转载 作者:IT老高 更新时间:2023-10-28 11:27:15 25 4
gpt4 key购买 nike

C++ friend keyword允许 class A 指定 class B 作为它的 friend 。这允许 Class B 访问 class Aprivate/protected 成员。

我从来没有读过任何关于为什么 C#(和 VB.NET)没有提到它。大多数答案earlier StackOverflow question似乎在说它是 C++ 的一个有用部分,并且有充分的理由使用它。根据我的经验,我必须同意。

另一个 question在我看来,我真的在问如何在 C# 应用程序中做类似于 friend 的事情。虽然答案通常围绕嵌套类,但它似乎不如使用 friend 关键字那么优雅。

原文Design Patterns book在其示例中经常使用它。

总而言之,为什么 C# 中缺少 friend,以及在 C# 中模拟它的“最佳实践”方式是什么?

(顺便说一下,internal关键字不是一回事,它允许整个程序集中的所有类访问internal 成员,而 friend 允许您授予某个类完全访问恰好一个其他类)

最佳答案

附带说明。使用 friend 不是违反封装,相反,它是关于执行它。像访问器+修改器、运算符重载、公共(public)继承、向下转换等。,它经常被误用,但这并不意味着关键字没有,或者更糟的是,用途不好。

Konrad Rudolphmessage在另一个线程中,或者如果您愿意,请参阅 the relevant entry在 C++ 常见问题解答中。

关于c# - 为什么 C# 不提供 C++ 风格的 'friend' 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/203616/

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