Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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# - Fatal编程技术网

C# 一行中的单个声明和多个声明之间有什么区别?

C# 一行中的单个声明和多个声明之间有什么区别?,c#,C#,我想知道这两种声明变量的方法之间的区别 类型1 private string procedure_add = ""; private string procedure_update = ""; private string procedure_delete = ""; 类型2 private string procedure_add = "", procedure_update = "", procedure_delete = ""; 这会产生同样的效果吗?。内存消耗是否相同 没有任何区别。

我想知道这两种声明变量的方法之间的区别

类型1

private string procedure_add = "";
private string procedure_update = "";
private string procedure_delete = "";
类型2

private string procedure_add = "", procedure_update = "", procedure_delete = "";

这会产生同样的效果吗?。内存消耗是否相同

没有任何区别。只是编码风格

编辑

正如第一种情况中所述,您可以修改可访问性。 从代码生成的角度来看,这两个版本生成的代码完全相同
IL

MyClass..ctor:
IL_0000:  ldarg.0     
IL_0001:  ldstr       ""
IL_0006:  stfld       UserQuery+MyClass.procedure_add
IL_000B:  ldarg.0     
IL_000C:  ldstr       ""
IL_0011:  stfld       UserQuery+MyClass.procedure_update
IL_0016:  ldarg.0     
IL_0017:  ldstr       ""
IL_001C:  stfld       UserQuery+MyClass.procedure_delete
IL_0021:  ldarg.0     
IL_0022:  call        System.Object..ctor
IL_0027:  ret    

没有任何区别。只是编码风格

编辑

正如第一种情况中所述,您可以修改可访问性。 从代码生成的角度来看,这两个版本生成的代码完全相同
IL

MyClass..ctor:
IL_0000:  ldarg.0     
IL_0001:  ldstr       ""
IL_0006:  stfld       UserQuery+MyClass.procedure_add
IL_000B:  ldarg.0     
IL_000C:  ldstr       ""
IL_0011:  stfld       UserQuery+MyClass.procedure_update
IL_0016:  ldarg.0     
IL_0017:  ldstr       ""
IL_001C:  stfld       UserQuery+MyClass.procedure_delete
IL_0021:  ldarg.0     
IL_0022:  call        System.Object..ctor
IL_0027:  ret    

没什么区别,那只是一张速记

没有区别,那只是一个简写

我认为没有什么不同,从我的理解来看,第二种类型是最小化代码行。

我认为没有什么不同,从我的理解来看,第二种类型是最小化代码行。

没有任何区别。这都是关于可访问性。代码的外观。 假设您有10000多行代码,在编辑时,您可能会被标识声明中的“,”而难倒

  • 如果您有一个或两个变量,那么在一行中声明它
  • 在单独的行中编写每个声明将使代码看起来更干净,更易于调试 这是我喜欢使用的方法

    private string yourVar = String.Empty;
    

    没有任何区别。这都是关于可访问性。代码的外观。 假设您有10000多行代码,在编辑时,您可能会被标识声明中的“,”而难倒

  • 如果您有一个或两个变量,那么在一行中声明它
  • 在单独的行中编写每个声明将使代码看起来更干净,更易于调试 这是我喜欢使用的方法

    private string yourVar = String.Empty;
    

    除了总体上的“它们相同,但可读性不同”之外,我想补充三点意见:

  • 在Visual Basic 6(及更早版本)
    Dim x中,y作为整数
    将导致y是整数,x是变量
  • 在C
    int*ip中,i将导致ip是指向int的指针,而i是int的指针
  • 在不安全的C#code
    int*ip中,i将导致ip是指向int的指针,而i也是指向int的指针

  • 除了总体上的“它们相同,但可读性不同”之外,我想补充三点意见:

  • 在Visual Basic 6(及更早版本)
    Dim x中,y作为整数
    将导致y是整数,x是变量
  • 在C
    int*ip中,i将导致ip是指向int的指针,而i是int的指针
  • 在不安全的C#code
    int*ip中,i将导致ip是指向int的指针,而i也是指向int的指针

  • 确切地但是,使用单行可以精确地修改辅助功能。但是,使用单行可以修改可访问性。我建议您使用
    string.Empty
    而不是
    。这应该在有关编程的各种书籍中进行解释。你可以在SOThanks all上查看这里@Serge string.Empty和“”有什么不同?@Sagotharan,下面是答案:。长话短说,出于可读性的原因。@Serge:对,我发现
    字符串更可读。Empty
    我建议您使用
    字符串。Empty
    而不是
    。这应该在有关编程的各种书籍中加以解释。你可以在SOThanks all上查看这里@Serge string.Empty和“”有什么不同?@Sagotharan,下面是答案:。长话短说,因为可读性的原因。@Serge:对,我发现
    字符串更可读。空的
    +1谢谢你的即时回答。扩展你的答案,它会更有帮助。+1感谢你的即时回答。扩大你的答案,它会更有帮助。