Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#

  1. C#에서 인터넷 연결 여부 확인하는 방법 완벽 가이드

    C#으로 개발할 때 네트워크 상태에 따라 로직을 분기해야 하는 경우가 자주 있습니다. 이 글에서는 System.Net 네임스페이스를 활용하여 특정 머신의 인터넷 연결 여부를 확인하는 방법을 소개합니다.핵심 원리System.Net 네임스페이스는 URI로 식별되는 리소스에 데이터를 주고받는 공통 메서드를 제공합니다. 대표적으로 WebClient 또는 HttpClient 클래스를 사용하면 로컬, 인트라넷, 인터넷상의 어떤 URI 리소스와도 통신할 수 있습니다.여기서는 WebClient의 OpenRead 메서드를 사용합니다. 이 메서드는

  2. C#에서 [] 연산자(인덱서)를 오버로드하는 방법

    C#에서 대괄호 [] 연산자는 인덱서(Indexer)라고 부릅니다.인덱서를 사용하면 객체를 배열처럼 인덱싱할 수 있습니다. 클래스에 인덱서를 정의하면 해당 클래스는 마치 가상 배열처럼 동작하며, 배열 접근 연산자([])를 이용해 클래스의 인스턴스에 직접 접근할 수 있습니다.인덱서는 오버로드가 가능합니다. 또한 여러 개의 매개변수를 사용해 선언할 수 있으며, 각 매개변수는 서로 다른 타입을 가질 수도 있습니다. 즉, 인덱스가 반드시 정수(integer)일 필요는 없습니다.예제 1: 기본적인 인덱서 구현아래 예제에서는 this[int

  3. C#에서 Newtonsoft.Json으로 JSON을 .NET 객체로 역직렬화하고 배열에서 원하는 값 하나만 추출하는 방법

    C#에서 외부 API로부터 받은 JSON 데이터를 처리하려면 먼저 데이터를 가져온 뒤, 이를 .NET 객체로 역직렬화(deserialization)하는 과정이 필요합니다. 이 글에서는 WebClient와 Newtonsoft.Json(Json.NET)을 활용해 JSON을 객체 배열로 변환하고, 그중 원하는 값 하나만 선택하는 방법을 소개합니다.WebClient 클래스란?WebClient 클래스는 URI로 식별되는 로컬, 인트라넷 또는 인터넷 리소스에 데이터를 전송하거나 수신하기 위한 공통 메서드를 제공합니다.WebClient는 내부적

  4. C#에서 IP 주소를 가져오는 방법 완벽 정리

    IP(Internet Protocol) 주소란 네트워크 하드웨어에 부여되는 고유한 주소를 말합니다. 이 주소를 통해 컴퓨터는 같은 네트워크에 있는 다른 장치뿐만 아니라 전 세계의 장치와도 통신할 수 있습니다. IP 주소는 숫자 또는 문자의 조합으로 구성됩니다.인터넷에 연결된 모든 기기는 서로 다른 고유한 IP 주소를 가져야 합니다. 즉, 수십억 개의 IP 주소가 필요하다는 뜻인데, 이러한 수요를 충족하기 위해 새로운 IP 버전인 IPv6가 등장하게 되었습니다.사설 IP 주소(Private IP Address)란?사설 IP 주소는 가

  5. C#에서 | 연산자와 || 연산자의 차이점 완벽 정리

    C#에는 두 가지 종류의 OR 연산자가 존재합니다. 겉보기에는 비슷해 보이지만, 동작 방식과 용도에서 중요한 차이가 있습니다. 이 글에서는 | 연산자와 || 연산자의 차이를 예제 코드와 함께 자세히 살펴보겠습니다. | 연산자란? | 연산자는 피연산자들의 논리합(OR)을 계산합니다. x | y의 결과는 x 또는 y 중 하나라도 true로 평가되면 true가 되며, 그렇지 않으면 false입니다. 여기서 중요한 특징은 | 연산자가 왼쪽 피연산자가 이미 true로 평가되더라도 오른쪽 피연산자까지 반드시 모두 평가한다는 점입니다. 즉, 오

  6. C# LINQ에서 'NOT IN' 쿼리를 구현하는 방법: Except 연산자 완벽 가이드

    SQL에 익숙한 개발자라면 NOT IN 절을 사용해 한 집합에는 있지만 다른 집합에는 없는 데이터를 조회하는 방법을 잘 알고 있을 것입니다. 그렇다면 C# LINQ에서는 이와 같은 기능을 어떻게 구현할 수 있을까요? 정답은 바로 Except 연산자입니다.Except 연산자란 무엇인가?Except 연산자는 IEnumerable<T> 인터페이스를 지원하는 데이터 소스를 대상으로 동작하도록 설계된 집합 연산자(Set Operator)입니다. 모든 LINQ 쿼리 식과 대부분의 LINQ 쿼리는 IEnumerable<T>

  7. C#에서 문자열 배열에 특정 문자열이 포함되어 있는지 확인하는 방법

    C#에서 문자열 배열에 특정 문자열이 포함되어 있는지 확인해야 하는 경우가 자주 있습니다. 이때 가장 간편하게 사용할 수 있는 것이 Contains() 메서드입니다.Contains()는 대상 문자열 안에 특정 부분 문자열(substring)이 존재하는지 검사하는 메서드로, 결과를 불리언(Boolean) 값으로 반환합니다. 부분 문자열이 존재하거나 검색값이 빈 문자열()이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.예외: 검색 대상이 null이면 ArgumentNullException이 발생할 수 있습니다.또한 이

  8. C# 람다 표현식(Lambda Expression) 완벽 정리: 개념, 문법, 활용법

    C# 람다 표현식이란 무엇인가?람다 표현식(Lambda Expression)은 익명 메서드(anonymous method)를 더욱 간결하고 직관적으로 표현할 수 있는 방법입니다. 익명 메서드와 람다 표현식 모두 메서드 구현을 코드 내에서 인라인(in-line)으로 정의할 수 있다는 공통점이 있지만, 익명 메서드는 매개변수 타입과 반환 타입을 명시적으로 선언해야 하는 반면, 람다 표현식은 컴파일러가 타입을 추론하므로 훨씬 짧고 읽기 쉬운 코드를 작성할 수 있습니다.람다 표현식의 두 가지 형태람다 표현식은 본문(body)의 구성에 따라

  9. C#에서 스택 추적을 유지한 채 예외(InnerException)를 다시 발생시키는 방법

    C#에서 throw는 키워드로, 프로그램 실행 중에 예외를 수동으로 발생시킬 때 사용됩니다. 이렇게 발생된 예외는 요구 사항에 따라 try-catch 블록을 사용하여 처리할 수 있습니다.catch 블록 안에서 throw 키워드를 사용하면 해당 블록에서 처리한 예외를 다시 던질(re-throw) 수 있습니다. 예외를 다시 발생시키는 것은 호출자(caller)가 자신의 방식대로 예외를 처리할 수 있도록 예외를 전달하고 싶을 때 유용합니다.throw;와 throw ex;의 차이점여기서 중요한 점은 스택 추적(stack trace)의 보존

  10. C# 리플렉션(Reflection)으로 속성 값 설정하는 방법 완벽 가이드

    System.Reflection 네임스페이스는 애플리케이션에 대한 정보를 얻고, 타입(Type), 값(Value), 객체(Object)를 동적으로 추가할 수 있게 해주는 클래스들을 제공합니다.리플렉션(Reflection) 객체는 런타임에 타입 정보를 얻는 데 사용되며, 실행 중인 프로그램의 메타데이터에 접근할 수 있는 클래스들이 모두 System.Reflection 네임스페이스에 포함되어 있습니다.리플렉션의 주요 기능리플렉션을 활용하면 다음과 같은 작업이 가능합니다.런타임에 속성(Attribute) 정보를 조회할 수 있습니다.어셈블

  11. C#에서 문자열을 제목 대소문자(Title Case)로 변환하는 방법

    제목 대소문자(Title Case)란 제목이나 헤딩처럼 주요 단어의 첫 글자를 대문자로 표기하는 텍스트 형식을 말합니다. 영어권에서 출판물이나 예술 작품의 제목을 표기할 때 사용되는 대소문자 스타일로, 헤드라인 케이스(Headline Case)라고도 부릅니다.제목 대소문자 규칙에 따르면 기본적으로 모든 단어를 대문자로 시작하지만, 전치사·접속사 등 사소한(minor) 단어는 제목의 첫 번째 또는 마지막 단어가 아닌 한 소문자로 유지하는 것이 일반적입니다.C#에서는 CultureInfo 클래스의 TextInfo 속성이 제공하는 ToT

  12. C# 문자열 포맷으로 소수점 둘째 자리까지 또는 정수 형태로 숫자 표시하는 방법

    C#에서는 String.Format 메서드를 사용하여 지정된 형식에 따라 객체의 값을 문자열로 변환하고, 그 결과를 다른 문자열 안에 삽입할 수 있습니다.네임스페이스: System어셈블리: System.Runtime.dll복합 서식 지정(Composite Formatting)이란?Format 메서드의 모든 오버로드는 복합 서식 지정 기능을 기반으로 동작합니다. 복합 형식 문자열 안에는 인덱스가 0부터 시작하는 자리 표시자(형식 항목, format item)를 넣을 수 있으며, 실행 시점에 각 형식 항목은 매개변수 목록에서 해당하는

  13. C# readonly 키워드 완벽 정리: 필드를 읽기 전용으로 선언하는 이점과 사용법

    C#에서 readonly 키워드는 멤버 변수(필드)를 상수처럼 취급하면서도, 그 값을 런타임에 계산하거나 할당할 수 있도록 허용하는 한정자입니다. 이는 컴파일 시점에 값을 반드시 확정해야 하는 const 한정자와 가장 큰 차이를 보입니다.readonly를 사용하면 필드의 값을 선언부에서 직접 초기화하거나, 해당 필드가 속한 클래스의 생성자 안에서 할당할 수 있습니다. 덕분에 설정 파일, 환경 변수, 데이터베이스 조회 결과처럼 실행 시점에만 알 수 있는 값도 불변(immutable) 필드로 안전하게 관리할 수 있습니다.readonly

  14. C#에서 대소문자를 구분하지 않고 문자열을 치환하는 방법 – string.Replace의 대안

    C#의 Replace() 메서드는 문자열 클래스에 속한 메서드로, 현재 문자열 객체에서 지정된 유니코드 문자 또는 지정된 문자열을 모두 찾아 새 값으로 교체한 뒤, 수정된 새 문자열을 반환합니다. 인자에 따라 여러 형태로 오버로드되어 사용할 수 있습니다.다만 Replace() 메서드는 기본적으로 대소문자를 엄격하게 구분한다는 한계가 있습니다. 대소문자 구분 없이 치환하고 싶다면 정규식(Regex)을 활용하는 것이 가장 일반적인 해결책입니다.정규식(Regex)이란?정규식은 텍스트를 처리하는 강력하고 유연하며 효율적인 방법을 제공합니다

  15. C#에서 문자열을 Nullable int로 안전하게 변환하는 방법

    C#은 일반적인 값 범위뿐만 아니라 null 값도 할당할 수 있는 특수한 데이터 타입인 nullable 타입(널 가능 형식)을 제공합니다.nullable 타입은 C# 2.0에서 도입되었으며, 값 형식(value type) 변수에 null을 할당할 수 있도록 지원합니다. 선언 방법은 Nullable<T> 형태이며, 여기서 T는 기본 타입을 의미합니다. 축약 표현으로는 타입 뒤에 물음표(?)를 붙여 int?처럼 사용할 수 있습니다.Nullable 타입의 주요 특징nullable 타입은 값 형식(int, double, bool

  16. C#에서 튜플 목록을 간편하게 초기화하는 방법

    튜플(Tuple)이란?튜플(Tuple)은 여러 개의 속성을 가진 객체를 담아야 할 때, 별도의 클래스나 타입을 새로 정의하지 않고도 데이터를 묶어 관리할 수 있게 해주는 편리한 데이터 구조입니다.Tuple<T> 클래스는 .NET Framework 4.0에서 처음 도입되었으며, 서로 다른 데이터 타입의 요소들을 하나의 시퀀스로 묶어 저장할 수 있습니다.Tuple<int, string, string> person = new Tuple<int, string, string>(1, Test, Test1);단,

  17. C#에서 초를 시간(시:분:초:밀리초) 형식으로 변환하는 가장 좋은 방법

    C#에서 초 단위의 값을 사람이 읽기 쉬운 시간 형식(시:분:초:밀리초)으로 변환하려면 TimeSpan 구조체를 활용하는 것이 가장 깔끔하고 효율적인 방법입니다. 먼저 관련 핵심 타입인 DateTime과 TimeSpan에 대해 살펴보겠습니다.DateTime이란?DateTime은 int나 double처럼 값 형식(Value Type)에 해당하는 구조체입니다. System 네임스페이스에 속해 있으며 mscorlib.dll 어셈블리에 포함되어 있습니다. 또한 IComparable, IFormattable, IConvertible, ISe

  18. C# .NET Core 설치 여부 확인하는 방법 총정리

    .NET Core가 개발 환경에 제대로 설치되어 있는지 확인하고 싶다면, dotnet 명령어와 함께 사용할 수 있는 다양한 옵션을 활용하면 됩니다. 예를 들어 dotnet --info처럼 명령어를 입력하면 현재 환경에 대한 정보를 출력해 주며, 만약 .NET Core가 설치되어 있지 않다면 오류가 발생합니다.1. --info : 상세 환경 정보 확인--info 옵션은 .NET Core 설치에 대한 상세 정보와 머신 환경 정보를 출력합니다. 현재 사용 중인 운영체제(OS) 종류, .NET Core 버전의 커밋 SHA 등 유용한 세부

  19. C# Parallel.ForEach 병렬 처리 제한하기 - MaxDegreeOfParallelism 활용법

    개요C#에서 대량의 데이터를 처리할 때 Parallel.ForEach를 사용하면 여러 스레드가 동시에 작업을 수행하여 처리 속도를 크게 향상시킬 수 있습니다. 하지만 기본 설정으로 실행하면 시스템이 사용 가능한 모든 코어를 활용해 스레드를 생성하기 때문에, 경우에 따라 CPU 자원을 과도하게 점유하거나 다른 프로세스에 영향을 줄 수 있습니다. 이 글에서는 일반 foreach 루프와 Parallel.ForEach의 차이점을 살펴보고, MaxDegreeOfParallelism 옵션을 통해 병렬 처리 수준(병렬성)을 제한하는 방법을 알아

  20. C#에서 이미지를 압축해 저장하는 방법 – Bitmap과 GDI+ 활용 가이드

    C# 이미지 처리의 기본: Bitmap과 GDI+ 비트맵(Bitmap)은 그래픽 이미지를 구성하는 픽셀 데이터와 그 속성 정보를 함께 담고 있는 객체입니다. 비트맵을 파일로 저장할 때는 여러 표준 형식을 사용할 수 있으며, .NET의 GDI+는 BMP, GIF, EXIF, JPG(JPEG), PNG, TIFF 형식을 기본적으로 지원합니다. Bitmap 클래스가 제공하는 다양한 생성자를 활용하면 파일, 스트림 등 여러 소스로부터 이미지 객체를 만들 수 있고, Save 메서드를 통해 이미지를 스트림이나 파일 시스템에 손쉽게 저장할 수

Total 2668 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:129/134  20-컴퓨터/Page Goto:1 123 124 125 126 127 128 129 130 131 132 133 134