[英]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.