在C#中,当我有不同的代码段,如常量,API函数,辅助函数等时,我想将它们分开。我通常使用这样的东西:
public class Foo {
//================== Constants ==================
private const string VIP = "Cob H.";
private const int IMPORTANT_NUMBER = 23;
//================== API Functions ==================
[WebMethod(MessageName = "SomeInformation")]
public string SomeInformation() {
return VIP + " is dead.";
}
//================== Inner Classes ==================
private class IrrelevantClass {
public string Name { get; set; }
public string City { get; set; }
}
}
有没有一种优雅的方式来分割它们而不是使用一堆丑陋的评论?与Objective-C类似,您可以使用
#pragma mark - Inner Classes
我查看了C#pragma list中的所有关键字,但没有一个看起来很有希望。
答案 0 :(得分:11)
C#具有regions,它具有类似的功能。要使用区域,您的代码看起来会像这样:
public class Foo {
#region Constants
private const string VIP = "Cob H.";
private const int IMPORTANT_NUMBER = 23;
#endregion
#region API Functions
[WebMethod(MessageName = "SomeInformation")]
public string SomeInformation() {
return VIP + " is dead.";
}
#endregion
#region Inner Classes
private class IrrelevantClass {
public string Name { get; set; }
public string City { get; set; }
}
#endregion
}
如果您使用的是Visual Studio,C#编辑器可让您折叠区域,从而更轻松地浏览大型源文件。
答案 1 :(得分:6)
您可以使用#regions.
#region
允许您指定在使用Visual Studio代码的大纲功能时可以展开或折叠的代码块 编辑器。
public class Foo
{
#region Constants
private const string VIP = "Cob H.";
private const int IMPORTANT_NUMBER = 23;
#endregion
//......rest of the code
}
答案 2 :(得分:3)
你可以使用#regions但是它有一些与之相关的缺点,就像人们倾向于隐藏它下面的脏代码或隐藏一些长眼哭泣的方法。
我对你的方法也很好,但基本上写一个代码,你不需要隐藏在区域之下。
如果你让它可读,那么根本不需要分隔符......
答案 3 :(得分:1)
我尝试使用#region
,但我不喜欢使用Ctrl + M,O(折叠到定义热键)会折叠区域,以至于我无法轻易看到每个区域中的哪些功能/成员。我尝试使用块注释,但那些也会崩溃。
我提出了自己的高可见度,多行分隔符,在使用“折叠到定义”时不会崩溃。也许其他人会发现这个想法很有用: