我可以在两个cs文件中拆分一个方法吗?

本文关键字:一个 方法 拆分 cs 两个 我可以 文件 | 更新日期: 2023-09-27 18:10:12

我有超过33K行的。cs。当这个文件打开时,Visual Studio的速度会大大减慢,偶尔会暂时冻结。这个类只是一个字典初始化。

是否有办法分割我的Initialize()方法跨多个。cs?

我可以在两个cs文件中拆分一个方法吗?

如果您的类只是作为一堆不同的字典项的存储,您可能想要考虑将这些项存储在文件中。可以将该文件存储为.txt或.xml文件。这样,您就可以编辑文件并让程序在运行时加载数据。

只需在解决方案中创建一个新文件,并将其设置为"Embedded Resource",然后将数据加载到类中。

有关嵌入式资源的更多信息,请参见https://support.microsoft.com/en-us/kb/319292。

听起来你需要把你的方法分成更小的块。我们的团队倾向于将方法的长度保持在一个屏幕左右,即最多50-60行。你可以调用其他方法,这些方法又会调用其他方法,但听起来你在一个方法中发生了太多事情。

可以通过使用partial关键字将类拆分到多个文件:

// file Test1.cs
public partial class Test{} //...
// file Test2.cs
public partial class Test{} //...

只要它们在同一个命名空间中,类的实例将具有两个文件中声明的所有方法。

https://msdn.microsoft.com/en-us/library/wa80x488.aspx

No。当涉及到部分类时,这是有效的,因为顺序是无关的。这些文件只是"合并"。方法和属性等的顺序无关紧要。当涉及到拆分方法时,您如何做到这一点?应该先运行File1中的部分还是先运行File2中的部分?执行顺序很重要。编译器不知道该怎么做。

您可以做的是将其分解为多个较小的方法,然后将这些方法作为partial class分布在类文件中。例如,如果字典是名称,您可以让File1包含一个方法LoadNamesAThroughL, File2包含一个方法LoadNamesMThroughZ或类似的东西。然后你的Initialize可以按你想要的顺序调用这两个。

我将使用分部类来做到这一点。将Initialize函数分解为更小的函数,将单个函数放在不同的文件中,然后让Initialize以正确的顺序调用它们。

您可以使用部分类将其拆分为多个文件。

您还需要将该方法分解为多个方法(这是33k行的方法已经乞求的)。

文档中的例子:

public partial class Employee
{
    public void DoWork()
    {
    }
}
public partial class Employee
{
    public void GoToLunch()
    {
    }
}
Use Partial Class
public partial class Employee
    {
        public void DoWork()
        {
        }
    }
public partial class Employee
{
    public void GoToLunch()
    {
    }
}

也适用于属性