728x90

C# 81

UnknownFieldSet

UnknownFieldSetGoogle Protocol Buffers(프로토콜 버퍼) 라이브러리의 기능 중 하나로, 메시지 형식의 필드 정의에 포함되지 않은 필드를 처리하기 위한 구조체 또는 클래스이다. 프로토콜 버퍼 메시지를 직렬화하고 역직렬화할 때, 정의되지 않은 필드 또는 알 수 없는 필드가 있을 수 있다. 이러한 필드는 UnknownFieldSet을 통해 관리된다.주요 기능미지의 필드 저장UnknownFieldSet는 메시지를 역직렬화하는 동안 메시지 형식에 정의되지 않은 필드를 저장한다. 이는 메시지 구조가 변경된 후에도 역방향 호환성을 유지할 수 있도록 도와준다. 예를 들어, 메시지 형식이 업데이트되어 새로운 필드가 추가되었지만, 이전 버전의 시스템에서도 해당 메시지를 수신하고 처리할 수 있다..

언어/C# 2024.08.12

GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE

GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODEGoogle Protocol Buffers(프로토콜 버퍼) 라이브러리와 관련된 환경 변수 또는 컴파일러 설정으로, 주로 .NET 환경에서 사용된다. 이 설정은 프로토콜 버퍼 코드가 .NET의 ref struct와의 호환성 모드를 활성화할지 여부를 결정한다.ref structref struct는 C# 7.2부터 도입된 구조체(struct)의 특별한 종류이다. 다음과 같은 특징을 갖는다.스택에 할당힙이 아닌 스택에 할당된다. 따라서 ref struct는 스택 프레임이 유효할 때만 유효한 객체를 나타낸다.ref 나 out으로만 전달ref struct는 참조로만 전달될 수 있으며, ref나 out 키워드를 사용하여 메서드 매개변수로 ..

언어/C# 2024.08.12

Sealed

Sealedsealed 클래스C#에서 클래스 또는 메서드에 적용할 수 있는 키워드로, 주로 상속과 관련된 기능을 제어하는 데 사용된다.sealed 키워드를 클래스에 적용하면 그 클래스를 상속할 수 없게 된다. 상속하려고 하면 컴파일러가 오류를 발생시킨다. 이는 특정 클래스가 더 이상 파생 클래스를 가질 필요가 없거나, 의도적으로 확장을 제한하고자 할 대 유용하다.sealed 메서드sealed 키워드는 메서드에도 사용할 수 있으며, 이 경우에는 override 키워드와 함께 사용된다. sealed 키워드를 사용해서 메서드를 재정의하면, 해당 메서드를 더 이상 하위 클래스에서 재정의할 수 없게 된다.사용 이유보안 및 무결성특정 클래스나 메서드가 더 이상 변경되지 않도록 하여 프로그램의 무결성을 보호할 수 있..

언어/C# 2024.08.12

24.08.09 C#,DEV

C#ProtobufgRPC는 IDL(Interface Design Language)로 Protobuf를 사용한다. Protobuf IDL은 gRPC 서비스에서 보내고 받는 메시지를 지정하기 위한 언어 중립적인 형식이다. Protobuf 메시지는 파일에 정의 .proto 된다.Protobuf 메시지메시지는 Protobuf의 기본 데이터 전송 개체이다. 개념상 .NET 클래스와 유사하다.syntax = "proto3";option csharp_namespace = "Contoso.Messages";message Person { int32 id = 1; string first_name = 2; string last_name = 3;}위의 메시지 정의는 세 필드를 이름-값 쌍으로 지정한다. .N..

partial

partial클래스를 정의할 때 사용하는 특수한 키워드로, 하나의 클래스를 여러 파일에 걸쳐서 정의할 수 있게 해준다. 이를 통해 코드를 모듈화하고, 클래스 정의를 논리적으로 구분하여 관리할 수 있다.partial 키워드는 클래스, 구조체, 인터페이스, 메서드에 사용할 수 있다.partial 클래스하나의 클래스 정의를 여러 파일로 분할할 수 있으며, 모든 부분 클래스는 컴파일 타임에 하나의 클래스 정의로 결합된다. 이는 특히 큰 클래스나 자동 생성된 코드를 사용하여 코드 생성과 사용자 정의 코드를 분리하고자 할 때 유용하다.사용 사례자동 생성된 코드와 사용자 코드의 분리예를 들어, Windows Forms 디자이너, WPF 디자이너, Entity Framework 등에서 자동 생성된 코드를 사용자 정의 ..

