c# - 为什么 Windows 窗体应用程序中的窗体类被声明为部分的?

标签 c# .net winforms forms

  1. 有人能说出为什么它被声明为部分的吗?
  2. 它有什么用?
  3. 是否可以不部分地声明它?

最佳答案

它被声明为部分的,因为 VS.NET 会将“设计器”代码放入一个单独的 .cs 文件中,该文件实际上在编译时是同一类的一部分。

如果您有一个 Form1.cs,您也应该在文件系统上有一个 Form1.Designer.cs。当您将控件放到窗体上时,VS.NET 会将代码添加到该设计器文件中。它是独立的,因为您不想看到或触摸该代码,也不希望它妨碍您自己的代码。

因此,C# 中的部分类功能主要用于分离您的代码和设计器代码。在编译时,组成分部类的两个(或更多)文件成为一个类 - 在运行时,定义为分部类和非分部类之间没有任何区别。

在 partial 存在之前的“过去”,所有设计器代码都与您自己的代码混为一谈,这造成了困惑的 .cs 文件以及开发人员更改 VS.NET 期望拥有专有权的代码的可能性。因此,表单可以正常工作(如果在没有设计人员支持的情况下编写)而不是部分的(例如,如果您自己从 T4 模板生成整个文件)。

为什么要删除“部分”?

关于c# - 为什么 Windows 窗体应用程序中的窗体类被声明为部分的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1769124/

相关文章:

c# - 我们可以像在 c# 中的数据库中那样以排序方式将数据填充到文本框中吗?

c# - 尝试使用 VB6 Form 调用 OLEDB 提供程序时应用程序消失

c# - 如何在调整大小时仅显示winforms窗口的边框?

c# - 如何删除键盘删除键上的 dataGridView 行? C#

c# - WatIn SelectList().SelectByValue() 返回错误运行脚本失败

c# - 如何使用弹出窗口在 ASP.NET 项目中显示错误消息?

c# - Web 服务字符串中的 Null 被接收为 string.empty

c# - 从服务器端的 GridTemplateColumn 中检索值 (Telerik RadGrid)

c# - SQL Server CE WHERE 语句行为错误?很困惑

c# - C# LINQ 结果的差异