C#中的语句块内的不变性

C#语言规范规定,对于表达式中一个简单命名的标识符,在同一个即刻闭合控制块内或者switch块内(the immediately enclosing block or switch-block)的语义是恒定不变的。这条规则确保了在一个表达式的上下文的环境中,同一个名字在一个控制块内拥有相同的含义。否则会引发编译错误,如下:

class Test
{
double x;

void F(bool b) {   
     x = 1.0;
      //外围控制块
     if (b) {
         
        int x;
     //嵌套控制块是属于外围控制块, 同一个即刻闭合控制块
        x = 1;
       
     }
                
}                   
}

但是下面的就不会引发编译错误:

class Test
{
double x;

void F(bool b) {
     if (b) {
        x = 1.0;
//指向Test.x
     }
     else {
        int x;
//覆盖了Test.x
        x = 1;
     }
}
}

这些编译错误在C++是不会发生的。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值