c#187 [C#]배열 중복 값 제거(Distinct) 배열에서 중복 값을 제거한다는 의미는 고유한 값만 가진다는 의미입니다. 하지만, C#에서는 배열의 값을 제거할 수 없기 때문에 중복 값이 없는 새로운 배열을 생성해야 합니다. 이러한 경우 Distinct() 메서드를 사용하여 중복 값이 제거된 새로운 배열을 쉽게 생성할 수 있습니다. 이번 포스팅에서는 Distinct() 메서드 사용 방법과 객체 배열에서 중복 값 제거 방법을 정리하였습니다. 목차 Distinct() 메서드 객체 배열에서 문제점 IEqualityComparer 상속 Equals() 및 GetHashCode() 메서드 재정의 익명 타입 사용 IEquatable 상속 정리 Distinct() 메서드 Distinct() 메서드를 사용하기 위해 using문에 다음 코드를 추가합니다. using S.. C#/배열 2021. 9. 26. [C#]JSON을 객체로 변환(JSON to Object) 이번 포스팅에서는 역직렬화(Deserialize)를 사용하여 JSON 문자열을 객체로 변환하는 방법을 정리하였습니다. JSON(Javascript Object Notation)은 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 교환 형식이며, 특정 프로그래밍 언어에서 사용되는 기법이 아니라 데이터를 송수신하는 약속 방식입니다. 이번 포스팅은 네트워크 통신을 통해서 JSON 데이터를 가져오도록 하였으며, API 요청부터 응답받은 JSON 데이터를 객체로 변환하는 과정을 다룹니다. 목차 무료 API 사이트 .NET 4.x Framework인 경우 API 요청 JSON을 객체로 변환 JSON의 속성을 Class로 변환 복잡한 구조의 JSON을 객체로 변환 무료 API 사이트 API 요청을 하고 J.. C# 2021. 9. 26. [C#]객체를 JSON으로 변환(Object to JSON) 객체를 JSON으로 변환(Object to JSON) 이번 포스팅은 C#에서 직렬화(Serialize)를 사용하여 객체를 JSON으로 변환하는 방법을 소개합니다. JSON이란? JSON(Javascript Object Notation)은 데이터를 저장하거나 전송할 때 사용되는 경량의 DATA 교환 형식이며, 특정 프로그래밍 언어에서 사용되는 기법이 아니라 데이터를 송수신하는 약속 방식입니다. 객체를 JSON으로 변환하는 과정을 직렬화라고 하며, JSON을 객체로 변환하는 과정을 역직렬화라고 합니다. .NET 4.x Framework인 경우 .NET 5 Framework는 System.Text.Json 네임스페이스에서 JsonSerializer 클래스를 기본으로 제공하기 때문에 객체를 JSON으로 직렬화 .. C# 2021. 9. 25. [C#]난수 생성 방법(Random 클래스) C#은 난수(랜덤 값)를 생성하기 위해 Random 클래스를 제공합니다. 이번 포스팅에서는 Random 클래스의 메서드를 사용하여 난수를 생성하는 방법을 소개합니다. 목차 임의의 난수 생성 범위의 난수 생성 최소에서 최대 범위의 난수 생성 소수점 난수 생성 랜덤 바이트 생성 시드 값 임의의 난수 생성 임의의 난수는 Random 클래스의 Next() 메서드를 사용하여 생성할 수 있습니다. 다음 코드는 임의의 난수를 생성하는 코드입니다. Random randomObj = new Random(); int randomValue = randomObj.Next(); Next() 메서드는 -2,147,483,648 ~ 2,147,483,647 범위 내 양의 정수를 반환합니다. 다음은 랜덤 값을 List에 넣는 코드입.. C# 2021. 9. 25. [C#]코드 실행 시간 측정 개발자로서 애플리케이션의 성능을 최적화하기 위해 코드 실행 시간을 측정하고 문제가 되는 코드를 수정하는 작업은 선택이 아닌 필수입니다. 비즈니스 로직을 처리하는 코드의 실행 시간을 측정하고 싶은 경우 C#에서는 Stopwatch 클래스를 사용할 수 있습니다. 이번 포스팅에서는 Stopwatch 클래스를 사용하여 코드 실행 시간을 측정하는 방법을 소개합니다. Stopwatch 클래스 우선, Stopwatch 클래스를 사용하기 위해 using문에 System.Diagnostics 네임스페이스를 추가합니다. using System.Diagnostics; 다음은 1,000,000,000번의 루프를 실행 시간을 측정하는 코드입니다. Stopwatch watch = new Stopwatch(); int sum = .. C# 2021. 9. 25. [C#]문자열을 정수로 변환 방법(String to Int) C#에서 문자열을 정수로 변환하는 방법을 소개합니다. 다음 3가지 방법을 사용하여 숫자 형식의 문자열을 정수로 변환할 수 있습니다. 목차 Parse() 메서드 Convert 클래스 TryParse() 메서드(권장 방식) Parse() 메서드 Parse() 메서드는 문자열을 정수로 변환하는 가장 쉬운 방법이며 16, 32, 64비트 부호 있는 정수 타입에 사용할 수 있습니다. Int16.Parse() Int32.Parse() Int64.Parse() 다음은 Parse() 메서드 기본 사용 방법입니다. Int32.Parse("1000"); // 1000 Int32.Parse("-1000"); // -1000 Parse() 메서드는 공백이 있을 경우 공백을 알아서 제거합니다. Int32.Parse(" 2000.. C#/문자열 2021. 9. 25. [C#]제네릭 형식 제약 조건(where) 제네릭(Generic)은 특정 데이터 타입(Data Type)에 국한되지 않고 모든 타입을 허용하는 제네릭 메서드와 제네릭 클래스를 구현할 수 있지만, 특정 조건에만 대응되는 데이터 타입이 필요한 경우가 있습니다. 이러한 경우 where 키워드를 사용하여 제약 조건을 추가할 수 있으며, 제약 조건을 만족하지 않는 경우 컴파일 에러가 발생하도록 할 수 있습니다. 이번 포스팅에서는 제네릭 제약 조건이 무엇인지 정리하였습니다. 목차 제네릭 제약 조건 추가 제네릭 제약 조건 종류 멀티 제약 조건 제네릭 제약 조건 추가 다음은 모든 타입을 허용하는 제네릭 클래스입니다. class GenericClass { public T objMember { get; set; } } class Program { static vo.. C# 2021. 9. 23. [C#]메서드를 매개 변수로 전달(Func, Action, Predicate) C#에서는 대리자(delegate)를 사용하여 메서드를 매개 변수로 전달할 수 있는 기법이 존재합니다. 바로 Func 대리자, Action 대리자, Predicate 대리자를 사용하여 전달할 수 있습니다. 이번 포스팅에서는 C#에서 메서드를 매개 변수로 전달할 수 있게 해주는 Func, Action, Predicate 대리자를 소개합니다. 목차 Func 대리자 Action 대리자 Predicate 대리자 정리 Func 대리자 Func 대리자는 0~16개의 입력 매개 변수가 존재하며, 반환 값이 존재합니다. Func 대리자는 다음과 같이 .Net FrameWork에 선언되어 있습니다. public delegate returnType Func(InputType arg); returnType 반환 타입입니다... C# 2021. 9. 22. [C#]대리자(delegate) 개념, 필요성 C#에서 대리자(delegate)는 메서드를 대신 호출해주는 기법으로 '대신 실행해주는 사람'이라는 국어사전에서 설명하고 있는 의미와 유사합니다. 대리자는 메서드의 주소를 참조하고 있어서 메서드를 대신 호출할 수 있는데요. C/C++의 참조 포인터와 유사하지만, 데이터 타입을 안전하게 처리한다는 장점이 있습니다. 이번 포스팅에서는 대리자란 무엇인지 그리고 대리자가 왜 필요한지 정리하였습니다. 목차 대리자(delegate)란? 대리자의 필요성 정리 대리자란(delegate)란? 위에서 설명했듯이 대리자는 메서드를 대신해서 호출하는 기법이며, 대리자를 선언하기 위해서는 delegate 키워드를 사용합니다. 한정자 delegate 반환타입 대리자이름 ( 매개변수목록 ) delegate 키워드를 제외하면, 메서.. C# 2021. 9. 22. [C#]제네릭 클래스(Generic Class) 제네릭 클래스(Generic Class)란? 제네릭 클래스(Generic Class)는 클래스 내부의 멤버 변수의 데이터 타입을 일반화한 클래스입니다. 특정 타입에 국한되지 않고 모든 타입을 멤버 변수의 타입으로 설정할 수 있습니다. 제네릭 클래스를 사용하지 않고 멤버 변수의 타입을 object 타입으로 정의할 수 있지만, 안전한 방법이 아니며, 향후 문제가 발생할 가능성이 높기 때문에 좋은 방법은 아닙니다. 이번 포스팅에서는 일반 클래스로 멤버 변수의 타입이 여러개인 경우와 제네릭 클래스(Generic Class)에 대해 정리하였습니다. 목차 일반 클래스의 문제점 제네릭 클래스(Generic Class) 정리 일반 클래스의 문제점 public class IntClass { public int intMe.. C# 2021. 9. 22. [C#]자료형(DataType) 확인 방법(GetType, typeof) C#에서 변수 또는 객체의 자료형을 확인하는 방법으로 GetType 메서드가 있습니다. 그리고 변수는 확인 불가능하지만, 객체의 자료형을 확인할 수 있는 typeof 연산자도 있습니다. 이번 포스팅에서는 GetType 메서드와 typeof 연산자에 대해 정리하였습니다. 목차 GetType 메서드 typeof 연산자 정리 GetType 메서드 GetType 메서드는 현재 인스턴스의 자료형을 반환합니다. 변수 또는 객체를 인수로 전달합니다. namespace ConsoleApp1 { class Program { class Person { public string Name { get; set; } } struct Circle { public int x; public int y; } static void Mai.. C# 2021. 9. 20. [C#]자료형(Data Type)의 기본 값(default) 연산자 C#에서는 자료형(Data Type)의 기본 값을 반환하는 default 연산자가 존재합니다. C# 7.1부터는 컴파일러가 자료형을 유추하여 기본값을 할당하는 default 리터럴이 추가되었으며, 코드를 심플하게 작성할 수 있습니다. 이번 포스팅에서는 default 연산자와 리터럴에 대해 설명하며, 어디에 사용되는지 정리하였습니다. 참고로 default 연산자와 리터럴은 switch문에서 사용되는 default와는 다른 개념입니다. 목차 default 연산자, 리터럴 default 응용 및 사용 정리 default 연산자, 리터럴 default 연산자는 괄호 안에 자료형을 명시해줍니다. int num = default(int); Console.WriteLine(num); // 0 default 리터럴은 .. C# 2021. 9. 20. 이전 1 ··· 10 11 12 13 14 15 16 다음