본문 바로가기
반응형

유니티 공부/C# 문법51

C# 문법 - 확장 메서드(Extension Method) class MyInt { public static bool IsEven(int a) { return a % 2 == 0; } } class Program { public static void Main() { int a = 124; bool b = Program2.IsEven(a); } } 만약 IsEvent메서드가 int구조체에 소속된 메서드라면 아래와 같이 더 직관적으로 사용할 수 있을 것이다. class Program { public static void Main() { int a = 124; bool b = a.IsEven(); } } int구조체가 어떻게 어떻게 정의되어있는지 한 번 확인해보자 이 구조체에 IsEven메서드를 추가하고 싶다. 새로운 메서드를 추가하는 가장 쉬운 방법은 구조체안에 그.. 2024. 1. 19.
C# - await와 async Sum을 구하는 코드로 예시 namespace WinFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Run(); } private void Run() { } private int Calc(int n) { int result = 0; for (int i = 1; i Calc(10)); int sum = await task1; // 상태를 저정한다음 다른 UI처리 label1.Text = sum.ToString(); } Task처리 뿐만 아니라 다른 UIThread를 block하지 않기 때문에 다.. 2024. 1. 19.
C# - Thread vs Task 클래스 + EAP/APM/TAP Thread(스레드)CPU가상화이다. 그러므로 CPU가 없는데 많은 척하는 것이다.Multithreading(멀티스레드)하나의 프레스가 여러 개의 스레드를 동시에 실행하여 다중 작업을 수행하는 것을 의미한다. 이는 CPU의 가상화를 통해 마치 여러개의 CPU가 동시에 작업하는 것처럼 보이게 한다.스레드는 정말 가벼운 자원인가?스레드는(프로세스 보다 가볍지만)매우 무거운 리소스이다. 스레드를 하나 만드는데 필요한 공간비용과 시간비용DLL(Dynamic Link Libraries)는 외부에서 호출되는 함수,데이터,리소스등을 가진 코드 및 데이터 라이브러리이다. 여러 스레드가 DLL을 사용하는 경우 동시 접근에 대한 적절한 동기화 매커니즘이 필요하므로 이로 인해 리소스 소비가 증가한다. 컴퓨터에서 가장 적합한.. 2024. 1. 19.
C# 문법 - 인스턴스 생성을 위한 new 키워드 new 키워드로 인스턴스를 생성하면 해당 인스턴스는 힙메모리에 할당되며 생성된 인스턴스에 대한 참조를 반환한다. 이렇게 생성된 인스턴스는 명시적으로 메모리에 제거되지 않는 한 사용가능하다. 사용 예시 01 객체 인스턴스 생성 클래스 또는 구조체등의 타입으로부터 객체의 인스턴스를 생성한다. class Piggy { public string name {get;set} } Piggy pig = new Piggy(); 02 배열 인스턴스 생성 int[] weights = new int[3]; 03 제네릭 타입 인스턴스 생성 List weights = new List(); 04 새로운 문자열 생성 문자열은 변경할 수 없는(immutable)이기 때문에 복사본을 새로 만들어 수정하는 경우에 사용된다. char ch.. 2023. 12. 14.
C# - 파라미터 전달방식(ref, out, in 키워드), Pass by Value(값에 의한 전달) 및 Pass by Reference(참조에 의한 전달) 1. Pass by Value(값에 의한 전달)파라미터 "값"을 복사해서 파라미터 값 자체를 복사해서 전달하는 방식이다. 만약 몰래 소주를 마셔서 이를 물로 채워넣는다는 예시로 코드를 작성해보자class change{ public void changeToWater(int leftsoju) { int water = 100; leftsoju = water; }}public static void Main(){ int leftvalue = 0; // 소주를 다 마신 상태 chang Change = new chang(); Change.changeToWater(leftvalue) // 마신 소주에 물 넣기 Console.WriteLine(leftsoj.. 2023. 12. 14.
C# - INotifyPropertyChanged 인터페이스 INotifyPropertyChanged 인터페이스 객체가 속성의 변경을 클라이언트에게 알리고, UI가 동적으로 업데이트되도록 할 수 있다. public interface INotifyPropertyChanged PropertyChangedEventArgs 클래스 INotifyPropertyChanged 인터페이스에서 속성이 변경될 때 알리기 위해 사용되는 이벤트의 인자로 전달되는 클래스이다. 주로 PropertyChanged이벤트에 사용되며 어떤 속성이 변경되었는지를 나타내는 데에 활용된다. PropertyChanged 이벤트 public event PropertyChangedEventHandler PropertyChanged; PropertyChanged이벤트는 데이터 모델의 속성이 변경될 때마다 발.. 2023. 11. 19.
반응형