Hello World In C # без точки с запятой - PullRequest
1 голос
/ 21 января 2011

Можно ли написать Hello World как в C без точки с запятой ;?

В C:

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

In C#:

//do stuff

Ответы [ 5 ]

17 голосов
/ 21 января 2011

Хитрость заключается в том, чтобы как-то построить выражение из чего-то, что возвращает void. И, к счастью, BeginInvoke делает именно это. Теперь нам нужно предотвратить завершение программы до того, как BeginInvoke напишет текст. Первоначально я просто использовал цикл для этого, но, как показал SLaks, мы можем использовать вместо него .AsyncWaitHandle.WaitOne(), потому что он возвращает bool.

Поместите это в функцию Main:

if(((System.Action<string>)System.Console.WriteLine).BeginInvoke("Hello world",null,null).AsyncWaitHandle.WaitOne())
{
}
9 голосов
/ 21 января 2011
if (MessageBox.Show("Hello World") == System.Windows.Forms.DialogResult.Yes)
{

}
6 голосов
/ 21 января 2011

Как это:

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 голосов
/ 02 сентября 2015
public static void Main()
{
    if (System.Console.WriteLine("Hello, World!") is object)
    {

    }
}

В существующих ответах либо используется метод вывода, отличный от Console.WriteLine, который не возвращает void, либо используется хитрость Begin* для получения выражения не void из метода void.Хитрость в том, что левый аргумент is может быть выражением void.Компилятор может предупредить, что «выражение никогда не имеет заданного типа», но код допустим.

1 голос
/ 21 января 2011

Расширение ответа SwDevMan81:

    static void Main(string[] args)
    {
        if (MessageBox.Show("Hello World!") is System.Windows.Forms.DialogResult)
        {
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...