C#和Java变量命名区别(分析有误请指出,刚接触C#还在学习中)

以下是亲测:

C#代码如下,正常编译通过,与Java无区别

using System;
  
namespace Wrox.ProCSharp.Basics
{
   public class ScopeTest
   {
      public static int Main()
      {
         for (int i = 0; i < 10; i++)
         {
            Console.WriteLine(i);
         }   // i在这里超出范围。
 
         for (int i = 9; i >= 0; i--)
         {
            Console.WriteLine(i);
         }   // i在这里超出范围。
         return 0;
      }
   }
}


java代码如下,均可以正常编译

public static void main(String[] args) {
		
		for (int i = 0; i < 9; i++) {
			System.out.println(i);
		}
		
		for (int i = 9; i >= 0; i--) {
			System.out.println(i);
		}
	}

C#代码如下不能正常编译:

using System;
  
namespace Wrox.ProCSharp.Basics
{
   public class ScopeTest
   {
      public static int Main()
      {
         for (int i = 0; i < 10; i++)
         {
            Console.WriteLine(i);
         }   // i在这里超出范围。
 
         int i=3;
	 Console.ReadLine();
         return 0;
      }
   }
}

编译出错,见下图:

C#和Java变量命名区别(分析有误请指出,刚接触C#还在学习中)_第1张图片


java代码正常编译通过

public static void main(String[] args) {
		
		for (int i = 0; i < 9; i++) {
			System.out.println(i);
		}
		
		int i=3;
		System.out.println(i);
	}

C#正在学习,有错请指出,采用Visual Studio 2013环境编译

通过以上测试,说下自己看法:


C#和Java中,for、while或类似语句中声明的局部变量都存在于循环体内

C#中出了循环体外之后可以再次声明一个不在同一作用域的同名的局部变量,而Java中是可以再次在局部变量之外声明同名的局部变量的!(表述有点绕口,大家看实例懂的就好)

你可能感兴趣的:(java变量,C#变量)