C#一行代码写一个猜数字游戏,Java程序员表示根本不可能做到[通俗易懂]

C#一行代码写一个猜数字游戏,Java程序员表示根本不可能做到[通俗易懂]// args是 main函数程序入口主参, C#9.0使用语法糖隐蔽了main函数,但此参数还在,程序的核心是利用此参数赋值语句的返回值副作用

大家好,欢迎来到IT知识分享网。

单纯从技术上来讲,C#/.NET是当今世界上最强劲的编程语言和框架。

它有着比Python更快的开发效率,媲美C++等本机语言的底层执行速度。

下面来看一个演示

C#一行代码写一个猜数字游戏,Java程序员表示根本不可能做到[通俗易懂]

猜数字游戏运行效果图

C#9.0新增特性:顶级程序语句(Top-Level Programs)

这个特性配合C#的强大语法,使得我们可以真正以一行代码实现一个功能完整的程序。

真正的一行代码(一个分号!) 连main函数都省了!

C#一行代码写一个猜数字游戏,Java程序员表示根本不可能做到[通俗易懂]

真正的“一行”

可以看到,源代码没有引入任何外部包,外部函数,纯标准库实现。

C#本身并非链式编程特性的语言,但我们可以借助它的强大语法能力,完成这个挑战。

下面请看注解:

C#一行代码写一个猜数字游戏,Java程序员表示根本不可能做到[通俗易懂]

展开注释

// args是 main函数程序入口主参, C#9.0使用语法糖隐蔽了main函数,但此参数还在,程序的核心是利用此参数赋值语句的返回值副作用来避免开新行

// args[0] “12345” 为主循环表,表示有5次猜数字机会

// args[1] new Random() 随机产生一个1-100的数字

// args[2] 用来存储用户输入的数字

// args[3] 用来存储判断结果:如 “答对了”,“太大”,“太小”

//arg是args[0]的当前循环索引

//x是被Invoke调用端传进来的 目标随机数,用来和Console.ReadLine接收的用户输入最比对,在打印结果的同时,

//把“太大” “太小” “答对了” 这样的字符串结果存入到args[3]里面

//结果长度大于3,就是那句“恭喜答对了“ 退出程序。 否则继续下一轮猜数字

//这里使用DynamicInvoke只是为了解决void访问类型不能再接表达式的问题。

//as int? 恒为否,将随机数字字符串转换成数字x传入上面的Action<int?>

//这里DynamicInvoke ??也只为了链接语句, 执行到这里说明次数用完了,否则在上面就会主动退出程序。

源码:

https://github.com/nsnail/GuessNumber.git

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/6776.html

(0)
上一篇 2022-12-20 17:00
下一篇 2022-12-20 17:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信