본문 바로가기

C# 문법

(26)
[C#]7.0이전의 Tuple => Tuple클래스 Tuple클래스 튜플은 값의 특정 개수와 시퀀스를 포함하는 데이터 구조 입니다. Tuple까지 최대 8개의 구성요소를 가질수 있습니다. Tuple 결과값은 순서대로 Item1, Item2.. 순서로 표현 됩니다. Tuple 클래스 사용법` public void Run() { var pInfo = PersonalInfor("Yangbeng", 33); Console.WriteLine($"{pInfo.Item1} : {pInfo.Item2}"); } private Tuple PersonalInfor(string name, int age) { Tuple personalInformation = new Tuple(name, age); return personalInformation; } 결과 Yangbeng : 33
[C#] 7.0 Out 매개 변수 Out 매개 변수 out 키워드를 사용하면 참조를 통해 인수를 전달할 수 있습니다. C# 6.0 이전버전에는 out Parameter에 관한 별도 변수 선언을 해야 했지만 c# 7.0 부터는 out Parameter값이 암시적 형식 지역변수로 선언할 수 있습니다. 6.0 이전 사용 방법 public void Run() { int ret = 0; Sum(out ret, 3, 4); Console.WriteLine($" 3 + 4 = {ret}"); } private void Sum(out int result, int val1, int val2) { result = val1 + val2; } 7.0 이후 사용 방법 public void Run() { //out 에 해당하는 매개 변수 값을 지역변수로 선언 S..
[C#] 7.0 로컬 함수 로컬 함수 로컬 함수는 메서드 안에 그 메서드에서만 사용하는 로컬 함수를 작성할 수 있다. 로컬함수는 자신의 메서드 이외에서 호출할 수 없으며, 하나의 메서드 안에는 여러개의 로컬 함수들을 만들 수 있습니다. 사용 방법 private void Run() { var cal = Cal_Average(new int[] { 1, 2, 3, 4 }); Console.WriteLine($"Value : 1 ~ 4 Avg : {cal}"); } private double Cal_Average(int[] val) { int cnt = val.Length; double avg = GetAvg(val); return avg; // 아래와 같이 함수 안에 함수를 선언! double GetAvg(int[] values) { ..
[C#] 7.0 튜플(Tuple) 튜플(Tuple) 튜플은 데이터 멤버를 나타내는 여러 필드가 포함된 간단한 데이터 구조 입니다. C# 튜플 형식은 == 및 !=을 지원 합니다. 사용 방법 (int sum, int sub, int avg) Calculate(int val1, int val2) { int summary = val1 + val2; int subtract = val1 - val2; int average = summary / 2; return (summary, subtract, average); } private void Run() { var cal = Calculate(1 ,3); Console.WriteLine($"Value : 1, 3 \nSum : {cal.sum}, Sub : {cal.sub}, Avg : {cal.av..
[C#] 7.0 패턴 일치 패턴 일치 패턴 일치는 is 식과 switch 식을 지원합니다. 각 식을 통해 개체 및 관련 속성을 검사하여 해당 개체가 검색된 패턴을 충족하는지 확인 할 수 있습니다. is 패턴 object[] obj = { (int)33, null, "Yangbeng" }; foreach(var singleObj in obj) { // obj is int cnt => obj가 int 형식이 맞다면 cnt 라는 int 변수를 생성해서 그곳에 값을 넣는다. if (singleObj is int cnt) Console.Write(cnt); } 결과 33switch 패턴 변수형 타입에 따라 입력된 값을 분류할 수 있습니다. object[] obj = { (int)33, null, "Yangbeng" }; foreach(va..
[C#] 명명된 매개변수, 선택적 매개변수 명명된 매개변수, 선택적 매개변수 C# 4.0에 추가된 명명된 매개변수, 선택적 매개변수 4.0 이전에는 매개변수 따라 결과를 다르게 하려면 아래와 같이 함수 오버로딩을 해야 했습니다. 4.0 이전 void ShowMessage(string name); void ShowMessage(string name, int age); void ShowMessage(string name, int age, string country); 명명된 / 선택적 매개 변수 활용 void ShowMessage(string name, int? age = null, string country= null) { Console.WriteLine($"{name} {age} {country}"); } ShowMessage("Yangbeng"..
[C#] DataTable 중복 데이터 제거 경험 DataTable의 데이터를 DB에 넣거나, 혹은 DataTable의 값을 가지고 다양하게 변형을 시키는 경우가 있습니다. 이때 중복된 데이터가 있다면 오류를 발생하기 쉽습니다. 이때, 아주 간단한 방법으로 중복된 데이터를 제거 할 수 있습니다. 중복된 데이터 생성 class Program { static void Main(string[] args) { CreateDataTable cDt = new CreateDataTable(); DataTable dt = cDt.GetDataTable; foreach (DataRow dRow in dt.Rows) Console.WriteLine($"{dRow[0]} : {dRow[1]}"); } } public class CreateDataTable { priv..
[C#] Property를 LINQ방식으로 표현 Property를 LINQ방식으로 표현 경험 클래스에 Property를 선언하고 사용하다 보면 Linq를 자주 사용하게 됩니다. Property를 Linq방식으로 표현하는 다양한 방식을 알아보겠습니다. 1. Class에 Property 선언 방법 1.1 기본 Property 선언 public class Student { private string _name { get; set; } public string Name { get { return _name; } set { _name = value; } } } 1.2 Linq Style 선언 1 public class Student { private string _name { get; set; } public string Name { get => _name; ..
[C#] Func<T1, T2..> Delegate 리턴값이 존재하는 메서드 Func Delegate Func Delegate는 Action Delegate는 비슷하지만, 반드시 리턴 값을 가져야 합니다. Func로 파라미터는 필요에 따라 0~16개를 받아들일 수 있고, 1개의 Result 값을 갖는다. Func 로 가장 마지막 제네릭 인자가 Return 값이 된다. Action 활용법 public void Run() { //기존 메서드 사용 Func ShowPerson = ShowPersonInfo; string result = ShowPerson("춘남", "프로그래머"); Console.WriteLine(result); //무명메서드 사용 Func ShowPsersonalInfo = delegate (string str, string job) { return $"{str} ..
[C#] Action<T> Delegate 리턴값이 없는 메서드 Action Action Delegate는 리턴 값이 없는 함수에 사용되는 Delegate입니다. Action로 파라미터는 필요에 따라 0~16개를 파미터를 줄 수 있습니다. Action의 사용의 특징은 메서드 내부에 선언하여 메서드 안에서만 사용이 가능하다. Action 활용법 public void Run() { //기존 메서드 사용 Action ShowPerson = ShowPersonInfo; ShowPerson("춘남", 33); //무명메서드 사용 Action ShowPsersonalInfo = delegate (string str, int age) { Console.WriteLine($"{str} : {age}"); }; ShowPsersonalInfo("동복다방", 3); //람다식 사용 A..