程序员开发实例大全宝库

网站首页 > 编程文章 正文

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

zazugpt 2024-10-15 19:15:29 编程文章 16 ℃ 0 评论

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

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

下面来看一个演示

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

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

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



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

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

下面请看注解:



// 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

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表