반응형

C#

(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

(C#) 1차원 배열의 요소를 뒤로 1칸씩 이동하기

다음 코드는 1차원 배열의 요소를 뒤로 1칸씩 이동시키는 C# 코드입니다. 맨 뒤의 요소는 맨 앞으로 이동시킵니다. using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { int[] arr = { 1, 2, 3, 4, 5 }; // 마지막 요소의 값 보관 int temp = arr[arr.Length - 1]; for (int i = arr.Length - 1; i > 0; i--) { arr[i] = arr[i - 1]; } // 보관된 마지막 요소의 값을 맨 처음으로 이동 arr[0] = temp; foreach (int n in arr) { Console.Write(n + " ");..

C#/C#_기초강의 2023.04.24

(C#) 인쇄: 인쇄 미리보기 - PrintPreviewDialog ...

C#에서 인쇄와 관련된 컨트롤에는 다음과 같은 것들이 있습니다. PageSetupDialog 페이지 설정 대화 상자(용지, 방향, 여백 등) PrintDialog 인쇄 옵션을 선택할 수 있는 대화상자 (프린트 선택, 매수, 페이지 방향) PrintDocument 프린터로 출력을 보낼 개체 정의 PrintPreviewControl 인쇄 미리보기 대화상자 (대화상자나 버튼은 없다.) PrintPreviewDialog 인쇄 미리보기 대화상자 다음 예제는 "인쇄 미리보기" 대화상자에 텍스트 파일을 출력하는 예제입니다. 예제 1 1. 프로젝트를 생성합니다. Windows Forms 앱(.NET Framework) 2. 도구 상자에서 다음과 같은 컨트롤을 가져옵니다. 버튼 1개, PrintDocument 1개, P..

C# 2023.04.24

(C#) Linq, 구조체(struct), List<T> 응용: 나이 순으로 정렬하기

다음과 같은 문제를 생각해 보겠습니다. 10명의 사람 정보에는 이름과 나이가 있습니다. 일반적인 배열을 사용한다고 가정해 보면 다음과 같이 정의할 수 있습니다. 이름은 문자열(string)이고, 나이는 정수(int) 형식입니다. 이 데이터를 배열을 이용해서 나이순으로 정렬해서 출력하는 것을 생각해 보십시오. C# 에서 제공하는 Array.Sort() 메서드를 사용할 수 없습니다. 아마 버블 정렬(bubble sort) 또는 선택 정렬(selection sort) 등의 알고리즘으로 복잡하게 표현을 해야 할 수 있습니다. 이 경우는 struct로 이름과 나이를 한 개의 자료형으로 묶고, Linq를 이용해서 쉽게 표현할 수 있습니다. 사람(Person)을 표현하는 구조체를 다음과 같이 선언합니다. intern..

C# 2023.04.24

(C#) LINQ(Language-Integrated Query) 링크 기초

LINQ는 Language-Integrated Query의 약어로 "통합된 데이터 쿼리어"의 의미입니다. 배열 또는 리스트 등 컬렉션 데이터를 가공할 때 편리하게 사용될 수 있습니다. namespace namespace: System.Linq; Linq: 확장 메서드 Linq에서는 다음과 같은 확장 메서드를 제공합니다. Sum() 합 Average() 평균 Count() 개수 Max() 최대값 Min() 최소값 private void button1_Click(object sender, EventArgs e) { int[] a = { 4, 1, 5, 2, 3 }; a.Sum(); listBox1.Items.Add(a.Sum()); listBox1.Items.Add(a.Count()); listBox1.It..

C#/C#_기초강의 2023.04.23

(C#) 람다식(Lambda expression), 화살표 연산자(=>) 기초

람다식에 대해 알아봅니다. 람다식의 일반 구문은 다음과 같습니다. 람다 식 member => expression; 예제 1 람다식(=>)을 이용해서 메서드를 간단하게 표현할 수 있습니다. internal class Program { static void Hi() { Console.WriteLine("안녕하세요!"); } static void Main(string[] args) { Hi(); } } 위 코드를 람다식을 이용해서 다음과 같이 표현할 수 있습니다. internal class Program { static void Hi() => Console.WriteLine("안녕하세요!"); static void Main(string[] args) { Hi(); } } 예제 2 매개변수를 갖는 람다식을 작성..

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