C#中的局部变量冲突问题

一个变量在同一个作用域中不能够声明两次,如下代码错误。

using System;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

namespaceConsoleApplication1

{

  class Program

  {

    static void Main(string[] args)

    {

      int a =123;

      int a =456;

    }

  }

}

编译错误如下:


严重性


代码


说明


项目


文件



禁止显示状态


错误


CS0128


已在此范围定义了名为“a”的局部变量。


ConsoleApplication1


E:\01_workspace\02_programme_language\06_c#\2017\09\varConflict\ConsoleApplication1\ConsoleApplication1\Program.cs


14


活动


警告


CS0219


变量“a”已被赋值,但从未使用过它的值


ConsoleApplication1


E:\01_workspace\02_programme_language\06_c#\2017\09\varConflict\ConsoleApplication1\ConsoleApplication1\Program.cs


13


活动


警告


CS0219


变量“a”已被赋值,但从未使用过它的值


ConsoleApplication1


E:\01_workspace\02_programme_language\06_c#\2017\09\varConflict\ConsoleApplication1\ConsoleApplication1\Program.cs


14


活动

但是,如下代码正常:

using System;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

namespaceConsoleApplication1

{

  class Program

  {

    static void Main(string[] args)

    {

      for (int a = 0;a < 10; a++)

      {

        Console.WriteLine(a);

      }

      for (int a = 0;a < 10; a++)

      {

        Console.WriteLine(a* 2);

      }

    }

  }

}

编译后执行结果:

原因:在第一个循环结束后,a的作用域已经跳出。

