반응형

C#/C#_기초강의

(C#) 클래스: Car 자동차, 속성(property)

다음은 C#에서 메서드, 속성, 생성자를 사용한 기본적인 클래스 예제입니다. Car 클래스 using System; class Car { // 속성 public string Brand { get; set; } public string Model { get; set; } public int Year { get; set; } // 생성자 public Car(string brand, string model, int year) { Brand = brand; Model = model; Year = year; } // 메서드 public string StartEngine() { return "Engine started."; } public string Accelerate() { return "Accelerating..

C#/C#_기초강의 2023.05.27

(C#) 중첩 클래스 nested class

아래 예제는 OuterClass 내부에 InnerClass가 중첩되도록 선언되어 있습니다. OuterClass에는 비공개 멤버 변수인 "outerName"이 있습니다. InnerClass에는 외부 클래서에 공개된 InnerMethod가 있습니다. Main 메소드에서 OuterClass 인스턴스를 생성하고 OuterMethod를 호출합니다. 그러면 InnerClass 인스턴스가 생성되고 InnerMethod가 호출됩니다. Outer method called Inner method called Outer name: Outer using System; namespace ConsoleApp3 { class OuterClass { private string outerName; public OuterClass(st..

C#/C#_기초강의 2023.05.25

(C#) 연산자 오버로딩

Point 클래스는 2D 공간에서 점을 나타내는 간단한 클래스로, X와 Y 좌표 값을 가지고 있습니다. 이 예제에서 Point 클래스는 X와 Y라는 두 개의 속성으로 정의를 했고, 생성자를 통해 X와 Y 값을 설정할 수 있습니다. 다음은 C#에서 Point 클래스와 해당 클래스의 연산자 오버로딩의 예제입니다. 연산자 오버로딩을 사용하여 Point 객체들 간의 덧셈과 뺄셈 연산을 수행할 수 있도록 구현하였습니다. + 연산자 오버로딩은 두 개의 Point 객체를 받아서 각각의 X 좌표와 Y 좌표를 더한 새로운 Point 객체를 반환합니다. - 연산자 오버로딩은 두 개의 Point 객체를 받아서 각각의 X 좌표와 Y 좌표를 뺀 새로운 Point 객체를 반환합니다. 프로젝트는 "Windows Forms 앱"으로..

C#/C#_기초강의 2023.05.23

(C#) dynamic 동적 형식과 object 그리고 var 형식 비교

Dynamic 형식은 변수 및 해당 멤버에 대한 참조 사용이 컴파일 시간이 아닌 런타임에 형식이 결정됩니다. 이 형식은 Office Automation API와 같은 COM API, IronPython 라이브러리 등의 동적 API 및 HTML DOM(Document Object Model. 문서 개체 모델)에 대한 액세스에 사용될 수 있습니다. dynamic 형식의 대부분은 object 형식처럼 동작합니다. null이 아닌 모든 식은 dynamic 형식으로 변환될 수 있습니다. dynamic 형식은 컴파일 시간에만 존재하고 런타임에는 존재하지 않습니다. 다음 예제는 dynamic 형식의 변수와 object 형식의 변수를 비교한 것입니다. 컴파일 시간에 변수의 형식을 확인하려면 변수명 위에 마우스 포인터를..

C#/C#_기초강의 2023.05.05

(C#) 선택적 인수 Optional arguments

메서드, 생성자, 인덱서 또는 대리자를 정의할 때, 해당 매개 변수를 필수 또는 선택적으로 지정하게 할 수 있습니다. 호출시 필수 매개 변수는 반드시 인수를 사용해야 하지만 선택적 매개 변수에 대한 인수는 생략할 수 있습니다. 메서드, 생성자, 인덱서 또는 대리자 등을 정의할 때, 매개 변수에 기본값(default value)을 설정해서 기본값에 대한 인수가 전달되지 않은 경우에는 기본값이 사용되게 됩니다. 다음 예제의 OptionalArguments는 필수 매개 변수 1개, 선택적 매개변수 1개로 정의된 경우입니다. private void OptionalArguments(string name, int age=0) { listBox1.Items.Add("이름:" + name + ", 나이:" + age)..

C#/C#_기초강의 2023.05.01

(C#) 명명된 인수 named arguments

메서드(method)를 호출할 때, 매개변수의 목록은 순서대로 전달됩니다. 그러나 순서를 일치시키지 않고 이름을 지정해서 인수를 전달할 수 있습니다. 이를 명명된 인수(named arguments)라고 합니다. 이 방법은 메서드 뿐만 아니라 인덱서, 생성자 및 대리자에 사용할 수 있습니다. 예를 들어, AddListBox 메서드가 다음과 같이 정의되어 있다고 가정해 보겠습니다. private void AddListBox(string name, int age) { listBox1.Items.Add("이름:" + name + ", 나이:" + age); } 위 메서드는 다음과 같이 인수의 순서를 일치시켜서 호출하게 됩니다. AddListBox("홍길동", 22); 그러나 메서드의 인수에 있는 이름을 지정하면..

C#/C#_기초강의 2023.05.01

(C#) ref, out 참조로 인수 전달하기

메서드의 매개변수에 ref 키워드를 사용하면 값이 아니라 참조로 전달됨을 나타냅니다. 매서드의 매개 변수에 참조로 전달되는 또 하나의 키워드는 out입니다. ref와 out의 차이는 매개 변수를 호출하기 전에 ref는 반드시 변수의 값이 초기화 되어 있어야 하지만 out 키워드는 변수의 값을 초기화 할 필요가 없습니다. 즉, out 키워드는 매개 변수로 처리결과를 받기만 할 때 사용될 수 있습니다. 다음 예제는 매개변수에 out를 이용해서 처리 결과를 받는 예제입니다. void Add(int x, int y, out int z) { z = x + y; } private void button1_Click(object sender, EventArgs e) { int a = 1, b = 2, c; Add(a,..

C#/C#_기초강의 2023.04.30

(C#) ref 참조에 의한 호출(call by reference)

ref 키워드는 변수가 참조를 나타내거나 다른 개체의 별칭임을 나타냅니다. 매개변수에 ref 키워드를 사용하면 인수가 값이 아니라 참조로 전달됨을 나타냅니다. 호출하는 쪽의 매개변수에 ref를 사용하면, 호출된 메서드에서도 ref로 받아야 하며, 이 경우 ref로 전달된 매개변수를 통해서 호출할 쪽의 지역 변수의 값을 변경할 수 있습니다. 다음 예제는 두 개의 값을 교환하는 swap 메서드의 예입니다. void swap(ref int x, ref int y) { int temp = x; x = y; y = x; } private void button1_Click(object sender, EventArgs e) { int a = 10, b = 20; swap(ref a, ref b); listBox1.I..

C#/C#_기초강의 2023.04.30

(C#) params 가변 개수의 메서드 매개변수 사용하기

params 키워드를 사용해서 메서드에 가변 개수의 인수 사용할 수 있습니다. 매개변수에 params가 사용되면 추가 매개 변수가 허용되지 않으며, params 키워드 하나만 메서드 선언에 사용할 수 있습니다. 또한 매개 변수는 1차원 배열이어야 합니다. 다음 코드는 매개 변수에 params 키워드를 사용한 C# 코드의 예제입니다. private int Add(params int[] list) { int sum = 0; for (int i = 0; i < list.Length; i++) sum += list[i]; return sum; } private void ParamsMethos(params object[] list) { for (int i = 0; i < list.Length; i++) listB..

C#/C#_기초강의 2023.04.29

(C#) 메서드 오버로딩 method overloadding

메서드 오버로딩은 객체지향 프로그램에서 매개변수의 개수를 달리하거나 타입을 다르게 해서 같은 이름의 메서드를 여러개 정의해서 사용할 수 있게 하는 개념입니다. 아래의 Calculator 클래스에는 같은 이름의 Add 메서드가 3개 정의되어 있습니다. 메서드 오버로딩 매개 변수의 개수를 다르게 한다. 매개 변수의 타입(type)을 다르게 한다. (주의) 메서드의 반환형을 다르게 해서 오버로딩을 구현할 수 없다. class Calculator { public int Add(int a, int b) { return a + b; } public int Add(int a, int b, int c) { return a + b + c; } public double Add(double a, double b) { ret..

C#/C#_기초강의 2023.04.27
반응형