Hello World In different Styles

Introduction

I've attempted to write the traditional 'Hello World' in different styles. This explores the different possibilities of addressing a problem - 'Hello World' with different features of C# language and .NET framework.

1. A Beginner Hello World

using System;
public class HelloWorld
{
    public static void Main()
    {
        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

using System;
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 = new HelloWorld();
        hwb.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)
        {
            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();
            // Additional code for using the HelloMessage object can be added here if needed
        }
    }
}

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(hw.StrHelloWorld);
    }
}

12. Using Delegates

using System;
public class HelloWorld
{
    delegate void SimpleDelegate();
    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

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

using System;
public class HelloWorld
{
    unsafe public void WriteHelloWorld(char[] charArray)
    {
        fixed (char* ptr = charArray)
        {
            char* pch = ptr;
            for (int i = 0; i < charArray.Length; i++)
            {
                Console.Write(*(pch + i));
            }
        }
    }
    public static void Main()
    {
        HelloWorld hw = new HelloWorld();
        char[] charHelloWorld = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd' };
        hw.WriteHelloWorld(charHelloWorld);
    }
}

17. Using InteropServices

using System;
using System.Runtime.InteropServices;
class Class1
{
    [DllImport("kernel32")]
    private static extern int Beep(int dwFreq, int dwDuration);
    static void Main(string[] args)
    {
        Console.WriteLine("Hello World");
        Beep(1000, 2000);
    }
}


Similar Articles