我理解的17種C#寫的Hello World程式

來源:互聯網
上載者:User

純粹文法學習

使用C#編寫17種Hello World程式 
--------------------------------------------------------------------------------
 
1. A Beginners Hello World   初學者
public class HelloWorld
{
  public static void Main()
  {
    System.Console.WriteLine("HELLO WORLD");
  }
}

2. Slightly improved version   略有提高
using System;  (就這?會用命名空間?)

public class HelloWorld
{
  public static void Main()
  {
    Console.WriteLine("HELLO WORLD");
  }
}

3. Command Line Arguments
using System;

public class HelloWorld
{
  public static void Main(string[] args)   //會傳參數了
  {
    Console.WriteLine(args[0]);
  }
}

4. From Constructor
using System;
public class HelloWorld
{
  public HelloWorld()
  {
    Console.WriteLine("HELLO WORLD");
  }

  public static void Main()
  {
    HelloWorld hw = new HelloWorld();  //會用類了?構造?
  }
}

5. More OO
using System;
public class HelloWorld
{
  public void helloWorld()
  {
    Console.WriteLine("HELLO WORLD");
  }

  public static void Main()
  {
    HelloWorld hw = new HelloWorld();
    hw.HelloWorld();   //更進一步的物件導向?會用方法了?
  }
}

6. From another class
using System;
public class HelloWorld
{
  public static void Main()
  {
    HelloWorldHelperClass hwh = new HelloWorldHelperClass();   //類裡調用其它類?
    hwh.writeHelloWorld();
  }
}

public class HelloWorldHelperClass
{
  public void writeHelloWorld()
  {
    Console.WriteLine("Hello World");
  }
}

7. Inheritance
abstract class HelloWorldBase  //抽象類別
{
  public abstract void writeHelloWorld();
}
class HelloWorld : HelloWorldBase  //繼承----不得不嚴肅起來了,能抽象的已經可以做系統架構設計了!
{
  public override void writeHelloWorld()
  {
    Console.WriteLine("Hello World");
  }
}
class HelloWorldImp
{
  static void Main() {
    HelloWorldBase hwb = HelloWorld;
    HelloWorldBase.writeHelloWorld();
  }
}

8. Static Constructor
using System;
public class HelloWorld
{
  private static string strHelloWorld;

  static HelloWorld()    //靜態構造
  {
    strHelloWorld = "Hello World";
  }
  void writeHelloWorld()
  {
    Console.WriteLine(strHelloWorld);    }

  public static void Main()
  {
    HelloWorld hw = new HelloWorld();   //需要嗎?
    hw.writeHelloWorld();   //平常我會覺得很可笑----居然寫得這麼囉嗦

  }
}

9. Exception Handling
using System;

public class HelloWorld
{
  public static void Main(string[] args)
  {
    try
    {
      Console.WriteLine(args[0]);
    }
    catch(IndexOutOfRangeException e)   //會用異常處理了,但如何更好回收資源呢?異常接下來應該是資源回收啊?我以前也犯這種毛病,GC應該怎麼更好使用,我到現在還不是很純熟
    {
      Console.WriteLine(e.ToString());
    }
  }
}

10. Creating a DLL and using it in an application   //做組件嗎?
using System;

namespace HelloLibrary
{
  public class HelloMessage
  {
    public string Message
    {
      get
      {
        return "Hello, World!!!";
      }
    }
  }
}

//------

using System;
using HelloLibrary;

namespace HelloApplication
{
  class HelloApp
  {

    public static void Main(string[] args)
    {
      HelloMessage m = new HelloMessage();

    }
  }
}

11. Using Property  
using System;
public class HelloWorld
{
  public string strHelloWorld
  {
    get   //會用屬性了
    {
      return "Hello World";
    }
  }

  public static void Main()
  {
    HelloWorld hw = new HelloWorld();
    Console.WriteLine(cs.strHelloWorld);
  }
}

12. Using Delegates    //委託!
using System;
class HelloWorld
{
  static void writeHelloWorld() {
    Console.WriteLine("HelloWorld");
  }
  static void Main() {
    SimpleDelegate d = new SimpleDelegate(writeHelloWorld);  //委託?!?!
    d();   //文法的確這麼寫,但含義無法理解;因為實在體會不出好處來
  }
}

13. Using Attributes    //我不會!補習去!
#define DEBUGGING

using System;
using System.Diagnostics;

public class HelloWorld : Attribute
{
  [Conditional("DEBUGGING")]

  public void writeHelloWorld()
  {
    Console.WriteLine("Hello World");
  }

  public static void Main()
  {
    HelloWorld hw = new HelloWorld();

    hw.writeHelloWorld();
  }
}

14. Using Interfaces   //會用介面了
using System;

interface IHelloWorld
{
  void writeHelloWorld();
}

public class HelloWorld : IHelloWorld
{
  public void writeHelloWorld()
  {
    Console.WriteLine("Hello World");
  }

  public static void Main()
  {
    HelloWorld hw = new HelloWorld();

    hw.writeHelloWorld();
  }
}

15. Dynamic Hello World  //我不會again!補習去again!
using System;
using System.Reflection;

namespace HelloWorldNS
{

  public class HelloWorld
  {
    public string writeHelloWorld()
    {
      return "HelloWorld";
    }

    public static void Main(string[] args)
    {
      Type hw = Type.GetType(args[0]);

      // Instantiating a class dynamically

      object[] nctorParams = new object[] {};
      object nobj = Activator.CreateInstance(hw,
               nctorParams);

      // Invoking a method

      object[] nmthdParams = new object[] {};
      string strHelloWorld = (string) hw.InvokeMember(
              "writeHelloWorld", BindingFlags.Default |
              BindingFlags.InvokeMethod, null,
              nobj, nmthdParams);

      Console.WriteLine(strHelloWorld);
    }
  }
}

16. Unsafe Hello World   //平常我也不注意這個!到現在還不是很理解怎麼Unsafe!
using System;

public class HelloWorld
{
  unsafe public void writeHelloWorld(char[] chrArray)
  {
    fixed(char *parr = chrArray)
    {
      char *pch = parr;
      for(int i=0; i<chrArray.Length; i++)
        Console.Write(*(pch+i));
    }
  }

  public static void Main()
  {
    HelloWorld hw = new HelloWorld();
    char[] chrHelloWorld = new char[]
        {'H','e','l','l','o', ' ', 'W','o','r','l','d'};
    hw.writeHelloWorld(chrHelloWorld);
  }
}

17. Using InteropServices
using System;
using System.Runtime.InteropServices;

class Class1
{  //COM ,  API介面  我以前就這麼低俗地理解.    其實工具會幫你產生
  [DllImport("kernel32")]
  private static extern int Beep(int dwFreq, int dwDuration);

  static void Main(string[] args)
  {
    Console.WriteLine("Hello World");
    Beep(1000, 2000);
  }
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.