본문 바로가기

Programming Language/C#

(15)
[ C# ] Model 구현, GraphQL Api 연동 예제 Data (Class 생성) // AnomalyGridData.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Rl_AMS_UI.Model.Grid { public class AnomalyGridData { // GridHeader public string 생산번호 { get; set; } = string.Empty; public string 이상감지구분 { get; set; } = string.Empty; public string 이상감지시작일시 { get; set; } = string.Empty; public string..
[C#] 전처리기 전처리기 지시어는 실제 컴파일이 시작되기 전에 컴파일러에게 특별한 명령을 미리 처리하도록 지시하는 것이다. 전처리기 지시어는 해당 파일 안에서만 효력을 발생한다. C#의 전처리기 지시문은 # 기호로 시작하며, 주로 #define, #if, #else, #endif 등의 지시문이 있다. [ 전처리기 지시문 예제] 1. #define 및 #undef: #define은 상수 심볼을 정의할 때 사용됩니다. 정의된 심볼은 #if 지시문에서 사용될 수 있다. #undef는 정의된 상수 심볼을 해제할 때 사용된다. #define DEBUG // ... #undef DEBUG 2. #if, #else, #elif, #endif: 조건부 컴파일을 지원하는 지시문이다. 주로 DEBUG 등의 조건부 컴파일 시 사용된다. #..
[C#] Event 이벤트를 정의하려면 먼저 대리자(Delegate)를 선언해야 한다. 클래스 내부에서 이벤트를 정의하고, 해당 이벤트에 대응하는 대리자를 선언한다. 외부에서는 이벤트에 대한 핸들러 메서드를 등록하거나 제거할 수 있다. InVoke : InVoke 메서드를 호출하여 해당 대리자가 참조하는 메서드를 실행할 수 있다. Invoke 를 통해 이벤트를 호출하면 해당 이벤트에 등록된 모든 이벤트 헨들러가 순차적으로 실행 된다. using System; // 이벤트를 처리할 대리자 선언 public delegate void EventHandler(string message); // 이벤트를 정의하는 클래스 public class Publisher { // 이벤트 정의 (대리자와 연결) public event Event..
[C#] Delegate(대리자) 메서드를 대신 호출해준다고 해서 대리자 라고도 부르며 인스턴스가 아닌 형식(Type) 이다. 따라서 사용할때 인스턴스를 생성해서 사용해야 한다. Delegate 를 사용하면 한번의 이벤트에 여러 메서드를 동시에 호출 할 수 있고, 메서드를 다른 메서드에 변수처럼 전달 가능하다. 이벤트 처리, 비동기 프로세스 처리 등을 보다 간편하게 하기 위해 사용된다. ✨ 정의하는 방법은 delegate 키워드를 사용하고, 대리자가 참조할 메서드를 생성한 후 new 키워드로 delegate 객체를 생성한다. (참조할 메서드의 형태는 대리자와 동일 해야 한다.) // Mydelegate 라는 대리자 선언 public delegate void MyDelegate(string msg); public staitc void Me..
[C#] 메서드 파라미터 ( ref, out ) 메서드에 파라미터를 전달할때 사용되는 키워드로, 메서드 호출 시에 인수를 전달하는 방식을 나타낸다. 1. ref : 변수를 전달하고, 해당 변수를 읽고 쓸 수 잇는 양방향 전달이 가능하다. 메서드 내에서 전달된 변수를 수정하면 호출자에게 반영된다. ref 가 사용되는 인수는 반드시 초기화된 변수를 전달해야 한다. class Program { static void ModifyValue(ref int x) { x = x * 2; } static void Main() { int number = 5; ModifyValue(ref number); Console.WriteLine(number); // 출력: 10 } } 2. out : 메서드에서 여러 값을 반환하는 용도로 사용된다. out 이 사용되는 인수는 초기..
[C#] Nullable 타입 ( ?, ?? ) T 는 기본 값 형식( int,double 등 ) 을 나타낸다 Int? 는 Nullable 와 동일하다. 레퍼런스 타입은(class) Nullable 을 쓸 필요가 없는데, 그것은 모든 레퍼런스 타입은 이미 Null 을 허용하기 때문이다. Null 상태를 체크할 수 있는 기능 HasValue 을 가지고 있다. Nullable 상태체크 예제 namespace Nullable { internal class Program { static void Main(string[] args) { // 일반적인 값 형식 변수 // int regularInt = 10; // Nullable 값 형식 변수 int? nullableInt = null; // 값 형식에 null 을 할당할 수 없음 //int invalidInt ..
[C#] 네임스페이스 네임스페이스는 클래스 코드를 조직화하고 이름 충돌을 방지하기 위해 사용되는 개념이다. 네임 스페이스는 클래스, 인터페이스, 델리게이트, 열거형 등의 유형을 포함할 수 있다. 네임스페이스 > Class 1. 클래스 명 앞에 네임스페이스 전부를 적는 경우 static void Main(string[] args) { System.Console.WriteLine(); } 2. 프로그램 맨 윗단에 **using** 을 사용하여 파일에서 사용하고자 하는 네임스페이스를 한번 설정해 주고, 이후 해당 파일 내에서 네임스페이스 없이 직접 클래스를 사용하는 경우 using System; //System 네임스페이스 지정 static void Main(string[] args) { Console.WriteLine(); }
[C#] 예외처리(Exception) [ try, catch, finally ] 예외(Exception) 은 프로그램 실행 중에 발생하는 예상치 못한 문제를 나타낸다. 예외 처리는 try, catch, finally 블록을 사용하여 구현된다. 여러 catch 를 사용하는 이유는 각 Exception 유형에 따라 서로 다른 에러 핸들링을 하기 위함이다. 예시코드 1. [ 숫자를 나누는 프로그램에서 예외를 처리하는 방법 ] using System; class Program { static void Main() { try { DivideNumbers(10, 0); } catch (DivideByZeroException ex) { Console.WriteLine($"예외 발생: {ex.Message}"); } finally { Console.WriteLine("Finally 블록 - 항상 ..