C# 프로그래밍 - 메서드의 오버라이딩(overriding)과 오버로딩(overloading) 오버라이딩(overriding) 클래스의 상속이 이루어진경우 부모 클래스에서 정의된 메서드에 대하여 동일한 이름의 메서드를 자식 클래스에서 재정의 할수있습니다. 오버로딩(overloading) 매개변수의 개수와 유형이 다른 여러 버전의 동일명 메서드를 정의하고 각각 다른 작업을 수행하는 메서드를 호출할수있습니다.
C# 프로그래밍 - 메서드 오버로딩(Overloading) 메서드 오버로딩(Overloading)은 같은 이름을 사용하여 매개변수의 유형, 개수 또는 순서가 다른 여러 버전의 메서드를 정의하는것을 의미합니다. 오버로딩을 사용하면 동일한 메서드 이름을 사용하여 다양한 입력 유형 또는 매개변수 조합을 처리할 수있습니다. C# 컴파일러는 호출된 메서드의 매개변수 유형 및 개수를 기반으로 어떤 메서드를 호출할지 결정합니다. 메서드 오버로딩을 사용할 때 메서드 이름이 동일해야하고 매개변수의 데이터 형식 또는 개수가 달라야 합니다. 메서드 오버로딩 사용예시 매개변수의 유형이 다른 경우 각각 다른 매개변수 유형을 가지는 세개의 동일 이름 메서드(Add)를 선언하고 각각 정수 덧셈, 부동 소수점 덧셈, 문자열 연결을 ..
C# 프로그래밍 - 구조체(Struct) 구조체(Struct)는 C#의 사용자 정의 데이터 형식으로 클래스와 유사한 기능(데이터를 구조화하고 관련 데이터 및 동작을 캡슐화)을 제공하지만 몇 가지 중요한 차이점이 있습니다. 구조체는 값 형식(Value Type)으로 분류되며 상속을 지원하지않습니다. 주로 작은 크기의 데이터를 효율적으로 저장하고 전달하는 데 사용됩니다. 구조체의 몇가지 특징 값 형식(Value Type) - 구조체는 값 형식(value type)으로 분류됩니다. 이는 구조체 변수가 스택(stack)에 직접 저장되며 값 복사 방식으로 동작한다는것을 의미합니다. 반면 클래스(class)는 참조 형식(reference type)으로 분류되어 힙(heap)에 저장되고 변수는 참조를 가지고 있습니다..
C# 프로그래밍 - this 키워드 this 키워드는 현재 클래스의 객체 및 인스턴스(instance)를 의미합니다. this 키워드는 클래스 내부에서 사용되어 현재 객체에 대한 참조를 나타내며 객체의 필드, 속성 및 메서드에 접근할 수 있습니다. this를 사용하여 현재 인스턴스의 필드 myField에 접근하고 값을 설정합니다. class MyClass { private int myField; public void SetField(int value) { this.myField = value; } }
C# 프로그래밍 - new 키워드 객체 생성 new 키워드는 클래스의 인스턴스를 생성하는 데 사용됩니다. 클래스는 객체를 만들기 위한 템플릿이며 new를 사용하여 그 템플릿을 기반으로 실제 객체를 생성합니다. 아래 코드에서 new 키워드는 MyClass 클래스의 새로운 인스턴스를 생성하고 이를 "myObject" 변수에 할당합니다. MyClass myObject = new MyClass(); 배열 생성 new 키워드는 배열을 생성하는 데 사용할수있습니다. 아래 코드에서 크기가 5인 정수 배열을 생성합니다. int[] myArray = new int[5];
C# 프로그래밍 - 속성(property) 속성(Property)은 클래스의 필드(멤버 변수)에 대한 접근자(accessor)를 제공하는 방법입니다. 속성을 사용하면 필드에 직접 접근하는 것보다 객체의 내부를 더 안전하게 관리할 수 있으며(데이터 캡슐화, data encapsulation) 필드에 접근하고 설정할 때 추가 로직을 구현할수있습니다(유효성 검사, 기타) 속성(Property)의 구조 접근한정자 자료형 속성이름 { get { // 값을 반환하는 로직 } set { // 값을 설정하는 로직 } } 접근 한정자(Access Modifier) - 속성의 접근 수준을 의미합니다(public, private, internal, protected) 자료형(Data Type) - 속성이 반환하는 값의 자료..
C# 프로그래밍 - 생성자와 소멸자 생성자 (Constructor) 생성자는 클래스의 객체가 생성될 때 자동으로 호출되는 특별한 메서드입니다. 클래스 내부에 정의된 클래스와 동일한 이름을 갖는 맴버함수로 주로 객체의 초기화 작업을 수행하는 데 사용됩니다(객체의 필드를 초기화하거나 초기 상태를 설정) 생성자 선언 예시 생성자는 클래스의 이름과 동일하며 반환 유형을 가지지 않습니다. class Person { public string Name; public int Age; public Person() { Name = "Unknown"; Age = 0; } } 객체 생성과 생성자 호출 타입 변수명 = new 타입 (): 객체를 생성할때(클래스가 인스턴스화될때) new 키워드를 사용하여 클래스 내부에 선언한 생..
C# 프로그래밍 - 클래스 상속(Inheritance) 클래스 상속을 사용하여 하나의 클래스가 다른 클래스의 멤버(필드, 속성, 메서드)를 상속받을수있습니다. 기본 클래스는 상속의 기반이 되는 클래스로 베이스 클래스(base class) 또는 부모 클래스(parent class) 라고합니다. 파생 클래스는 상속을 받는 클래스로 파생 클래스(derived class) 또는 자식 클래스(child class) 라고합니다. 기본 클래스에서 파생 클래스로 상속이 이루어지면 파생 클래스에서 기본 클래스의 멤버(필드, 속성, 메소드)를 사용할수있습니다. 상속의 선언 상속은 클래스 선언 시에 다음과 같이 콜론(:)을 사용합니다. class DerivedClass : BaseClass { } 클래스 상속 예시 Dog ..
C# 프로그래밍 - 데이터 형식 변환 및 캐스팅(Data Type Convertion) 데이터 형식 변환은 하나의 데이터 형식을 다른 데이터 형식으로 변환하는것을 의미합니다. 아래에서 두가지 데이터 형식 변환 방법(암시적 변환, 명시적 변환)을 설명합니다. 암시적 변환(Implicit Conversion) 데이터 형식을 자동으로 변환하는 방법입니다. 작은 범위의 데이터 형식에서 큰 범위의 데이터 형식으로의 변환이 발생할 때 자동으로 암시적 변환이 수행됩니다. 이러한 변환이 가능한 이유는 데이터의 손실 없이 작은 데이터 형식을 큰 데이터 형식에 저장할 수 있기 때문입니다. 예를들어 작은 정수 형식에서 큰 정수 형식으로의 변환, 실수 형식에서 정수 형식으로의 변환, 파생 클래스에서 기본 클래스로의 변환에 암..
프로그래밍에서 코드 작성시 영문 텍스트 표기법 종류(Uppercase, Lowercase, Pascal Case, Camel Case) 프로그래밍에서 코드의 일관성과 가독성을 유지하기 위해 변수명, 함수명, 클래스명 등을 작성할 때 사용할수있는 영문 텍스트 표기법의 종류 Uppercase(대문자) 모든 문자를 대문자로 표기합니다. 예시 "HELLO", "WORLD" Lowercase(소문자) 모든 문자를 소문자로 표기합니다. 예시 "hello", "world" Pascal Case(파스칼 표기법) 여러 단어를 사용할 때 각 단어의 첫 글자를 대문자로 표기하고 나머지는 소문자로 표기합니다. 예시 "MyVariableName", "MyColor" Camel Case(카멜 표기법) 파스칼 표기법과 유사하지만 ..
C# 프로그래밍 - 상수(constant) 상수(constant) 상수(constant)는 프로그램에서 고정된 값으로 사용되어 한 번 선언되면 해당 값을 변경할수없는 필드입니다. 프로그램에서 반복적으로 사용되는 고정된 값을 사용하여 코드의 일관성을 높일수있고 값이 변경되지않도록 보장하여 코드의 안정성을 높일수있습니다. 상수의 선언 const 데이터형식 상수이름 = 값; 상수는 const 키워드를 사용하여 선언됩니다. 상수는 선언과 동시에 값을 할당해야 하며 이후에는 값을 변경할 수 없습니다. 상수는 컴파일 시간에 해당값을 설정하여 실행 시간에 변경되지 않습니다. 상수의 사용예시 예시1 const int MaxValue = 100; // 정수형 상수 선언 const string Greeting = "Hel..
C# 프로그래밍 - 연산자(Operator) 연산자 C#은 여러 종류의 연산자(Operator)를 제공하며 변수 및 값들의 수학적, 논리적 연산을 수행할수있습니다. 연산자는 피연산자(operand)라고 불리는 값들에 대해 특정한 동작을 수행합니다. a=b+c; b,c는 피연산자, +는 연산자 연산자의 종류 산술연산자, 증감 연산자, 대입 연산자, 비교 연산자, 논리 연산자, 비트 연산자 산술 연산자(+, -, *, /, %) + 덧셈, 피연산자를 더합니다. - 뺄셈, 피연산자를 뺍니다. * 곱셈, 피연산자를 곱합니다. / 나눗셈, 피연산자를 나눕니다. % 나머지, 피연산자를 나눈 후 남은 나머지를 반환합니다(modulus operator) 예를들어 int c; c=10%3; 일때 변수 c에는 1이 대입된..