C#190 [C#]구조체(Struct) 구조체(struct) 구조체는 struct 키워드를 사용하여 값 형식(Value Types)을 정의하고 클래스는 class 키워드를 사용하여 참조 형식(Reference Types)을 정의합니다. 값 형식(Value Types) 값이 스택(Stack) 영역에 할당됩니다. 참조 형식(Referenct Types) 값이 힙(Heap) 영역에 할당됩니다. 스택(Stack) 영역은 값이 할당된 힙의 메모리 주소를 참조합니다. 구조체 정의 struct 키워드를 사용하여 구조체를 정의합니다. struct Person { public string name; public int age; } Person 구조체 내부에는 name과 age라는 필드가 존재합니다. 구조체에는 변수뿐만 아니라 메서드, 인덱서도 존재할 수 있습.. C# 2022. 5. 15. [C#]this 키워드 this 키워드 C#에서 this 키워드는 클래스 내부의 메서드 또는 생성자에서 현재 클래스의 인스턴스 멤버를 참조하는데 사용됩니다. 메서드의 매개변수와 인스턴스 변수의 이름이 같은 경우 구분하기 위해 사용되기도 합니다. 즉, this 키워드는 자기 자신(생성된 객체)의 멤버를 접근하기 위해 사용되는 키워드입니다. 다음은 this 키워드를 사용하는 간단한 예제입니다. namespace ConsoleApp2 { class Program { string str; Program(string str) { this.str = str; Console.WriteLine("생성자에서 this: " + this); } static void Main(string[] args) { Program obj = new Progr.. C# 2022. 5. 9. [C#]접근 제한자(Access Modifier) - public, private, protected 접근 제한자(Access Modifier) C#의 접근 제한자(Access Modifier)는 접근 한정자라고 불리기도 하며, 타입(Class 및 Interface)의 범위뿐만 아니라 멤버(변수, 필드 및 메서드)의 접근 범위를 정의하는데 사용되는 기술입니다. 클래스 또는 클래스의 멤버를 접근 가능 여부는 접근 제한자에 의해 정의됩니다. C#의 5가지 접근 제한자 Private Public Protected Internal Protected Internal C#에는 5가지 접근 제한자가 존재합니다. 다음은 5가지 접근 제한자를 설명하기 전에 위에서 말한 타입과 멤버가 무엇인지 설명합니다. ※ Private Protected라는 접근 제한자도 존재하지만, C# 7.2 버전부터 사용할 수 있으므로 이번 포스.. C# 2022. 5. 8. [C#]정적 생성자(Static Constructor) 정적 생성자(Static Constructor) C#에서 static 키워드를 사용하여 정적으로 생성된 생성자를 정적 생성자라고 합니다. 정적 생성자는 클래스의 인스턴스(객체)가 몇 개나 생성되는지에 상관없이 클래스가 처음 로드될 때 한 번만 호출됩니다. 정적 생성자는 클래스의 정적 필드(static field)를 초기화하는데 사용되며, 정적 생성자 내부에서 특정 로직을 구현할 수 있습니다. 정적 생성자와 마찬가지로 정적 멤버는 클래스의 인스턴스가 몇 개나 생성되는지에 상관없이 한 번만 만들어집니다. 정적 생성자 특징 클래스에서 정적 생성자는 오직 한 개만 존재합니다. 정적 생성자는 매개변수가 없어야 합니다. 정적 생성자는 클래스의 정적 멤버에 접근할 수 있습니다. 정적 생성자에는 접근 지정자(접근 제한.. C# 2022. 5. 5. [C#]복사 생성자(Copy Constructor) 복사 생성자(Copy Constructor) C#에서 복사 생성자는 생성자에서 동일한 클래스의 객체를 매개변수로 사용하는 경우 복사 생성자라고 합니다. 복사 생성자는 매개 변수가 존재하는 생성자에 포함되기도 하며, 복사 생성자는 새 인스턴스를 기존 인스턴스의 값으로 초기화할 때 유용합니다. 일반적으로 C#은 객체에 대한 복사 생성자를 제공하지 않으므로 필요에 따라 개발자가 직접 구현해야 합니다. 다음은 복사 생성자 구문입니다. class Person { // field... // 기본 생성자 public Person() { // Code... } // 복사 생성자 public Person(Person person) { // Code... } } 복사 생성자의 이름은 클래스 이름과 동일하며, 복사 생성자의.. C# 2022. 5. 5. [C#]생성자(Constructor) 생성자(Constructor) C#의 생성자는 클래스 인스턴스(객체)를 생성할 때마다 자동으로 실행되는 특수한 메서드입니다. 생성자는 클래스 내부에 존재하며, 두 가지 역할을 담당합니다. 첫 번째는 객체를 초기화하는 역할을 담당하고 두 번째 역할은 메모리 할당입니다. new 키워드를 사용하여 클래스 인스턴스를 생성할 수 있습니다. 생성자 특징 생성자 이름은 클래스 이름과 동일합니다. 생성자는 값을 반환하지 않으므로 반환 유형과 return문이 존재하지 않습니다. 생성자를 정의하지 않으면 클래스에서 기본 생성자라고 하는 암시적 생성자를 제공합니다. 생성자 예제 다음은 Program 클래스의 인스턴스를 생성하고 기본 생성자가 실행되는 예제입니다. class Program { Program() { Consol.. C# 2022. 5. 5. [C#]소멸자(destructor) 소멸자(destructor) 소멸자는 클래스 이름과 동일하지만 메서드 이름 앞에 물결표(~)가 존재하는 특수한 메서드입니다. C#의 생성자는 클래스의 객체가 생성될 때 호출됩니다. 반면에 소멸자는 클래스의 객체가 소멸될 때 실행됩니다. 생성자 및 소멸자는 클래스 이름과 동일하지만, 생성자와 소멸자를 구분하기 위해 소멸자 메서드 이름 앞에 물결표(~) 키워드가 사용됩니다. class Person { Person() { // 생성자 } ~Person() { // 소멸자 } } 소멸자 특징 소멸자는 매개변수와 접근 지정자(접근 제한자)를 가질 수 없습니다. 각 클래스는 여러 개의 소멸자를 가질 수 없습니다. 소멸자는 오버로드되거나 상속될 수 없습니다. 소멸자 이름은 항상 클래스 이름과 동일하며 반환 타입이 없.. C# 2022. 5. 2. [C#]DataTable을 List로 변환 DataTable을 List로 변환 이번 포스팅은 C#에서 DataTable을 List로 변환하는 다양한 방법을 소개합니다. C#에서 DataTable을 List로 변환해주는 메서드는 존재하지 않으므로 아래 예제들을 참고하여 경우에 따라 적용하면 되겠습니다. 반복문 사용 아래 예제는 for문을 사용하여 DataTable을 List로 변환합니다. class Person { public string name { get; set; } public int age { get; set; } public string address {get; set;} } class Program { static void Main(string[] args) { DataTable dt = new DataTable("Person"); d.. C# 2022. 5. 1. [C#]텍스트 파일 쓰기 C# 파일에 텍스트 쓰기 System.IO 네임스페이스는 파일에서 데이터 생성, 수정 및 검색과 같은 다양한 작업을 수행하기 위한 클래스를 제공합니다. 이번 포스팅에서는 파일에 텍스트를 쓰기 위한 몇 가지 방법들을 소개합니다. File 클래스 File 클래스는 파일에 텍스트를 쓰는 몇 가지 정적 메서드를 제공합니다. 사용 방법은 아래와 같으며 아래 예제는 파일이 존재하는지 체크하지 않습니다. 에러 또는 예외가 발생하는 경우 경로 및 폴더 존재 유무를 확인해주시길 바랍니다. File.WriteAllText() File.WriteAllText() 메서드는 새 파일을 생성하고 내용을 작성한 다음 파일을 닫습니다. 파일이 이미 존재하는 경우 내용을 덮어씁니다. class Program { static void .. C# 2022. 5. 1. [C#]람다식, 람다표현식(Lambda expression) 람다식(Lambda expression)이란? 람다식(Lambda)식은 접근자, 함수 이름, return문이 없는 익명 함수(anonymous function)입니다. 람다식을 사용하면 더 짧은 코드를 작성할 수 있으며 코드를 더 가독성 있게 만들 수 있습니다. 람다식은 람다 연산자 =>를 사용합니다. 다음은 간단한 예제입니다. int 형식의 매개변수가 존재하는 DoubleFunc메서드를 선언합니다. 이 메서드는 매개변수에 2를 곱한 결과를 반환합니다. class Program { static int DoubleFunc(int num) { return num * 2; } static void Main(string[] args) { Console.WriteLine(DoubleFunc(10)); } } 실행.. C# 2022. 5. 1. [C#]SortedList 클래스 SortedList 클래스란? SortedList 및 SortedList는 Array와 Hashtable의 조합으로 키로 정렬된 키-값 쌍의 형식을 나타내는 컬렉션입니다. 키의 타입이 int, string과 같은 원시 타입인 경우 키의 오름차순으로 정렬됩니다. C#은 제네릭 컬렉션인 SortedList와 제네릭 컬렉션이 아닌 SortedList를 지원하는데, 제네릭 컬렉션은 키와 값에 타입을 설정함으로써 컴파일러가 타입을 검사하므로 오류가 발생할 가능성이 적습니다. 제네릭에 대한 이해도가 있다면, 제네릭 컬렉션인 SortedList를 사용하는 것을 권장합니다. 이번 포스팅에서는 SortedList 컬렉션 사용 방법을 설명합니다. 목차 SortedList 객체 생성 및 초기화 SortedList 객체 접근.. C# 2022. 2. 6. [C#]yield 키워드 yield 키워드란? C#의 yield 키워드는 return문과 함께 사용되어 메서드가 반복자임을 설정합니다. 쉽게 설명하자면, 일반적으로 컬렉션 또는 배열을 반복문으로 접근하는 경우 다음 예제처럼 foreach문을 사용하는 경우가 일반적입니다. class Program { static void Main(string[] args) { ArrayList arrList = new ArrayList() { 1, 2, 3 }; foreach (var item in arrList) Console.WriteLine("item: {0}", item); } } 실행 결과 foreach문은 위 예제처럼 컬렉션 또는 배열처럼 반복 가능한 객체를 in 우측에 작성하는데, yield 키워드를 사용한 메서드도 in 우측에 작성.. C# 2022. 2. 6. 이전 1 ··· 7 8 9 10 11 12 13 ··· 16 다음