C# 일반화 메서드 정리
·
정리필요
일반화 메서드(Generic Method)는 데이터 타입을 일반화한 메서드입니다. 일반화 메서드 기법을 사용하면, 불필요한 메서드를 반복해서 구현할 필요가 없으며, 코드의 재사용성이 증가되며, 타입을 안전하게 처리할 수 있다는 장점이 있습니다 우선 일반 메서드의 문제점에 대해 알아보겠습니다. 📌 일반 메서드의 문제점 타입이 int형인 매개변수의 값을 Console에 출력하는 간단한 메서드를 구현하였습니다. { Console.WriteLine(val.ToString()); } 추가로 타입이 double형, bool형인 매개변수의 값을 출력하는 메서드도 필요해서 PrintConsoleValue 메서드를 오버로딩합니다. void PrintConsoleValue(double val) { Console.Write..
C# 연산자 오버로딩 (일 + 일 = 귀요미)
·
정리필요
1 + 1 은 무엇일까요? 당연히 피연산자인 숫자 1과 숫자 1을 더해서 2가 나옵니다 그렇다면 a1 + a2 는 무엇일까요? 우리는 컴퓨터에게 피연산자인 객체 a1 와 a2를 더하라는 방법을 알려주지 않은 상태이기 때문에 오류를 뱉습니다. 즉 아래와 같은 식을 작성하고 실행하면 오류가 난다는 말입니다. 그러면 컴퓨터가 a1 + a2 라는 식을 계산할 수 있게 하는 방법은? 그것이 바로 연산자 오버라이딩입니다. 우선 아래와 같이 정의한다면 a3 = a1 + a2 // 3이라는 출력이 가능해진다 라는 것만 대충 이해하고 넘어갑시다 internal class set { class A { public int val; public static A operator + (A a1,A a2) { A a3 = new ..
C# virtual, override, new 개념 정리
·
정리필요
📌 메서드 오버라이드 자식클래스에서 부모클래스로부터 상속받은 부모의 메서드를 재정의하여 사용하는 것 . 부모클래스에서는 오버라이드를 가능하게 하기 위해 'virtual' 이라는 예약어를 메서드 앞에 붙인다. . 자식클래스에서는 재정의하여 사용하고 싶으면 'override' 라는 예약어를 메서드 앞에 붙인다. virtual, override 사용예제 using System; // 기본 클래스 public class Animal { // 가상 메서드 public virtual void MakeSound() { Console.WriteLine("동물이 소리를 내고 있습니다."); } } // 파생 클래스 public class Dog : Animal { // 부모 클래스의 가상 메서드를 재정의 public o..
C# 추상화 .... 추상클래스 개념 정리 ....
·
정리필요
일반적인 추상화란 추상화의 핵심은 구체적인 사물을 추상적 으로 표현하는 것 ? 객체 지향 프로그래밍에서는 추상화를 통해 클래스를 정의하고 인스턴스를 사용함 ? 결국 어떤 공통적인 성질이나 본질을 추출하여 파악하는 것이 추상화의 핵심? 잘....모르겠다 이름 부터가 추상적이라서 그런가 와닿지 않는다 그렇다면 C#에서의 추상화란? C#에서의 추상화는 클래스, 객체, 인터페이스, 추상 클래스 등을 통해 현실 세계를 모델링하고 프로그램에서 다루기 쉽게끔 단순화하는 프로세스를 의미? 현실 세계를 모델링..? 예시를 들어볼까요? 현실 세계: 자동차는 브랜드, 모델, 연식 등의 속성을 갖고 있고, 시동 걸기, 주행, 정지 등의 동작을 수행할 수 있습니다. 모델링: C# 클래스를 사용하여 자동차 클래스를 정의하고, 속..
C# 배열 초기화 하는 여러 방법
·
정리필요
배열(Array)에 대해 알아보자 배열이란 배열은 같은 타입의 변수를 여러개 모아놓은 데이터 타입이다. 예를 들어, 5개의 정수를 변수로 선언한다고 했을 때 배열이 없다면 아래와 같이 일일히 변수를 선언해야 한다. int number1; int number2; int number3; int number4; int number5; 배열만드는 법 //생성 int[] numArr = new int[5]; // 데이터 형식[] 배열이름 = new 데이터 형식[용량]; //값 삽입 numArr[0] = 10; numArr[1] = 20; numArr[2] = 30; numArr[3] = 40; numArr[4] = 50; //생성과 동시에 값 삽입 int[] numArr1 = new int[3] {1,2,3}; ..
C# 값형식 vs 참조형식
·
정리필요
[구조체의 인스턴스 복제] - 값 형식 구조체는 값형식이기 때문에 인스턴스 복제 시 인스턴스의 모든 멤버 변수 값이 복사되어 새로운 인스턴스가 생성된다. 그래서 valueType2.value 값을 수정하더라도 valuetype1.value 값에 영향을 끼치지 않는다 using System; namespace Property { class MainApp { struct Valuetype { public int value; public Valuetype(int v) { value = v; } } static void Test() { Valuetype valueType1 = new Valuetype(10); Valuetype valueType2 = valueType1;//인스턴트 그대로 복제 //값 형식으로 ..