C#中的Hello World不带分号
是否可以像在C#中的Hello World不带分号,c#,console,C#,Console,是否可以像在C中那样编写Hello World,而不使用分号 在C中: if(printf("Hello World!")) //prints Hello World { } 在C#中: 扩展SwDevMan81的答案: static void Main(string[] args) { if (MessageBox.Show("Hello World!") is System.Windows.Forms.DialogResult)
C
中那样编写Hello World
,而不使用分号代码>
在C
中:
if(printf("Hello World!")) //prints Hello World
{
}
在C#
中:
扩展SwDevMan81的答案:
static void Main(string[] args)
{
if (MessageBox.Show("Hello World!") is System.Windows.Forms.DialogResult)
{
}
}
扩展SwDevMan81的答案:
static void Main(string[] args)
{
if (MessageBox.Show("Hello World!") is System.Windows.Forms.DialogResult)
{
}
}
像这样:
class Program {
static void Main(string[] args) {
if (System.Console.OpenStandardOutput()
.BeginWrite(new byte[] { 072, 101, 108, 108, 111, 032, 087, 111, 114, 108, 100, 033 },
0, 12, null, null)
.AsyncWaitHandle.WaitOne()) { }
if (System.Console.ReadKey().Modifiers == 0) { }
}
}
像这样:
class Program {
static void Main(string[] args) {
if (System.Console.OpenStandardOutput()
.BeginWrite(new byte[] { 072, 101, 108, 108, 111, 032, 087, 111, 114, 108, 100, 033 },
0, 12, null, null)
.AsyncWaitHandle.WaitOne()) { }
if (System.Console.ReadKey().Modifiers == 0) { }
}
}
诀窍是以某种方式从返回void的内容构造表达式。幸运的是BeginInvoke做到了这一点。现在我们需要防止程序在BeginInvoke编写文本之前终止。最初我只是使用了一个循环,但是SLaks显示我们可以使用.AsyncWaitHandle.WaitOne()
,因为它返回一个bool
将其放入Main
功能:
if(((System.Action<string>)System.Console.WriteLine).BeginInvoke("Hello world",null,null).AsyncWaitHandle.WaitOne())
{
}
if(((System.Action)System.Console.WriteLine).BeginInvoke(“Hello world”,null,null).AsyncWaitHandle.WaitOne())
{
}
诀窍在于以某种方式从返回void的内容构造表达式。幸运的是BeginInvoke做到了这一点。现在我们需要防止程序在BeginInvoke编写文本之前终止。最初我只是使用了一个循环,但是SLaks显示我们可以使用.AsyncWaitHandle.WaitOne()
,因为它返回一个bool
将其放入Main
功能:
if(((System.Action<string>)System.Console.WriteLine).BeginInvoke("Hello world",null,null).AsyncWaitHandle.WaitOne())
{
}
if(((System.Action)System.Console.WriteLine).BeginInvoke(“Hello world”,null,null).AsyncWaitHandle.WaitOne())
{
}
现有答案要么使用与控制台不同的输出方法。WriteLine
不返回void
,要么使用Begin*
技巧从void
方法中获取非void
表达式。这里的技巧是,的左手参数是
被允许是一个void
表达式。编译器可能会警告“表达式永远不是给定的类型”,但代码是合法的
现有答案要么使用与控制台不同的输出方法。WriteLine不返回
void
,要么使用Begin*
技巧从void
方法中获取非void
表达式。这里的技巧是,的左手参数是
被允许是一个void
表达式。编译器可能会警告“表达式永远不是给定的类型”,但代码是合法的。不,即使你可以,谁在乎呢?我不知道“VIVA”是什么,但如果有人让我这么做,我想我会退出。祝你在找工作时好运;外面很艰难。在这个问题上的否决票似乎有点苛刻。@Banang记住,这是一个问答网站,旨在帮助人们。并非每个问题都需要帮助整个社区。试着少一点苛刻。这是一个有趣的挑战,没有比在这里如此流行的代码高尔夫线程更毫无意义。不,即使你可以,谁在乎呢?我不知道什么是“万岁”,但如果有人让我这么做,我想我会退出。祝你在找工作时好运;外面很艰难。在这个问题上的否决票似乎有点苛刻。@Banang记住,这是一个问答网站,旨在帮助人们。并非每个问题都需要帮助整个社区。试着少一点苛刻。这是一个有趣的挑战,和这里流行的代码高尔夫线程一样毫无意义。但是,这不会写入控制台。但是,这不会写入控制台。非常非常好!;-)这是迄今为止我最喜欢的代码片段+1用于.AsyncWaitHandle.WaitOne()
。但在林帕德对我不起作用。它要么在写之前终止,要么根本不终止。@Daniel:这很有效;我试过了@代码:在控制台项目中尝试它。是的,它现在可以使用您刚才添加的Console.ReadKey()
,因为这样会刷新控制台。通过将flush调用作为异步操作的回调传递,您可以在一条语句中完成这一切:。。。0,12,a=>Console.ReadKey(),null)
我发现它也不适用于您的字节数组,这很奇怪。我必须把Encoding.UTF8.GetBytes(“Hello World!”)放得非常好!;-)这是迄今为止我最喜欢的代码片段+1用于.AsyncWaitHandle.WaitOne()
。但在林帕德对我不起作用。它要么在写之前终止,要么根本不终止。@Daniel:这很有效;我试过了@代码:在控制台项目中尝试它。是的,它现在可以使用您刚才添加的Console.ReadKey()
,因为这样会刷新控制台。通过将flush调用作为异步操作的回调传递,您可以在一条语句中完成这一切:。。。0,12,a=>Console.ReadKey(),null)
我发现它也不适用于您的字节数组,这很奇怪。我必须将Encoding.UTF8.GetBytes(“Hello World!”)替换为SLaks答案中的AsyncWaitHandle.WaitOne的无止境循环。在控制台应用程序中尝试了这一点-它需要使用系统代码>以便工作(SLaks的答案不起作用)。答案很好,因为我在LinqPad中测试,使用系统代码>是隐式的。从SLaks的答案中用AsyncWaitHandle.WaitOne替换了无休止的循环。在控制台应用程序中尝试了这一点-它需要使用系统代码>以便工作(SLaks的答案不起作用)。答案很好,因为我在LinqPad中测试,使用系统代码>是隐式的。