Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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/2/.net/24.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#_.net_Variable Declaration - Fatal编程技术网

C# 声明变量的两种方法相同吗?

C# 声明变量的两种方法相同吗?,c#,.net,variable-declaration,C#,.net,Variable Declaration,下面显示的两种声明变量的方法相同吗 int aa= 0, bb= 0, cc= 0, dd= 0; 它们是一样的。我认为,一旦你的名字更具描述性,第二种选择可能更容易阅读。它们是一样的。我认为,一旦你的名字更具描述性,第二种选择可能更容易阅读。是的 C#支持单个语句可以分配多个局部变量 一条语句可以分配多个局部变量。语言文字 派生自C风格的语法通常允许您使用逗号来声明 一条语句中包含多个变量。C语言允许这样做 从 声明多个变量的局部变量声明是 等价于具有相同属性的单个变量的多个声明 类型。此

下面显示的两种声明变量的方法相同吗

int aa= 0, bb= 0, cc= 0, dd= 0;


它们是一样的。我认为,一旦你的名字更具描述性,第二种选择可能更容易阅读。

它们是一样的。我认为,一旦你的名字更具描述性,第二种选择可能更容易阅读。

是的 C#支持单个语句可以分配多个局部变量

一条语句可以分配多个局部变量。语言文字 派生自C风格的语法通常允许您使用逗号来声明 一条语句中包含多个变量。C语言允许这样做

声明多个变量的局部变量声明是 等价于具有相同属性的单个变量的多个声明 类型。此外,局部变量中的变量初始值设定项 声明与指定的赋值语句完全对应 在声明之后立即插入

第一个
IL
code

 .locals init ([0] int32 aa,
           [1] int32 bb,
           [2] int32 cc,
           [3] int32 dd)
  IL_0000:  nop
  IL_0001:  ldc.i4.0
  IL_0002:  stloc.0
  IL_0003:  ldc.i4.0
  IL_0004:  stloc.1
  IL_0005:  ldc.i4.0
  IL_0006:  stloc.2
  IL_0007:  ldc.i4.0
  IL_0008:  stloc.3
  IL_0009:  ret
  .maxstack  1
  .locals init ([0] int32 aa,
           [1] int32 bb,
           [2] int32 cc,
           [3] int32 dd)
  IL_0000:  nop
  IL_0001:  ldc.i4.0
  IL_0002:  stloc.0
  IL_0003:  ldc.i4.0
  IL_0004:  stloc.1
  IL_0005:  ldc.i4.0
  IL_0006:  stloc.2
  IL_0007:  ldc.i4.0
  IL_0008:  stloc.3
  IL_0009:  ret
第二个
IL
code

 .locals init ([0] int32 aa,
           [1] int32 bb,
           [2] int32 cc,
           [3] int32 dd)
  IL_0000:  nop
  IL_0001:  ldc.i4.0
  IL_0002:  stloc.0
  IL_0003:  ldc.i4.0
  IL_0004:  stloc.1
  IL_0005:  ldc.i4.0
  IL_0006:  stloc.2
  IL_0007:  ldc.i4.0
  IL_0008:  stloc.3
  IL_0009:  ret
  .maxstack  1
  .locals init ([0] int32 aa,
           [1] int32 bb,
           [2] int32 cc,
           [3] int32 dd)
  IL_0000:  nop
  IL_0001:  ldc.i4.0
  IL_0002:  stloc.0
  IL_0003:  ldc.i4.0
  IL_0004:  stloc.1
  IL_0005:  ldc.i4.0
  IL_0006:  stloc.2
  IL_0007:  ldc.i4.0
  IL_0008:  stloc.3
  IL_0009:  ret
对 C#支持单个语句可以分配多个局部变量

一条语句可以分配多个局部变量。语言文字 派生自C风格的语法通常允许您使用逗号来声明 一条语句中包含多个变量。C语言允许这样做

声明多个变量的局部变量声明是 等价于具有相同属性的单个变量的多个声明 类型。此外,局部变量中的变量初始值设定项 声明与指定的赋值语句完全对应 在声明之后立即插入

第一个
IL
code

 .locals init ([0] int32 aa,
           [1] int32 bb,
           [2] int32 cc,
           [3] int32 dd)
  IL_0000:  nop
  IL_0001:  ldc.i4.0
  IL_0002:  stloc.0
  IL_0003:  ldc.i4.0
  IL_0004:  stloc.1
  IL_0005:  ldc.i4.0
  IL_0006:  stloc.2
  IL_0007:  ldc.i4.0
  IL_0008:  stloc.3
  IL_0009:  ret
  .maxstack  1
  .locals init ([0] int32 aa,
           [1] int32 bb,
           [2] int32 cc,
           [3] int32 dd)
  IL_0000:  nop
  IL_0001:  ldc.i4.0
  IL_0002:  stloc.0
  IL_0003:  ldc.i4.0
  IL_0004:  stloc.1
  IL_0005:  ldc.i4.0
  IL_0006:  stloc.2
  IL_0007:  ldc.i4.0
  IL_0008:  stloc.3
  IL_0009:  ret
