C# 언어는 Sun 사에서 만든 Java 언어에 대항하여 Microsoft 사에서 만든 프로그래밍 언어로서,
전체적인 개념은 Java의 것과 유사하다.
객체지향(obeject oriented) 언어의 관점에서 보면 다중상속을 지원하지 않고 그대신 인터페이스를 지원한다. Java 언어로 개발한 애플리케이션이 동작할려면 Java 가상기계가 있어야 하듯이 C#으로 개발한 애플리케이션이 동작할려면 닷넷(.NET)이 있어야 한다.

프로그래밍 코딩시에 메소드 이름을 정할 때 Java 언어의 경우 영문 소문자로 시작하는 것이 관습이지만, C# 언어의 경우에는 영문 대문자로 시작하는 것이 관습이다. (여기서 관습이라고 하는 것은 꼭 지켜야 하는 것은 아니지만 그렇게 습관을 들이면 다른 사람들이 코딩한 소스를 볼 때 이해가 빠르다는 의미이다.)

Java 언어에서 import 구문을 쓰면 다른 클래스를 불러와서 쓸 수 있듯이, C#에서는 using 구문을 통하여 이와 비슷한 일을 할 수 있다. Java 언어에는 없지만 C# 언어에서는 namespace 구문이 있어서 이를 이용하면 클래스 관리와 클래스에 속한 메소드와 속성을 용이하게 불러 쓸 있다.

Java 언어에서

      System.out.println(스트링)
      System.out.print(스트링)

에 해당하는 C# 언어의 코드는

      System.Console.WriteLine(스트링)
      System.Console.Write(스트링)

이다. 그런데 using 구문을 이용한다면

using System;
................
................
      Console.WriteLine(스트링)
      Console.Write(스트링)

처럼 System. 을 생략하여 쓸 수 있다.



C# 언어에서 static이라고 하는 예약어는 Java 언어에서의 의미와 동일하다. 즉 static 예약어가 붙은 메소드나 속성은 힙(heap) 메모리에 존재하는 것이 아니라, 정적(static) 메모리에 존재한다.

C# 언어의 메소드 정의 구문 양식은 Java 언어의 것과 유사하게

       [public/private 등] [static] type methodName(parameters) {
             block
       }

이다.

또 C# 언어의 for 반복문 양식도 Java 언어의 것과 유사하게

       for (varName = initialValue; condition; replicator) {
             block
       }

이다.



소스 파일명: ForTest.cs
------------------------------[소스 시작]
using System;

namespace MyTestApplication1 {
    public class ForTest {

        // static 메소드로 선언되었으므로 Main 메소드에서 이 메소드를
        // 객체 생성 없이 직접 호출할 수 있다.
        public static void PrintDan(int dan) {
            for (int i = 1; i < 10; i++) {
                Console.WriteLine(dan + " x " + i + " = " + (dan*i));
            }
        }

        // Java 언어의 main 메소드에 해당하는 C# 언어의 main 메소드
        public static void Main(string[] args) {
            PrintDan(2);    // static 메소드 PrintDan()을 호출한다.
        }
    }
}

------------------------------[소스 끝]

컴파일> csc -d ForTest.cs

(참고: 에러 없이 컴파일이 순조롭게 끝나면 현재 디렉토리에 ForTest.exe 라는 실행 파일이 현재 디렉토리에 생길 것이다.)

실행> ForTest
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18



소스 파일명: ForTestObject.cs
------------------------------[소스 시작]
using System;

namespace MyTestApplication1 {
    public class ForTestObject {

        // static 선언자가 없으므로 이 메소드는
        // 다른 static 메소드에서는 직접 호출되지 않는다.
        // 반드시 생성된 ForTestObject 객체를 거쳐서 호출된다.
        public void PrintDan(int dan) {
            for (int i = 1; i < 10; i++) {
                Console.WriteLine(dan + " x " + i + " = " + (dan*i));
            }
        }

        // Java 언어의 main 메소드에 해당하는 C# 언어의 Main 메소드
        public static void Main(string[] args) {
            ForTestObject app = new ForTestObject();  // 객체를 생성한다.
            app.PrintDan(2);    // 객체에 속하는 메소드 PrintDan()을 호출한다.
        }
    }
}
------------------------------[소스 끝]

컴파일> csc ForTestObject.cs

(참고: 컴파일이 순조롭게 끝나면 현재 디렉토리에 ForTestObject.exe 라는 실행 파일이 생겨 있을 것이다.)

실행> ForTestObject

(참고: 실행 결과는 ForTest 를 실행한 결과와 같다.)





Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

Posted by Scripter
,