enum / nullable / var / cts / 널 조건부 연산 / Parse

sz L·2023년 4월 4일
0

씨샵

목록 보기
2/17
post-thumbnail
post-custom-banner

enum

상수를 콤마( , )로 모아놓은 열거형 "클래스"

  • enum : enumerations (= 구체적으로 나열) 의미.

  • const 키워드로 정의하는 상수처럼 변경 불가.

  • Class와 유사점・차이점 있음

    • 유사점 : (속성 / 메소드 / 생성자) 보유 가능
    • 차이점
      • enum 상수들은 public, static, const 성격 띔.( 변경 불가 / 덮어쓰기 불가 / 재정의 불가)
      • enum은 객체 생성 불가
  • 각 상수에 대해서 개별 속성값 지정도 가능.

  • 다른 Class 안에서 사용 가능.

  • Switch 구문 안에서도 사용 가능.

  • 반복문에서도 사용 가능.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace cs_04Program
{
    internal class Program
    {
        enum HomeTown
        {
            SEOUL,
            DAEJEON,
            DAEGU,
            BUSAN,
            JEJU
        }

        static void Main(string[] args)
        {
            HomeTown myHomeTown;
            myHomeTown = HomeTown.BUSAN;

            if(myHomeTown == HomeTown.SEOUL)
            {
                Console.WriteLine("서울 출신이시군요!");
            }
            else if (myHomeTown == HomeTown.BUSAN)
            {
                Console.WriteLine("부산 출신이시군요!");
            }
            else if (myHomeTown == HomeTown.DAEGU)
            {
                Console.WriteLine("대구 출신이시군요!");
            }
            else if (myHomeTown == HomeTown.DAEJEON)
            {
                Console.WriteLine("대전 출신이시군요!");
            }
            else if (myHomeTown == HomeTown.JEJU)
            {
                Console.WriteLine("제주 출신이시군요!");
            }
            else { Console.WriteLine("지방 출신이시군요!"); }
        }
    }
}


nullable

! <자료형>?으로 변수를 만들면 변수안에 null 값을 넣을 수 있게된다.

nullable 2가지 속성

  • HasValue : 변수에서 값을 가지고 있는지 여부
  • Value : 변수에 담겨 있는 값
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace cs05_nullable
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //int a = null;              // int a는 null 값을 담을 수 없음 
            int? a = null;               // C# 6.0 Nullable

            Console.WriteLine(a == null);
            // Console.WriteLine(a.GetType()); 예외발생 : 널형태는 없음

            int b = 0;
            Console.WriteLine(b == null);
            Console.WriteLine(b.GetType());

            // 값형식 byte, short, int, long, float, double, char 등은 null을 할당 X
            // null을 할당할 수 있도록 만드는 방식 : type? 형태로 만들어주면 됨

            float? c = null;
            Console.WriteLine(c.HasValue); // false(null이라서)
            // Console.WriteLine(c.Value); 에러발생
            Console.WriteLine(c);

            c = 3.1415f;
            Console.WriteLine(c.HasValue); // true(null이 아니라서)
            Console.WriteLine(c.Value);
            Console.WriteLine(c);
        }
    }
}


var

  • 의도치 않은 형식의 데이터를 읽거나 할당하는 일 차단
  • 선언과 동시에 초기화 필수
  • 지역 변수로만 사용
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace cs06_var
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var a = 2000000;
            Console.WriteLine("Type : {0}, Value : {1}", a.GetType(), a);

            var b = 3.141592f; // f여부에 따라 double / float 지정
            Console.WriteLine("Type : {0}, Value : {1}", b.GetType(), b);

            var c = "Basic C#";
            Console.WriteLine("Type : {0}, Value : {1}", c.GetType(), c);

        }
    }
}


cts

공용 형식 시스템이라는 .NET 프레임워크의 형식 체계의 표준 준수
사용권장 X

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace cs07_cts
{
    internal class Program
    {
        static void Main(string[] args)
        {
            System.Int32 a = 12345;         //CTS
            int b = 12345;
            Console.WriteLine(a.GetType());
            Console.WriteLine(a);
            Console.WriteLine(b.GetType());
            Console.WriteLine(b);

            System.String d = "abcdef";     //CTS 비추천
            string e = "abcdef";
            Console.WriteLine(d.GetType());
            Console.WriteLine(e.GetType());
        }
    }
}


널 조건부 연산

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace cs09_NullCondition
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Foo myFoo = null;
            /*
            int? bar; // null값을 받을 수 있는 변수 생성(int?)
            if(myFoo != null)
            {
                bar = myFoo.member;
            }
            else
            {
                bar = null;
            }*/
            // 위의 주석부분을 한줄로 줄인 코드
            int? bar = myFoo?.member;
            Console.WriteLine(bar);
        }
    }
}

class Foo
{
    public int member;
}


parse

숫자 형식에 있는 Parse 또는 TryParse 메서드를 호출하여 string을 숫자로 변환한다
문자열 안에 숫자가 아는 문자는 존재할 수 없다(TryParse를 사용하여 예외가 발생하지 않고 형변환 할 수 있다)

  • Parse
var number = int.Parse("11"))
  • TryParse
    TryParse는 예외가 발생하면 값을 0으로 반환하고, 예외가 없다면 원래 값으로 반환한다
originstr = "123.4c"; 
float ffval;
float.TryParse(originstr,out ffval);        //형변환 할 수 없다면 0반환
Console.WriteLine("TryParse(char,float) : {0}\n",ffval);
profile
가랑비는 맞는다 하지만 폭풍은 내 것이야
post-custom-banner

0개의 댓글