以上这篇C#中的局部变量冲突问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • C#运行时相互关系浅析

    本文主要讲述运行时类型.对象.线程栈和托管堆之间的相互关系,静态方法.实例方法和虚方法的区别,以及内存的分配和回收. 线程栈:在一个进程中可能包含多个线程,一个线程在创建的时候,会分配到一个大小1MB大小的栈,栈用于存储方法的实参.形参以及方法内部的局部变量,栈是从高位内存地址向地位地址构建的,由于栈有先进后出的特点,所以先定义的变量后被回收. 下面来看一个简单的例子,让你更了解线程栈 由于线程栈是从高位开始分配内存,先分配的我就画在上面了,在调用F1();方法时,分配内存的顺序是:name->

  • 详解C#读写Excel的几种方法

    1 使用Office自带的库 前提是本机须安装office才能运行,且不同的office版本之间可能会有兼容问题,从Nuget下载 Microsoft.Office.Interop.Excel 读写代码如下: using Microsoft.Office.Interop.Excel; using Excel = Microsoft.Office.Interop.Excel; private void btn_Office_Click(object sender, EventArgs e) { s

  • C#中的局部变量冲突问题

    一个变量在同一个作用域中不能够声明两次,如下代码错误. using System; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; namespaceConsoleApplication1 { class Program { static void Main(string[] args) { int a =123; int a =456; } } }

  • jQuery中 $ 符号的冲突问题及解决方案

    在jQuery中,$是jQuery的别名,为了书写方便,我们更习惯用$('#id')这一类的方式来书写代码.当同一页面引用了jQuery多个版本或者jQuery与某些其他js库产生冲突,控制台就会报错. 同一个页面多个版本冲突解决办法 你可能会问,为什么在一个页面上会引用多个版本的jQuery,只引用一个不就好了吗? 答案是:不行.一般要用到两个(或以上)版本的jQuery库的原因是:现有的网站已经用了旧版本的jQuery以及相关插件,直接将jQuery升级到新版本会导致这些基于旧版本jQuer

  • C++中 静态局部变量实例详解

     C++中 静态局部变量实例详解 以前经常使用和了解static作用在全局变量前,以至于甚至把static当做全局变量的代名词,但是其实static还可以作用于局部变量前 静态局部变量的意义: 1.分配空间在全局数据栈上 2.作用域只局限于当前的函数范围内(局部) 3.生命周期为整个程序,不会随着当前的函数结束而结束 4.首次初始化时赋值生效,以后的初始化赋值自动跳过 如 void fn() { static n=10; cout<<n<<endl; n++; } 这里的n是一个静

  • 浅谈java中的局部变量和全局变量

    本文对java中的局部变量和全局变量作了如下介绍: 1.局部变量: 局部变量的定义:定义在方法中的变量都是局部变量(main方法也是方法,所以定义在main方法中的变量也是局部变量). 生存时间:局部变量的生存时间和方法的生存时间一致,调用该方法声明该局部变量并初始化的时,该局部变量被创建并分配内存空间:直到该方法调用结束局部变量也就结束了: 是否需要初始化:局部变量在使用前必须进行初始化,系统默认不会对局部变量进行初始化数据操作,如果局部变量在使用前没有进行初始化则会在编译器报错:如果局部变量

  • 深入理解C++编程中的局部变量和全局变量

    局部变量 在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的.同样,在复合语句中定义的变量只在本复合语句范围内有效.这称为局部变量(local variable).如: 对局部变量的一些说明: 1) 主函数main中定义的变量(m, n)也只在主函数中有效,不会因为在主函数中定义而在整个文件或程序中有效.主函数也不能使用其他函数中定义的变量. 2) 不同函数中可以使用同名的变量,它们代表不同的对象,互不干扰.例如,在f

  • 解决Kotlin 类在实现多个接口,覆写多个接口中相同方法冲突的问题

    一.首先来看一个例子 package net.println.kotlin.chapter4 /** * @author:wangdong * @description:类实现接口的冲突问题 */ interface B{ fun x(): Int = 1 } interface C{ fun x(): Int = 0 } /**一个类实现了两个接口,两个接口中的方法相同,这个类在覆写的时候就会出现冲突*/ class D: B,C{ //当下面两个方法同时存在的时候,就会报方法相同的冲突 ov

  • Maven中jar包冲突原理与解决办法

    Maven中jar包冲突是开发过程中比较常见而又令人头疼的问题,我们需要知道 jar包冲突的原理,才能更好的去解决jar包冲突的问题.本文将从jar包冲突的原理和解决两个方面阐述Maven中jar包冲突的解决办法. 一.Maven中jar包冲突产生原因 MAVEN项目运行中如果报如下错误: Caused by:java.lang.NoSuchMethodError Caused by: java.lang.ClassNotFoundException 十有八九是Maven jar包冲突造成的.那

  • JDK10中的局部变量类型推断var

    Java是一种强类型, 许多流行的编程语言都已经支持局部变量类型推断,如js,Python,C++等 JDK10 可以使用var作为局部变量类型推断标识符 Local-Variable Type Inference(局部变量量类型推断),顾名思义只能用做为局部变量 注意 仅适用于局部变量量,如 增强for循环的索引,传统for循环局部变量不能使用于方法形参.构造函数形参.方法返回类型或任何其他类型的变量量声明标识符var不是关键字,而是一个保留类型名称,而且不支持类或接口叫var,也不符合命名规

  • 使用git处理github中提交有冲突的pull request的问题

    前言: 为什么要写这篇文章,因为前段时间有一个开源的github中的项目有一个朋友提交了一个pr看了下是帮忙优化了下代码(十分感谢这位网友).但是他提交的pr刚好和我的项目有许多的冲突导致无法自动合并,在github中提示只能使用命令行指令进行合并,因为这种情况处理的比较少为了以后方便使用在这里记录一下. github中的大概命令合并指令 1.首先我们需要下载一个git分布式管理工具 下载Git链接地址:https://git-scm.com/ 2.然后我们需要clone下我们的项目 git c

  • 详细聊聊如何在C#循环中捕获局部变量

    目录 问题: 解答方案: 总结 问题: 我遇到了一个有趣的问题,它的代码大概是这样的. List<Func<int>> actions = new List<Func<int>>(); int variable = 0; while (variable < 5) { actions.Add(() => variable * 2); ++ variable; } foreach (var act in actions) { Console.Writ

随机推荐