第二个
IL
code

 .locals init ([0] int32 aa,
           [1] int32 bb,
           [2] int32 cc,
           [3] int32 dd)
  IL_0000:  nop
  IL_0001:  ldc.i4.0
  IL_0002:  stloc.0
  IL_0003:  ldc.i4.0
  IL_0004:  stloc.1
  IL_0005:  ldc.i4.0
  IL_0006:  stloc.2
  IL_0007:  ldc.i4.0
  IL_0008:  stloc.3
  IL_0009:  ret
  .maxstack  1
  .locals init ([0] int32 aa,
           [1] int32 bb,
           [2] int32 cc,
           [3] int32 dd)
  IL_0000:  nop
  IL_0001:  ldc.i4.0
  IL_0002:  stloc.0
  IL_0003:  ldc.i4.0
  IL_0004:  stloc.1
  IL_0005:  ldc.i4.0
  IL_0006:  stloc.2
  IL_0007:  ldc.i4.0
  IL_0008:  stloc.3
  IL_0009:  ret

,这是:

int aa = 0, bb = 0, cc, dd;
与以下更常见和可读的版本完全相同:

int aa = 0;
int bb = 0;
int cc;
int dd;
并且,它们产生相同的IL代码

但你问了一个好问题,因为事情可能比这更微妙

指针 在不安全的C#中,您可以使用指针。指向整数的指针写为
int*
。因此,当您想要声明三个
int*
类型的变量时,您可以编写以下代码:

int* aa, bb, cc;
这正确地代表了你的意图:

int* aa;
int* bb;
int* cc;
但是,指针的语法来自更古老的语言C,如果您在C中声明三个指针变量,如下所示:

int* aa, bb, cc;
这意味着一些微妙的不同,你实际上写了:

int* aa;
int bb;
int cc;
这就是为什么C开发人员将编写
int*aa
,以显示只有
aa
是指针类型,其余是普通整数

int *aa, bb, cc;
但是,我不鼓励您完全用C编写这样的东西:它令人困惑

visualbasic与VB.Net 在Visual Basic.NET中,还可以在一行上声明变量:

Dim aa,bb为整数
这与:

Dim aa作为整数
Dim bb作为整数
但如果使用Visual Basic(VB.Net的前身)编程,则:

Dim aa,bb为整数
指:

调暗aa,因为任何“aa”都是变体
Dim bb作为整数

,这是:

int aa = 0, bb = 0, cc, dd;
与以下更常见和可读的版本完全相同:

int aa = 0;
int bb = 0;
int cc;
int dd;
并且,它们产生相同的IL代码

但你问了一个好问题,因为事情可能比这更微妙

指针 在不安全的C#中,您可以使用指针。指向整数的指针写为
int*
。因此,当您想要声明三个
int*
类型的变量时,您可以编写以下代码:

int* aa, bb, cc;
这正确地代表了你的意图:

int* aa;
int* bb;
int* cc;
但是,指针的语法来自更古老的语言C,如果您在C中声明三个指针变量,如下所示:

int* aa, bb, cc;
这意味着一些微妙的不同,你实际上写了:

int* aa;
int bb;
int cc;
这就是为什么C开发人员将编写
int*aa
,以显示只有
aa
是指针类型,其余是普通整数

int *aa, bb, cc;
但是,我不鼓励您完全用C编写这样的东西:它令人困惑

visualbasic与VB.Net 在Visual Basic.NET中,还可以在一行上声明变量:

Dim aa,bb为整数
这与:

Dim aa作为整数
Dim bb作为整数
但如果使用Visual Basic(VB.Net的前身)编程,则:

Dim aa,bb为整数
指:

调暗aa,因为任何“aa”都是变体
Dim bb作为整数

您希望有什么不同?是的,它们是。由此产生的IL将是相同的。但是请注意,第二个变体更具可读性和常规性,谢谢..这消除了我的困惑..这个问题是完全正确的,因为在VB中它是不同的。所以我可以看看他是从哪里来的。@shartelle:在VB中它过去是不同的,但我相信“gotcha”是固定的。你会期望什么样的不同?是的,它们是。由此产生的IL将是相同的。但是请注意,第二个变体更具可读性和常规性,谢谢..这消除了我的困惑..这个问题是完全正确的,因为在VB中它是不同的。所以我可以看出他是从哪里来的。@shartelle:在VB中它过去是不同的,但我相信“gotcha”是固定的。