【c#基础】goto语句-goto跳转语句无法找到语句范围内的标签

goto

最近用到一次goto语句,才发现goto语句只能在标记过的区域内部使用,比如

 if(String.IsNullorAmpty(strBar))
 {
 	//do sth...
 	goto Mark1; //报错
 }
 if(WaitThread() == true)//线程等待信号
 {
    //do sth...   //调用第三方API过站
    Mark1: Display("准备发送完成信号");
    if(SendSignal() == true)
    {
    	//xxx
    }
    else
    {
    	//xxx
    }
    if(WaitThread2(int iOutTime) == false)//超时时间内线程2等待信号
    {
       goto Mark1;//正确
    }
 }

这个goto必须在Mark1的作用范围内才能生效。
详细的可以看一下这篇基本语法和使用:http://t.csdnimg.cn/HrfOv
第一个goto Mark1超出了Mark1的作用范围
而Mark1的作用范围在waitThread后的块语句内,包含内部的嵌套的语句。

总结

当然,冒然使用goto语句,这是业务逻辑发生了变化,以及我之前的设计思路错误。想要实现第一个goto,需要将下面的各个函数封装成新的函数然后去调用即可。不过因为函数内部业务串在一块嫌麻烦才试试goto的,这下只能去理一理业务逻辑去了,然后改一改之前设计的接口,不少东西都要改一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值