728x90
반응형
SMALL

스마트한 개발 공부/C# 11

[C#] 여러 가지 메소드 반환타입

메서드의 반환 타입에는 여러 종류가 있다. 전달받은 리스트의 총합,최대값,평균을 구하는 메서드를 만든다고 해보자. ref, out 파라미터를 사용 하나의 단위로 묶어서 반환 (구조체, 클래스) 하나의 단위로 묶어서 반환 (익명타입) 튜플로 묶어서 반환 위의 4가지 방법의 반환 방법을 알아보자. 1. ref, out 파라미터를 사용 class Calc { public int Calculate(List list, out int max, out double avg) { int sum = 0; max = 0; avg = 0.0; foreach(int item in list) { sum += item; if (max < item) max = item; } avg = (sum * 1.0) / list.Count; ..

[C#] object, var, dynamic 비교

1. object - object는 모든 타입을 받을 수 있는데, 형변환을 해야 한다, object o = 10; //o = o +10; 오류가 남 o = (int)o + 10; Console.WriteLine(o.GetType()); //System.Int32 o = "ABC"; Console.WriteLine(o.GetType()); //System.String 2. var - var는 처음 값이 할당되는 순간 타입이 결정이 되고 형 변환은 필요 없다. var v = 20; v = v + 30; //Console.WriteLine(v.GetType()); // System.Int32 //v = "Daum"; 오류발생 3. dynamic dynamic은 컴파일 시에 코드 체크를 하지 않고 건너뛴다 dy..

[C#] Method에서 여러 개의 Return 값 받기

함수를 만들다 보면 1개의 함수에서 여러 개의 return값을 출력하고 싶을 때가 있다. 이런 경우에 사용할 수 있는 방법 몇 가지를 알아보자. 우선, 두개의 숫자를 더해서 합을 출력하는 함수를 만들었다고 해보자. static void Main(string[] args) { Console.WriteLine("두개의 숫자를 각각 입력:"); int.TryParse(Console.ReadLine(),out int num1); int.TryParse(Console.ReadLine(), out int num2); int sumNum = Calc(num1,num2); Console.WriteLine($"{num1}과 {num2}의 합은 {sumNum}이다"); } private static int Calc(int..

[C#] 변수를 상수형으로 만드는 방법 : readonly와 const

C#에서는 변수를 상수로 만드는 방법이 존재한다. 그 중에서 const와 readonly라는 한정자가 있다. const는 compile을 한 시점에 값을 확정하기 때문에, const 필드는 필드 선언에서만 초기화 될 수 있다. 반면에, readonly는 필드 선언과 임의 생성자에서 readonly 값을 여러 번 할당할 수 있다. 그래서 readonly 필드는 생성자를 만들 때 그에 따라 다른 값을 줄 수 있다. 1. const 예시 class ConPoint { const int x = 5; int y; public ConPoint(int x, int y) { this.y = y; } public override string ToString() //private 변수를 출력하기 위한 출력코드 { retu..

[C#] Struct 구조체

프로그램을 추상화 하기 위해서는 Class나 Struct가 필요하다. Class로 작성한 코드의 키워드를 struct로 바꿔도 코드가 실행되는 경우가 많다. Struct와 Class의 차이는 무엇일까? 1. Struct와 Class의 차이 구조체는 ValueType으로 함수 호출 방식이 call by value이다. 함수가 호출될 때, 똑같은 데이터를 갖는 인스턴스가 복사가 돼서 생성된다. 즉, 매개변수로 전달을 많이 할수록 메모리가 많이 사용된다. (메서드의 실행결과에 영향을 받지 않는다) 구조체는 인스턴스를 생성할 때 new 생성자를 호출할 수도 있고, 생성자와 상관없이 생성할 수도 있다. 구조체는 생성자를 정의해도 기본생성자가 무조건 추가생성 된다. 구조체는 생성자를 정의할 떄 모든 멤버에 대해서 ..

728x90
반응형
LIST