孙展波:实现.NET无限潜力

Realize .NET Potential (中文版)
随笔 - 417, 评论 - 12186, 引用 - 54

导航

关于

贴子以"现状"提供且没有任何担保也没有授予任何权利。
计数器(2005/12/8起).点击阅读我的Blog In English

标签

每月存档

最新留言

广告

 

C/C++下合法的语句:

 

  int test = 1;

  if (test != 0)

  {

       char test = 'a';

  }

 

却不能在C#下编译,得到CS0136的错误: A local variable named 'test' cannot be declared in this scope because it would give a different meaning to 'test', which is already used in a 'parent or current' scope to denote something else,

 

C#规范8.5.1之中对此作了明确的规定:Within the scope of a local variable, it is a compile-time error to declare another local variable or constant with the same name.                    

 

所以C#对局部变量的声明更严格。而之所以有这样的规定,我想主要目的是防止编程的无意之中的错误。

 

贴子以"现状"提供且没有任何担保也没有授予任何权利

打印 | 张贴于 2004-10-26 11:49:00 | Tag:C#

留言反馈

#回复: C#对局部变量的声明更严格 编辑
研究的好仔细啊,,,,
2007-06-10 08:04:00 | [匿名用户:dotnet]
#re: C#对局部变量的声明更严格 编辑
foreach(string str in strs)
{
str=str.Trim();//错误!
}

str在这种情况下是只读的。
2005-01-13 10:09:00 | [匿名用户:chenyuming2004]
#re: C#对局部变量的声明更严格 编辑
public string sqlLike(string sql, string a,string b) //建立SQL模糊where语句的函数
{
b=System.Trim(b);
if(b!="")//如果客户端没有提交此值,则不会产生相应的SQL语句。
{
if(a=="File_Vol_ID")
{
sql = sql + " and (" + a + " = '" + b.Replace("'","").Trim() + "')";
}
else
{
sql = sql + " and (" + a + " like '%" + b.Replace("'","").Trim() + "%')";
}
}
return sql;
}
2005-01-10 21:32:00 | [匿名用户:这个开来也是的,该怎么办?????]
#re: C#对局部变量的声明更严格 编辑
好无聊啊,为什么要求那么严格啊,不爽啊……
2004-12-14 23:51:00 | [匿名用户:隆八多]
#re: C#对局部变量的声明更严格 编辑
C#语言规范已经随着VS.NET一起安装。在Microsoft Visual Studio.NET 2003\Vc7\语言代码文件夹\下。语言代码文件夹是随着VS.NET的语言版本而定的。如果是中文就是Microsoft Visual Studio.NET 2003\Vc7\2052\这份文档已经翻译成了中文。

我很奇怪,为什么C#的语言规范要放到VC文件夹中。这算不算一个bug呢?真不知道如果在安装VS.NET的时候没有选装Visual C++ 7 这份C#语言规范要放在哪里。
2004-11-03 09:48:00 | [匿名用户:Michael Lee]
#re: C#对局部变量的声明更严格 编辑
睫毛膏
2004-10-29 15:03:00 | [匿名用户:睫毛膏]
#re: C#对局部变量的声明更严格 编辑
”C#规范8.5.1“是一本Microsoft出的手册<<C#规范>>的第8.5.1章节.
2004-10-27 18:53:00 | [匿名用户:caca]
#re: C#对局部变量的声明更严格 编辑
请问楼主怎么找到 ”C#规范8.5.1“ 这个资料的?是以前就知道,还是?
2004-10-27 09:15:00 | [匿名用户:hychieftain]
#re: C#对局部变量的声明更严格 编辑
这个倒没有什么。
我最讨厌的是这个也禁止了:

foreach(string str in strs)
{
str=str.Trim();//错误!
}

2004-10-26 16:20:00 | [匿名用户:Lostinet]
#re: C#对局部变量的声明更严格 编辑
这个样子应该是可以的:
try
{
  int a = 1;
}
catch
{
  char a = 'a';
}
2004-10-26 12:27:00 | [匿名用户:Ninputer]
#re: C#对局部变量的声明更严格 编辑
To:Zhanbo,我有个问题不知你能否给些思路?
我想对windows Xp里的某个文件夹加个密码,
不知用C#如何来简单实现,你能否指点一下?thanks !





2004-10-26 12:24:00 | [匿名用户:Roopeman]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.1.0