C++ 이랑 별로 다른게 크게 없는것 같음
기본적인건 거의 같고 문법 및 쓰임새 조금 다른것만 정리
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TestClassA { class Program { public static int value = 0; // static 멤버 변수 초기화 private int privateInt; public int publicInt; static Program() // static 생성자 { value = 10; } public Program() { privateInt = 20; publicInt = 30; } public void SetInt(int arg) { privateInt = arg; } public int GetInt() { return privateInt; } public void Sub(ref int x) { x = x - 30; } public void Add(out int y) { y = 10 + 30; } static void Main(string[] args) { // WriteLine 을 사용하면 강제 개행 된다. ( cout 에서 endl; 한것과 같음 ) // static 멤버 변수 value는 객체를 생성하지 않아도 static Program 생성자에 의해 10으로 초기화 됨. Console.WriteLine("Program.value : {0}", Program.value); // class 변수를 선언할때는 항상 new 를 사용해야 한다. // 그냥 Program Instance; 만 할 경우에는 ref 타입 변수가 선언됨 (c++ 에서 type* 과 같음) Program Instance = new Program(); // Write는 강제 개행이 안된다. 대신에 WriteLine 처럼 {0} 과 같은 기호를 안써줘도 됨. // PrivateInt 와 PubliceInt 는 static 변수가 아니기 때문에 new 연산자로 할당 될 때 public Program() 생성자에 의해 초기화된다. Console.Write("value:" + Program.value + " PrivateInt:" + Instance.GetInt() + " PubliceInt:" + Instance.publicInt+"\n"); // public 변수는 직접 값 대입 가능 Instance.publicInt = 100; // private 변수는 public 함수로 설정한 set/get 함수로만 접근 가능 Instance.SetInt(500); Console.WriteLine("Instance.publicInt:{0} Instance.privateInt:{1}", Instance.publicInt, Instance.GetInt()); // 씨샵에는 call by ref 방식이 두가지 있다. ref 와 out 방식 // ref는 값이 초기화된 상태로만 넘겨야 하고 out는 초기화가 안되어 있어도 상관 없다. int x = 100; Instance.Sub(ref x); Console.WriteLine("Instance.Sub() Result = {0}", x); int y; Instance.Add(out y); Console.WriteLine("Instance.Add() Result = {0},", y); } } }
'프로그래밍 > C#' 카테고리의 다른 글
C# unsafe 와 fixed (포인터 안전하게 사용하기 char*, int* 등등..) (0) | 2013.07.06 |
---|---|
C# 가비지 콜렉터와 메모리 (0) | 2013.07.06 |
C# 에서 const 와 readonly (0) | 2013.07.06 |
C# struct, enum (0) | 2013.07.05 |
씨샵을 배워보자!! +_+ (0) | 2013.07.05 |