[C#] 05. 형 변환(Cast)과 주석(Comment)


Study/C#  2020. 6. 26. 17:59

안녕하세요. 명월입니다.


이 글은 C#에서의 형 변환(Cast)과 주석(Comment)에 대한 글입니다.


형 변환(Cast)

이전 글에서 자료형(데이터 타입)에 대해서 설명한 적이 있습니다.

링크 - [C#] 03. 자료형


프로그램에서 우리가 모든 형에 맞추어서 데이터를 입력하고 그 입력된 값을 계산할 수는 없습니다.

예를 들면 실수형 변수와 정수형 변수가 있을 때 계산을 해야합니다.

using System;
namespace Exception3
{
  class Program
  {
    // 실행 함수
    static void Main(string[] args)
    {
      // 정수형 변수
      int a = 10;
      // 실수형 변수
      float b = 20.5f;
      // 더하기
      int c = a + b;
      // 콘솔 출력
      Console.WriteLine("c = " + c);

      // 아무 키나 누르면 종료
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}

위 예제를 보면 정수형 타입인 a와 실수형 타입인 b의 값을 더하여 정수형 타입에 c에 넣고 싶다.

이렇게 자료형 타입이 다르다고 에러가 발생하게 됩니다.

이러면 b를 int형으로 자료형을 변환시켜야 합니다. 이것을 우리는 형 변환(cast)라고 합니다.

형 변환은 간단합니다. 괄호를 사용하면 됩니다.

using System;
namespace Exception3
{
  class Program
  {
    // 실행 함수
    static void Main(string[] args)
    {
      // 정수형 변수
      int a = 10;
      // 실수형 변수
      float b = 20.5f;
      // 더하기, 형 변환(cast)하면 소수점 이하는 절삭이 된다.
      int c = a + (int)b;
      // 콘솔 출력
      Console.WriteLine("c = " + c);

      // 아무 키나 누르면 종료
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}

이런 괄호로 형 변환하는 건 int, float만 가능합니다. String으로 있는 값을 정수형으로 변환해서 사용해야 할 때도 있습니다.

using System;
namespace Exception3
{
  class Program
  {
    // 실행 함수
    static void Main(string[] args)
    {
      // 정수형 변수
      int a = 10;
      // 문자형 변수
      string b = "20";
      // 더하기, int.Parse함수를 이용해서 string을 int로 변환 가능
      int c = a + int.Parse(b);
      // 콘솔 출력
      Console.WriteLine("c = " + c);

      // 아무 키나 누르면 종료
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}

문자열 string을 int로 형 변환을 하려면 int.Parse함수를 이용해야 합니다.

Parse함수는 int만 있는 것이 아니라 float와 double도 있습니다.


이 형 변환할 때, 문자열에 숫자만 있으면 좋은데 문자까지 섞이면 어떻게 될까요?

using System;
namespace Exception3
{
  class Program
  {
    // 실행 함수
    static void Main(string[] args)
    {
      // 정수형 변수
      int a = 10;
      // 문자형 변수 (숫자뿐 아닌 문자가 포함)
      string b = "20a";
      // 더하기, int.Parse함수를 이용해서 string을 int로 변환 가능
      int c = a + int.Parse(b);
      // 콘솔 출력
      Console.WriteLine("c = " + c);

      // 아무 키나 누르면 종료
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}

에러가 발생합니다. 에러가 발생하면 프로그램이 멈추기 때문에 멈추지 않게 에러가 발생하면 기본값, 즉, 0으로 설정하는 방법입니다.

using System;
namespace Exception3
{
  class Program
  {
    // 실행 함수
    static void Main(string[] args)
    {
      // 정수형 변수
      int a = 10;
      // 변환할 변수
      int b = 10;
      // 문자형 변수 (숫자뿐 아닌 문자가 포함), 에러가 발생하면 b에 0을 대입
      int.TryParse("20a", out b);
      // 더하기, int.Parse함수를 이용해서 string을 int로 변환 가능
      int c = a + b;
      // 콘솔 출력
      Console.WriteLine("c = " + c);

      // 아무 키나 누르면 종료
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}

각 자료형 뿐아니라 Convert 클래스를 이용할 수도 있습니다.

using System;
namespace Exception3
{
  class Program
  {
    // 실행 함수
    static void Main(string[] args)
    {
      // 정수형 변수
      int a = 10;
      // String 타입에서 변환
      int b = Convert.ToInt32("20");
      // 더하기, int.Parse함수를 이용해서 string을 int로 변환 가능
      int c = a + b;
      // 콘솔 출력
      Console.WriteLine("c = " + c);

      // 아무 키나 누르면 종료
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}

메소드 설명
ToBoolean 부울 형태로 변환합니다.
ToByte 유니코드를 정수형태로 변환합니다.
ToChar 유니코드 형태로 변환합니다.
ToDecimal Decimal 숫자 형태로 변환합니다.
ToDouble 실수 형태로 변환합니다.
ToInt16 16비트 부호 있는 정수로 변환합니다.
ToInt32 32비트 부호 있는 정수로 변환합니다.
ToInt64 64비트 부호 있는 정수로 변환합니다.
ToSbyte 8비트 부호 있는 정수로 변환합니다.
ToSingle 단정 밀도 부동 소숫점으로 변환합니다.
ToString 문자열로 변환합니다.
ToUInt16 16비트 부호 없는 정수로 변환합니다.
ToUnit32 32비트 부호 없는 정수로 변환합니다.
ToUnit64 64비트 부호 없는 정수로 변환합니다.


주석(Comment)

주석은 실제 프로그램에는 영향을 미치지는 않고 소스 내에 메모(?)를 하기 방법입니다.

주석에는 종류에 따라 일반 주석과 XML 주석이 있습니다.

일반 주석에는 사용 방법에 따라 다항 주석과 한줄 주석이 있습니다.

/*
  다항 주석
  프로젝트 명: 명월 일지
  개발자: 명월
  작업 일시: 2020/06/26
  BLOG: nowonbun.tistory.com
*/
using System;
namespace Exception3
{
  class Program
  {
    /// <summary>
    /// XML 주석
    /// </summary>
    /// <param name="args">파라미터</param>
    static void Main(string[] args)
    {
      // 한줄 주석

      // 아무 키나 누르면 종료
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}

주석으로 개발 상의 메모나 프로젝트 설명 등을 표시할 수 있습니다.


그리고 XML 주석의 경우는 프로그램이 완료 후에 XML 형식으로 출력할 수도 있습니다.

그리고 F5로 컴파일을 하면 해당 폴더에 xml 파일이 생깁니다.

위 보면 XML 주석이 xml 파일로 메소드와 설명, 파라미터가 있습니다. XML 주석의 태그로 추가할 수 있습니다.

태그 설명
summary 형식 또는 형식 맴버 설정
remarks 상세한 설명
para remarks의 추가 설명
value 프로퍼티 설명
example 사용 예제
list 리스트나 테이블 생성
code 여러줄의 코드로 표시할 때 사용
see 텍스트 내부의 링크지정
seealso 참고 부분에 나타나는 텍스트 지정
exception 예외 설명
permision 접근 권한 설명
param 메소드의 파라미터 설명
return 반환 값 설명
c 설명 안에 포함되는 코드

프로그램은 소스 정리와 문서 작성으로 시작해서 소스 정리와 문서 작성으로 끝난다는 말이 많이 있습니다.

정리를 잘하고 가독성을 높이기 위해서는 주석을 잘 사용하는 것도 방법입니다. 특이 XML 주석을 잘 작성하면 나중에 API 도큐멘트를 따로 작성할 필요도 없을 것 같네요.


여기까지 C#에서의 형 변환(Cast)과 주석(Comment)에 대한 글이었습니다.


궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.