Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C#编写代码段分隔符的更优雅的方法?_C#_Coding Style - Fatal编程技术网

用C#编写代码段分隔符的更优雅的方法?

用C#编写代码段分隔符的更优雅的方法?,c#,coding-style,C#,Coding Style,在C#中,当我有不同的代码部分,如常量、API函数、帮助函数等时,我会将它们分开。我通常会这样使用: public class Foo { //================== Constants ================== private const string VIP = "Cob H."; private const int IMPORTANT_NUMBER = 23; //================== API

在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; }
      }
}
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
}
有没有一种优雅的方式来划分它们,而不是使用一堆丑陋的评论?就像在Objective-C中一样,您可以使用

#pragma mark - Inner Classes
我查看了C#中的所有关键字,没有一个看起来很有前途。

您可以使用

#region
允许您指定一块代码,在使用Visual Studio代码的大纲功能时可以展开或折叠该代码块 编辑

C#具有类似的功能。要使用区域,您的代码看起来有点像:

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; }
      }
}
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#编辑器允许您折叠区域,从而更容易浏览大型源文件。

您可以使用#区域,但也有一些与之相关的缺点,如人们倾向于将脏代码隐藏在其下或隐藏一些长时间的哭闹方法

我对您的方法也很满意,但基本上编写代码的方式不需要隐藏在区域下

如果你想让它可读,那么根本不需要分隔符

我尝试使用
#region
,但我不喜欢使用Ctrl+M,O(折叠到定义热键)来折叠区域,这样我就无法轻松看到每个区域中都有哪些函数/成员。我尝试使用块注释,但这些注释也会崩溃

我提出了自己的高可视性多行分隔符,在使用“塌陷到定义”时不会塌陷。也许其他人会发现这个想法很有用:


#区域常数#endregion
?哇,我真的很惊讶你们在这里回答问题的速度,所以,当我5分钟后回来看到所有的答案和投票时,我有一种错觉,在问了这个问题之后,我已经睡了一个晚上,然后才醒来。我要补充的唯一一件事是,你应该在#endregion指令(即#endregion常量)上输入区域的名称。这样,如果这个区域有点长,而你在底部,你就知道你在哪里。我强烈不同意你最后的评论。区域不是(也不应该)关于可读性,而是关于组织代码和处理感兴趣的区域,而不显示文件的其余部分。