如何在单个 C# 函数中为两个或多个不同的变量使用相同的名称? [关闭]
Posted
技术标签:
【中文标题】如何在单个 C# 函数中为两个或多个不同的变量使用相同的名称? [关闭]【英文标题】:How can I use the same name for two or more different variables in a single C# function? [closed] 【发布时间】:2014-12-15 21:13:54 【问题描述】:如何删除曾经声明和定义过的变量?
例如,在 C++ 中我会这样做:
int x;
..
delete x;
如何在 C# 中做到这一点?
(我需要这样做:
switch (something)
case 1:
int Number;
break;
case 2:
float Number;
break;
但我做不到,因为 Number 已经被 case 1 占用了...而且我想要相同的名称,所以我想在声明 float Number 之前删除 int Number,这样编译器就不会对我大喊大叫了. ;p
【问题讨论】:
delete x;
在 C++ 中并没有我认为你认为的那样......
简单;你没有。只是以不同的方式命名你的变量。正如@BenVoigt 所说,C++ 中的delete
也不会这样做。请告诉我你没有在 C++ 中删除你的整数,这很奇怪。
你不会在 C++ 中这样做。
C# 对本机类型进行自己的垃圾收集。如果您正在处理一个非本机对象,它们通常带有一个 Dispose() 函数来执行“删除”。在你的情况下,你可能不需要它
@juanchopanza 同意!
【参考方案1】:
您可以使用大括号使范围不重叠:
switch (something)
case 1:
int Number;
break;
case 2:
float Number;
break;
超出范围是变量名在您所说的意义上被“删除”的唯一方式。值得注意的是,与其他一些语言不同,C# 不允许将局部变量与其他变量隐藏在更有限的范围内——范围必须不重叠(在 C# 中,这意味着从左大括号开始,而不仅仅是声明点!)。我的意思是这段代码在 C 和 C++ 中是合法的(不确定 Java)会导致 C# 中的编译器错误:
int Number;
float Number;
【讨论】:
问题一开始就想好了,Visual Studio一直哭。 :/ //edit: 哦,等等,我在案例 1 中添加了括号,但在案例 2 中没有,这就是问题所在...:P 谢谢。以上是关于如何在单个 C# 函数中为两个或多个不同的变量使用相同的名称? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AWS Elastic Beanstalk 中为多个 grails 环境使用单个 .war?
如何在 GET 方法中为 Spring Boot 控制器类传递多个路径变量?