본문 바로가기
728x90

전체 글198

[C#] Collection ArrayList 배열과 가장 유사한 형태의 자료구조로, 배열과 다른 점이라면 초기 용량이 정해져있지 않다는 점이다. 즉, 추가하는 만큼늘어난다. namespace CollectionSample { class MainApp { static void Main(string[] args) { ArrayList arrayList = new ArrayList(); arrayList.Add("Apple"); arrayList.Add("Banana"); arrayList.Add("Orange"); foreach (object item in arrayList) { Console.WriteLine(item); // Apple Banana Orange } } } } 배열과 마찬가지로 인덱스로 출력할 수도 있다. Conso.. 2023. 8. 21.
[C#] 이차원 배열과 가변 배열 이차원 배열과 가변 배열 이차원 배열과 가변 배열은 둘 다 행과 열로 구성이 된다. 둘의 차이점이라면, 이차원 배열은 모든 행의 길이가 같고, 가변 배열은 행마다 길이가 다르게 구성이 가능하다는 것이다. 예를 들자면 0 1 2 3 4 5 6 7 8 9 10 11 이건 모든 행의 길이가 같으므로 이차원 배열이고, 1 2 3 4 5 6 7 8 9 이건 행마다 길이가 다르므로 가변 배열이다. 이차원 배열은 [,]로 선언을 한다. int[,] matrix = new int[3, 4]; // 3x4 이차원 배열 생성 // 배열 요소 넣기 for (int row = 0; row < 3; row++) { for (int col = 0; col < 4; col++) { matrix[row, col] = row * 4 .. 2023. 8. 21.
[C#] 배열 다루기 배열의 마지막 인덱스 항상 배열의 마지막 인덱스에 접근할 때 배열.Length-1로 접근했었는데, C# 8.0부터는 이런 불편함을 없앤 ^연산자가 등장하였다. ^n은 뒤에서 n번째 인덱스를 말한다. using System; namespace ArraySample { class MainApp { static void Main(string[] args) { int[] arr = { 1, 2, 3, 4, 5 }; Console.WriteLine(arr[^1]); // 5 Console.WriteLine(arr[^2]); // 4 Console.WriteLine(arr[^3]); // 3 } } } 배열의 정렬과 출력 int[] scores = new int[] { 90, 70, 50, 100, 40, 80 }.. 2023. 8. 21.
[이것이 C#이다] Chapter09: 연습문제 1. 다음 코드에서 NameCard 클래스의 GetAge(), SetAge(), GetName(), SetName() 메서드들을 프로퍼티로 변경해 작성하세요. using System; namespace Chapter09Practice { class NameCard { private int age; private string name; public int GetAge() { return age; } public void SetAge(int value) { age = value; } public string GetName() { return name; } public string SetName(string value) { name = value; } } class MainApp { public static .. 2023. 8. 20.
[C#] 레코드와 프로퍼티 레코드 레코드는 주로 데이터를 저장하고 전달하는 용도로 사용되며, 불변성(immutable)을 유지하도록 설계되어 있다. 즉, 레코드의 필드는 초기화 후에는 수정할 수 없다. readonly도 불변성을 유지하기 위해 사용한다. readonly는 필드는 해당 필드를 선언한 클래스 내에서만 값을 할당하고, 할당 후에는 변경할 수 없는 불변 필드이고, 레코드는 이러한 불변성의 개념을 더욱 편리하게 사용할 수 있도록 제공되는 개념이다. public record Person { public string Name { get; init; } public string Age { get; init; } } class Program { static void Main(string[] args) { Person person .. 2023. 8. 18.
[C#] 프로퍼티 자바에서 클래스의 멤버 변수에 접근(값을 get하거나 set할 때)할 때 getter와 setter를 만든다. 이렇게 하는 이유는 데이터 은닉성과 캡슐화를 위해서이다. 일반적으로 public 메서드 안에 private 필드가 선언된다. public class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } 프로퍼티 C#에서도 동일하게 getter와 setter 메서드를 구현할 수 있다. 하지만 C#에서는 프로퍼티라는 것을 제공한다. 프로퍼티도 프로퍼티는 메서드가 아니라 필드와 같은 형태로 사용되며, 내부적으로 자동 생성된 ge.. 2023. 8. 18.
[이것이 C#이다] Chapter08: 연습문제 .1. 인터페이스와 클래스의 다른 점은 무엇입니까? 인터페이스는 메서드 시그니처만 정의하고, 구현을 하지 않는다. => 계약을 정의하는 목적 클래스는 메서드를 구현할 수도 있다. => 구체적인 기능을 구현하는 목적 그 외에도 인터페이스는 클래스와 달리 다중상속 가능하다는 점이 있다. 2. 인터페이스와 추상 클래스의 다른 점은 무엇입니까? 위에서도 말했듯이, 인터페이스는 기본적으로 메서드 시그니처만 정의를 하고, 구현을 하지 않는다. 이를 추상 메서드라고 하는데, 추상 클래스는 추상 메서드가 하나 이상만 있으면 된다. 즉, 추상 클래스는 구현부가 있는 일반 메서드도 포함할 수 있다. 추상 클래스도 클래스이기 때문에 인터페이스와 달리 다중상속이 불가능하다. 2023. 8. 18.
[C#] 인터페이스와 추상클래스 인터페이스를 상속받는 것과 클래스를 상속받는 것의 차이점 인터페이스를 상속받는 것 (Interface Inheritance) 인터페이스는 메서드 시그니처(이름, 매개변수, 반환 값)만 정의한다. 클래스가 인터페이스를 상속받으면 해당 클래스는 인터페이스가 정의한 메서드들을 모두 구현해야 한다. (하나라도 구현되지 않으면 컴파일 에러가 난다.) 그리고 다중상속이 가능하다. (쉼표(,)로 이어쓰면 된다.) interface IShape { double CalculateArea(); } class Circle : IShape { double radius; public Circle(double r) { radius = r; } public double CalculateArea() { return Math.PI *.. 2023. 8. 18.
728x90

"); wcs_do();