.NET/C#

    [C#] C#과 OOP(Object-Oriented Programming) - 6. 패턴 매칭(Pattern Matching)

    6. 객체 비교를 위한 패턴 매칭(Pattern Matching) 패턴 매칭은 이미 아래 글에서 잠깐 살펴보았는데 [.NET/C#] - [C#] 흐름제어, 형변환, 예외처리 [C#] 흐름제어, 형변환, 예외처리 1. 변수 ● 산술 연산자 연산자는 변수나 실제값에 해당하는 피연산자를 더하거나 곱하는 등의 연산을 수행하며 일반적으로 다른 변수에 할당 가능한 또 다른 값을 반환합니다. 연산자 중 이항 lab.cliel.com 예제에서의 경우뿐만 아니라 객체의 Type비교를 위한 경우에도 패턴 매칭을 적용할 수 있습니다. namespace mylibrary; public class Car { public int displacement { get; set; } } public class Truck { } 예제는 ..

    [C#] C#과 OOP(Object-Oriented Programming) - 5. 속성(Property)과 인덱서(Indexer)

    5. 속성(Property)과 인덱서(Indexer) ● 속성(Property) 속성은 특정 값을 설정할 때 메서드처럼 호출하고 값을 가져오는 경우 Field처럼 호출하여 사용할 수 있도록 하는 것으로 해당 기능을 구현하기 위한 구문이 간소화될 수 있습니다. namespace mylibrary; public class Car { public int Speed { get; set; } public int RPM => Speed * 2; } 예제에서는 Speed와 RPM이라는 2개의 Property를 정의하였습니다. Speed는 값을 읽는 get과 값을 설정하는 set으로 인해 int형식의 값을 설정하고 가져올 수 있고 RPM은 Speed에서 *2를 연산한 결과만을 읽을 수 있는 Property가 되었습니다..

    [C#] C#과 OOP(Object-Oriented Programming) - 4. Method (메서드)

    4. Method (메서드) '함수'라고 하는 것과 개념이 동일하지만 어떤 Type(클래스)에서 하나의 Member로 취급될 수 있고 이러한 특징 때문에 이를 '메서드'라고 부르게 되었습니다. ● 값을 반환하기 메서드는 아무런 값도 반환하지 않거나 특정 값을 반환하도록 만들 수 있습니다. 그리고 값을 반환하는지에 대한 구분은 메서드에서 반환받을 값의 Type이 명시되었는지 혹은 void로 메서드가 수식되었는지로 판단할 수 있습니다. namespace mylibrary; public class Car { //void는 아무런 값도 반환하지 않음 public void Stop() { Console.WriteLine("자동차 정지"); } //int형식의 값을 반환함 public int Drive() { Co..

    [C#] C#과 OOP(Object-Oriented Programming) - 3. 필드(Field)

    3. Field '자동차'는 자신만의 차량번호와 생산이 완료되 시장에 나오는 출고일이라는 날짜가 존재할 수 있습니다. 이 값을 다루기 위해 이전에 만든 Car클래스에서는 Field를 아래와 같이 추가합니다. public class Car { public string Number; public DateTime FDate; } 예제에서는 Field에서 string과 DateTime형식을 사용했지만 Field를 만드는 데는 int나 Array 등 C#에서 다룰 수 있는 모든 형식뿐만 아니라 Car와 같은 자신이 직접 만든 형식까지도 사용할 수 있습니다. ● 접근 한정자 '접근 한정자'는 캡슐화 과정에서 Field를 어떻게 외부에 노출할 것인지를 지정하는 것입니다. 위 예제에서 Car클래스의 Number과 Co..

    [C#] C#과 OOP(Object-Oriented Programming) - 2. 클래스 라이브러리 (Class library)

    [C#] C#과 OOP(Object-Oriented Programming) - 2. 클래스 라이브러리 (Class library)

    2. 클래스 라이브러리 (Class library) 클래스 라이브러리는 대게 독립적으로 실행될 수 있는 Application보다는 다른 Application에서 기능을 활용할 수 있는 DLL과 같은 형태로 배포되는데 .NET이 가장 대표적인 '클래스 라이브러리'의 모음이라고 할 수 있습니다. Visual Studio Code를 사용하는 경우 프로젝트를 '클래스 라이브러리'형태로 생성하려면 'classlib'옵션을 사용해 프로젝트를 생성해야 합니다. dotnet new classlib -o mylibrary 예제에서 프로젝트의 이름은 'mylibrary'로 하였습니다. 프로젝트를 생성한 뒤 프로젝트의 *.csproj파일을 보면 net6.0 enable enable TargetFramework가 net6.0..

    [C#] C#과 OOP(Object-Oriented Programming) - 1. 객체지향프로그래밍 개념

    1. OOP 실제 세계에서의 '객체(Object)'라 함은 '사람' 혹은 '자동차'와 같은 사물에 비유될 수 있습니다. 많은 프로그래밍 언어에서 이러한 '객체(Object)'를 표현하기 위해 OOP(Object-Oriented Programming)라는 개념을 도입하고 있고 그중 C#에서는 class와 struct와 같은 키워드를 사용해 이러한 Object를 코드로서 표현하고 있습니다. OOP는 프로그래밍에서 다음과 같은 특징을 가집니다. 캡슐화(Encapsulation) : 객체는 대상에 따라 필요한 데이터와 동작(Action)을 가질 수 있습니다. 예를 들어 '자동차'를 표현하는 경우 '속도' 혹은 '색상'과 같은 값(데이터)를 가질 수 있으며 '주행', '정지'와 같은 동작을 가질 수 있습니다. 캡..

    [C#] 예외처리

    [C#] 예외처리

    1. 예외처리 위의 Parse()메서드를 설명할 때 이미 Runtime에러가 발생하는 경우를 봤었는데 이런 경우를 '예외가 발생했다.'라고도 표현합니다. 예외가 발생하면 try ~ catch를 사용하는 경우 에러를 제어할 수 있는 여지가 주어지지만 그렇지 않다면 stack trace를 포함한 예외 관련 메시지를 출력하고 Application의 동작은 중지됩니다. try { string s = "abc"; int i = int.Parse(s); } catch { } 예제에서처럼 try ~ catch는 예외가 발생할 수 있는 코드 전체를 try { } 안에서 실행하도록 할 수 있으며 예외가 발생되는 경우만 catch { } 내부로 처리가 이루어지게 됩니다. 위에서 'Unhandled exception'가 발..

    [C#] 형변환

    프로그래밍에서 특정 형식의 데이터를 다른 형식으로 형 변환하는 경우는 흔한 일중 하나입니다. 예를 들어 사용자로부터 입력받은 값은 string형식인데 해당 값을 사칙연산으로 계산하기 위해 int형식으로 바꾸는 경우입니다. ※ 형 변환을 언급할 때 Casting과 Convert라는 말이 자주 사용되는데 이 둘은 같은 의미를 가집니다. 형 변환이 크게 명시적인 형태와 명시적인 형태 이 2가지로 이루어집니다. 암시적인 형 변환은 대부분 자동적으로 변환되는 것으로 기존에 변수가 가진 값의 손실이 없이 완벽하게 변환되는 경우로 안전하게 처리될 수 있습니다. 하지만 명시적인 형변환은 직접 형 변환을 코드로 구현해 처리하는 것으로 이런 경우는 상황에 따라 기존 값의 일부 손실이 있을 수 있습니다. ● 숫자 형식에 대..