본문 바로가기

C#,WPF

C# 기초다지기 간단정리(1/3)

C# 기본기 정리(1/3)

 
원래 짧게 요점만 쓰려고했는데 생각보다 공부할게 많아 적다보니 1개의 포스트할걸
3개로 나누게 되었다...............



01 : 클래스 메소드(Class Method)
클래스는 (필드) + (메소드) 로 ,
대부분의 인터페이스(서버와 클라이언트 사이의 약속과 통신)은 메소드를 사용한다.

 형식의 멤버에 지정될 수 있는 접근 한정자

  • private : 동일클래스 내 접근만 허용
  • public : 클라이언트 내 접근 허용
  • protected : 동일 클래스,파생클래스 접근
  • internal : 동일한 어셈블리에서 접근
  • protected internal : 동일한 어셈블리와 다른 어셈블리 파생클래스 접근
 형식에 지정될 수 있는 접근 한정자
  • internal :  동일한 어셈블리에서 사용 가능
  • public : 클라이언트 코드 내에서 사용가능
  • private : 중첩 형식에만 지정하여 외부 형식에만 사용 가능


메소드 매개변수 한정자

out 키워드

        static void func(int a, int b, out int result) 

        {

            result = a + b;

        }

 

        static void Main(string[] args)

        {

            int res;

            func(5, 6, out res);

        }


위의 코드에서 func 메소드에 넘겨준 out한정자 res는 앞에 인자 5,6 이 '값'을 복사하는것과는 다르게
Call by Reference 형식으로 전달한다.
즉 res의 메모리주소를 넘겨주므로, C/C++에서 & 와 같다.

ref 키워드

ref경우 호출할대 인자가 초기화 된 상태에서만 넘어가야하는점이 out호출과 다르다.
(out 은 굳이 초기화 하지않은 상태여도 됨)
크게 다르지 않고 사용법은 동일하다.


그러면 그냥 out만  써도....................될듯?

02 : 네임스페이스

Class 간의 변수명 등이 서로 충돌이 일어날 수 있는데 이러한 충돌을 막는 용도일 수도 있고
다른 class간의 서로 사용이 가능하도록 해주기도 합니다.

 

 


다음과 같이 Korea라는 같은 네임스페이스 안 에서 존재하면 이렇게 사용할 수 있다.



using 지시자

using 지시문은 두가지 용도로 사용할 수 있는데
  • 특정 네임스페이스에 있는 형식을 한정하지 않고도 사용할 수 있도록 하려는 경우.
                  using System.Text;
  • 네임스페이스나 형식의 별칭을 만들려는 경우.
                  using Project = PC.MyCompany.Project;




namespace Korea

{

    class City

    {

        public int member;

        public bool dokdo;

        public City(int x)

        {

            member = x;

            dokdo = true;

        }

        public void Print()

        {

            MessageBox.Show("GwangJu");

        }

    } 

}

 

namespace Japan

{

    class City

    {

        public int member;

        public City(int x)

        {

            member = x;

         

        }

        public void Print()

        {

            MessageBox.Show("ToKyo");

        }

    }

}


다음과 같은 두개의 네임스페이스에서 City라는 클래스를 가지고있는데

using Korea;
using Japan;을 사용한
구역에서는 city 사용시 다음과 같은 에러가 발생한다.

 



Korea.City city1 = new Korea.City(5);

 
라고 선언할 수도 있겠지만 애초에 중복되는 City를 미리 선언하여 바꿀 수 있다.

상단에

using Korea;

using JCity = Japan.City;


라고 써준다면

후에 선언시 Korea의 City 를 그냥 사용할 수 있고, Japan의 경우

JCity city3 = new JCity(3);

처럼 선언이 가능하다.

 
참고 : http://hoons.kr(훈스닷컴) 외 다수 블로그