你好世界在C#没有分号

时间:2011-01-21 13:26:21

标签: c# console

是否可以在没有分号Hello World的{​​{1}}中写C

;

C

if(printf("Hello World!")) //prints Hello World { }

C#

5 个答案:

答案 0 :(得分:17)

诀窍是以某种方式从返回void的东西构造表达式。幸运的是,BeginInvoke正是这样做的。现在我们需要在BeginInvoke写入文本之前阻止程序终止。最初我只使用了一个循环,但是由于SLaks显示我们可以使用.AsyncWaitHandle.WaitOne()代替,因为它返回bool

将其放入Main函数:

if(((System.Action<string>)System.Console.WriteLine).BeginInvoke("Hello world",null,null).AsyncWaitHandle.WaitOne())
{
}

答案 1 :(得分:9)

if (MessageBox.Show("Hello World") == System.Windows.Forms.DialogResult.Yes)
{

}

答案 2 :(得分:6)

像这样:

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) { }
    }
}

答案 3 :(得分:3)

public static void Main()
{
    if (System.Console.WriteLine("Hello, World!") is object)
    {

    }
}

现有答案使用的输出方法与Console.WriteLine不同的输出方法不会返回void,或使用Begin*技巧获取非void表达式一个void方法。这里的技巧是允许is的左手参数为void表达式。编译器可能会警告&#34;表达式永远不是给定类型的#34;,但代码是合法的。

答案 4 :(得分:1)

扩展SwDevMan81的答案:

    static void Main(string[] args)
    {
        if (MessageBox.Show("Hello World!") is System.Windows.Forms.DialogResult)
        {
        }
    }