簡體   English   中英

沒有分號的C#中的Hello World

[英]Hello World In C# without semicolon

是否可以用C編寫沒有分號的Hello World ;

C

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

C#

//do stuff

訣竅是以某種方式從返回void的內容構造表達式。 幸運的是,BeginInvoke就是這樣做的。 現在我們需要防止程序在BeginInvoke編寫文本之前終止。 最初我只是為此使用循環,但是如SLaks所示,我們可以改用.AsyncWaitHandle.WaitOne()因為它返回的是bool

將其放入Main函數:

if(((System.Action<string>)System.Console.WriteLine).BeginInvoke("Hello world",null,null).AsyncWaitHandle.WaitOne())
{
}
if (MessageBox.Show("Hello World") == System.Windows.Forms.DialogResult.Yes)
{

}

像這樣:

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) { }
    }
}
public static void Main()
{
    if (System.Console.WriteLine("Hello, World!") is object)
    {

    }
}

現有答案使用與Console.WriteLine不同的輸出方法,該方法不會返回void ,或者使用Begin*技巧從void方法中獲取非void表達式。 這里的技巧是允許to的左手參數is一個void表達式。 編譯器可能會警告“表達式永遠不會屬於給定類型”,但是代碼是合法的。

擴展SwDevMan81的答案:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM