반응형

전체 글

(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# ASP.NET) 웹폼(Web Form) 시작하기 : 따라하기

C#으로 ASP.NET 웹폼을 시작하는 방법을 설명합니다. 아마 웹폼을 시작할려는 분은 C#의 초보자는 아니고 다음과 같은 경험 또는 실력이 있어야 할 겁니다. 윈폼 프로그램을 어느정도 잘 한다. HTML, CSS로 웹 페이지를 만들 수 있다. 윈폼에서 데이터베이스 프로그램을 만들 수 있다. 1. 먼저 비주얼스튜디오에서 ASP.NET 개발 도구가 설치되어 있어야 합니다. 비주얼스튜디오를 시작합니다. [도구] 메뉴에서 "도구 및 기능 가져오기"를 선택합니다. 2. "ASP.NET 및 웹 개발"을 체크하고, 설치 세부 정보에서 ".NET Framework 프로젝트 및 항목 템플릿"도 선택합니다. 우측 하단의 [수정] 버튼을 누르고 설치합니다. ASP.NET 앱 간단한 예제로 첫 번째 ASP.NET 웹폼 프로..

C#_ASP.NET 2023.04.25

(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
반응형