我可以跨两个cs文件拆分方法吗?

时间:2015-08-27 21:21:22

标签: c#

我的.cs超过33K行。每当这个文件打开时,Visual Studio都会大幅减速,偶尔也会冻结。所有这个类都是字典初始化。

有没有办法将我的Initialize()方法拆分为多个.cs?

6 个答案:

答案 0 :(得分:5)

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

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

有关嵌入资源的详细信息,请参阅https://support.microsoft.com/en-us/kb/319292

答案 1 :(得分:3)

听起来你需要将你的方法分解成更小的块。我们的团队倾向于在一个屏幕周围保留方法,最多约50-60行。你可以调用其他方法来反过来调用其他方法,但听起来你在sinlge方法中发生了太多的事情。

可以使用partial关键字在多个文件中拆分类:

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

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

只要它们位于同一名称空间中,该类的实例就会在两个文件中声明所有方法。

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

答案 2 :(得分:1)

没有。当涉及到部分类时,这是有效的,因为顺序是无关紧要的。这些文件只是“合并”。方法和属性等的顺序无关紧要。在拆分方法时,你怎么能这样做? File1中的部分应首先运行还是File2中的部分运行?执行令很重要。编译器不知道该怎么做。

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

答案 3 :(得分:0)

我会用Partial Classes来做这件事。将Initialize函数分解为更小的函数,将各个函数放在不同的文件中,然后让Initialize按正确的顺序调用它们。

答案 4 :(得分:0)

您可以使用partial class将其拆分为多个文件。

你还需要将方法分解为多种方法(33k线方法已经在乞求)。

documentation的示例:

public partial class Employee
{
    public void DoWork()
    {
    }
}

public partial class Employee
{
    public void GoToLunch()
    {
    }
}

答案 5 :(得分:-3)

Use Partial Class

public partial class Employee
    {
        public void DoWork()
        {
        }
    }

public partial class Employee
{
    public void GoToLunch()
    {
    }
}

也适用于属性