언어/C# 2024.08.09

Datatime 연산

Datatime 연산주로 사용되는 연산날짜 간 차이 계산DateTime 객체를 서로 빼면 TimeSpan 객체가 반환된다.DateTime date1 = new DateTime(2023, 1, 1);DateTime date2 = new DateTime(2023, 12, 31);TimeSpan difference = date2 - date1;Console.WriteLine($"Days between: {difference.Days}");날짜에 시간 더하기/빼기DateTime에 TimeSpan을 더하거나 뺄 수 있다.DateTime now = DateTime.Now;DateTime future = now.AddDays(7);DateTime past = now.AddHours(-3);날짜 비교DateTime 객..

언어/C# 2024.08.09

24.08.08 Dev, C#

24.08.08 Dev, C#DevCI/CD 파이프라인CI(Continuous Integration)CI/CD의 CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다.CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로, 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.CD(Continuous Delivery / Deployment)CI/CD의 CD는 지속적인 서비스 제공(Continuous Delivery) 및 지속적인 배포(Continuous Deployment)를 의미하며 이 두 용어는 상호 교환..

HasRows

HasRowsSystem.Data.SqlClient.SqlDataReader 클래스에서 제공하는 속성으로, 현재 데이터베이스 쿼리의 결과 집합에 행이 있는지 확인하는 데 사용된다.이 속성은 쿼리 결과가 하나 이상의 행을 포함하고 있을 때 true를 반환하고, 그렇지 않으면 false를 반환한다. 이를 통해 쿼리 결과를 처리하기 전에 결과가 있는지 빠르게 확인할 수 있다.사용 사례존재 여부 확인특정 조건을 만족하는 데이터가 존재하는지 확인할 때 유용하다.결과 처리 최적화쿼리 결과가 없는 경우 데이터 처리를 건너뛸 수 있어 성능 최적화에 도움이 된다.UI 피드백결과가 없는 경우 사용자에게 적절한 메시지를 제공할 수 있다.

언어/C# 2024.08.08

ExecuteNonQueryAsync

ExecuteNonQueryAsyncC#의 System.Data.SqlClient.SqlCommand 클래스에서 제공하는 비동기 메서드로, 데이터베이스에서 데이터 행을 수정하는 SQL문(INSERT, UPDATE, DELETE 등)을 비동기적으로 실행한다. 미 메서드는 결과 집합을 반환하지 않는 명령을 실행할 때 사용되며, 수행된 작업의 영향을 받은 행 수를 비동기적으로 반환한다.기본 사용법ExecuteNonQueryAsync를 사용하려면 메서드를 async로 선언하고, await 키워드를 사용하여 비동기 작업을 기다려야 한다.이 메서드는 특히 UI 애플리케이션에서 긴 작업을 수행하는 동안 UI를 차단하지 않기 위해 사용된다.장점응답성 유지UI 스레드를 차단하지 않기 때문에 UI 애플리케이션에서 사용자 ..

언어/C# 2024.08.08

ExecuteReaderAsync

ExecuteReaderAsyncC#의 System.Data.SqlClient.SqlCommand 클래스에서 제공하는 비동기 메서드로, SQL 쿼리를 비동기적으로 실행하고 결과를 SqlDataReader로 반환한다.이 메서드는 비동기 작업을 수행할 때 사용되며, 데이터베이스 쿼리 실행 중에 UI 스레드나 다른 중요한 작업을 차단하지 않기 때문에 비동기 프로그래밍 모델에서 매우 유용하다.기본 사용법ExecuteReaderAsync를 사용하려면 메서드가 async로 선언되어 있어야 하고, 반환값을 처리하기 위해 await 키워드를 사용해야 한다. 또한 System.Data.SqlClient 네임스페이스를 포함해야한다.장점응답성 유지특히 UI 애플리케이션에서는 UI 스레드가 긴 작업 동안 차단되는 것을 방지하..

언어/C# 2024.08.08
728x90