【问题标题】:'Friend WithEvents' in Visual Basic vs. 'private' in C#Visual Basic 中的“Friend WithEvents”与 C# 中的“private”
【发布时间】:2009-12-17 15:02:50
【问题描述】:

在 Windows 窗体项目中,为什么设计器默认使用 VB.NET 中的 Friend WithEvents 属性和 C# 中的 private 属性?

例如,在form.designer. 文件中:

.cs

private Label Label1;

.vb

Friend WithEvents Label1 as Label;

对于WithEvents,它或多或少是清楚的(显然是使用Handles)。但是为什么在 Visual Basic 中为 Friend 而在 C# 中为 private

【问题讨论】:

  • 我认为重要的是要知道现代版本的 Visual Studio 可能会在使用 WinForm-Editor 编辑表单时将访问修饰符从 Friend WithEvents 更改为 Private WithEvents ,从而导致在相应控件正在运行时出现编译错误由外国表格访问。当从 Visual Studio 2012 迁移到 Visual Studio 2019 时,这尤其是一个问题。

标签: c# .net vb.net winforms field


【解决方案1】:

Friend 用于与旧的 Visual Basic 代码兼容,其中通常在包含它的表单之外使用控件。
在 C# 中没有这种必要性。

private 是一个更好的解决方案,适用于新代码。

【讨论】:

    【解决方案2】:

    通常 VB.NET 倾向于暴露太多(隐私主要是选择加入),而 C# 则相反,隐私通常是选择退出。正如其他人所提到的,原因可能是由于 VB.NET 的遗留问题和暴露一切的“友好性”;它使入门变得容易,但也导致设计不佳和确保松散耦合的额外工作。

    【讨论】:

      【解决方案3】:

      我认为这有助于从早期版本的 VB 迁移,因为表单中的代码往往更频繁地从外部修改。朋友也是默认的。

      从代码设计的角度来看,Private 更好,并且在 C# 中使用,因为我猜没有类似的历史编码实践!

      【讨论】:

        【解决方案4】:

        也许 Visual Basic 正试图对新程序员更友好,并允许他们从项目中的任何位置查看表单中的所有 Friend 控件?

        朋友是内部的,我唯一能想到的,我不知道为什么默认设置会有所不同,除了帮助新程序员......

        【讨论】:

        • 我相信新手程序员应该考虑OOP,并学习它的(黑)盒子概念。
        • OOP 很容易宣扬,但即使使用 C#,许多绿色开发人员也只学到了足够的东西来应付并陷入程序化方法。正确的 OO 设计需要额外的深谋远虑和更多的考虑,因此自然而然地,这是一种在学习了 OO 语言基础知识之后发展起来的技能。
        • 我实际上提供了 VB.NET 作为更好的“学习”语言;它让新开发人员减少了对语法和高级设计的担忧,而更多地关注学习框架。一旦开发人员能够胜任基本框架工具,他们就可以考虑设计和安全方面;它为进行切换提供了一个自然的断点。
        猜你喜欢
        • 1970-01-01
        • 2015-11-19
        • 2016-02-10
        • 1970-01-01
        • 2013-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多