C#(씨샵)은 2000년 마이크로소프트의 차세대 플랫폼인 닷넷 프레임워크에서 주력 프로그래밍 방법으로 개발된 언어이다. C#은 모든 것을 객체로 취급하는 컴포넌트 프로그래밍 언어이다. 또한 자바와 C++에 기본을 둔 언어로 자바와 매우 비슷하다. 따라서 자바와 C++ 등의 장점을 지니나 다소 복잡한 느낌도 든다. C#은 C++의 객체지향성, 자바의 분산환경처리에 적합한 다중성 등을 모두 지니는 컴포넌트 기반의 소프트웨어 개발 패러다임을 반영한다. 또한 C#은 비주얼 베이직과 같은 비주얼 프로그래밍 요소를 포함하고 있어 높은 생산성이 보장되며 응용 프로그램의 작성과 유지가 용이하다.

[ 그림 7.49 ]

C#으로 작성한 코드가 컴파일되면 중간 언어인 MSIL(MicroSoft Intermediate Language)이 된다. 이 중간 언어가 인터프리터인 CLR(Common Language runtime)에 의해 실행되므로 C#은 시스템에 독립적인 프로그램 개발이 가능하다. 이것은 자바가 자바가상기계의 사용으로 시스템에 독립적인 프로그램 개발이 가능한 것과 같은 의미이다. 다음은 C#의 예제 소스이다.

using System;
class Person {
    private string myName ="N/A";
    private int myAge = 0;

    // Declare a Name property of type string:
    public string Name {
        get { return myName; }
        set { myName = value; }
    }
    
    // Declare an Age property of type int:
    public int Age {
        get { return myAge; }
        set { myAge = value; }
    }

    public override string ToString() {
        return "Name = " + Name + ", Age = " + Age;
    }

    public static void Main() {
        Console.WriteLine("Simple Properties");
        
        // Create a new Person object:
        Person person = new Person();

        // Print out the name and the age associated with the person:
        Console.WriteLine("Person details - {0}", person);

        // Set some values on the person object:
        person.Name = "Joe";
        person.Age = 99;
        Console.WriteLine("Person details - {0}", person);

        // Increment the Age property:
        person.Age += 1;
        Console.WrtieLine("Person details - {0}", person);
    }
}