当前位置: 首页 > news >正文

c#入门-goto语句

goto语句

goto语句可以用来跳转当前执行的语句。
早在循环发明前可以用来代替循环使用。
但在循环发明后,因为循环更可观,安全,逐渐的不建议使用goto语句。

如果一个程序里到处包含goto语句,那么可读性极差。
你需要找到下一句跳转执行的语句在哪里,理解成本会很大。
对程序也不好。即将运行的指令都是按顺序存放的,上窜下跳性能也会有影响。

但是goto可以执行比循环更复杂的跳转,
不依赖于循环就能跳转到一个无关的地方,
或者一次性跳出多层循环。

声明标签

标签使用标识符+冒号表示,写在一条语句前面。
这个标签标记了他后面的那条语句。

A:
Console.WriteLine("A");
B:
Console.WriteLine("B");

标签同样有作用域的限制。
所以虽然goto的范围很大,但仍然不能直接跳转进子语句块中。

执行跳转

执行跳转的语法是goto+空格+标签。

int i = 12;
if (i > 10)
	goto A;
else
	goto B;

标签作用域整个语句块。所以这个跳转语句可以放在标签声明前,也可以放在标签声明后。
即便有goto的存在,编译器也会尽心尽力地检查哪些变量是没用初始值的。
虽然编译器能检查出来,但是人很难看出并理解为什么不是一定经过初始值赋值。

int i = 12;

int a;
if (i > 10)
	goto A;
else
	goto B;

a = 12; 
A:
Console.WriteLine("A");
a = 13;
B:
Console.WriteLine("B");
 
Console.WriteLine(a);

相关文章:

  • Java里一个线程调用了Thread.interrupt()到底意味着什么?
  • STM32——TIM输出比较
  • 图的遍历(深度DFS与广度BFS)
  • STM32——OLED调试工具与显示屏
  • 【Linux】操作系统及进程概念
  • 第二章:Swagger2
  • 2022 CSDN年度报告已出炉
  • 场景题:假设10W人突访,你的系统如何做到不 雪崩?
  • 自然语言处理 第十章 信息抽取 复习
  • 【C++进阶】IO流
  • 【学Vue就像玩一样】什么是计算属性?什么使监视属性?
  • 【Vue路由】props配置、replace属性、编程式路由导航、缓存路由组件
  • API接口测试简介
  • 计算机网络(二)Linux网络编程
  • Node.js--》如何在Node.js中操作MySQL
  • 4. 路由到控制器 - Laravel从零开始教程
  • CSS魔法堂:Absolute Positioning就这个样
  •  D - 粉碎叛乱F - 其他起义
  • javascript 总结(常用工具类的封装)
  • Java程序员幽默爆笑锦集
  • mysql innodb 索引使用指南
  • pdf文件如何在线转换为jpg图片
  • SpiderData 2019年2月23日 DApp数据排行榜
  • 构建二叉树进行数值数组的去重及优化
  • 关于Java中分层中遇到的一些问题
  • 基于Android乐音识别(2)
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 聚簇索引和非聚簇索引
  • 山寨一个 Promise
  • 深入浅出Node.js
  • 实习面试笔记
  • 译有关态射的一切
  • 主流的CSS水平和垂直居中技术大全
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 《码出高效》学习笔记与书中错误记录
  • Nginx实现动静分离
  • #QT(智能家居界面-界面切换)
  • #每日一题合集#牛客JZ23-JZ33
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (6)添加vue-cookie
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (C语言)二分查找 超详细
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (五)MySQL的备份及恢复
  • (原)Matlab的svmtrain和svmclassify
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)平衡树
  • ... 是什么 ?... 有什么用处?
  • .net core 6 集成和使用 mongodb
  • .net core使用ef 6