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);
}
}