목록프로그래밍/C# (6)
cyphen156

C#에는 Enumerator라는 반복자가 있다.의미는 InterFace Enum Iterator를 의미한다.https://learn.microsoft.com/ko-kr/dotnet/api/system.collections.ienumerator?view=net-8.0 IEnumerator 인터페이스 (System.Collections)제네릭이 아닌 컬렉션에 대한 간단한 반복을 지원합니다.learn.microsoft.com왜 쓰는가 하면 foreach라는 구문을 통해 반복 작업을 하고 싶은데 제네릭이 아닌 타입에 대해서도 반복자 지원을 받기 위해 사용하는 인터페이스이다.public IEnumerator GetEnumerator() 함수를 통해 반복자 객체를 반환할 수 있게 하며 인터페이스를 통해 상속을 구현..

C#의 역사에 대한 모든 사항은 MS에서 제공하고 있습니다. C#의 역사 - C# 가이드 - C# | Microsoft Learn C#의 역사 - C# 가이드 - C# 이 언어의 초창기 버전은 어떤 모습이었으며 이후 어떻게 변했는가? learn.microsoft.com 이 글에서는 일부 기능과 핵심 변경사항에 대해서만 서술합니다. C# 1.0 Delegate: C#에서 delegate는 메서드에 대한 참조를 저장할 수 있는 타입입니다. 다른 언어의 함수 포인터와 유사하지만, 타입 안전성과 객체 지향적 특성을 갖는다. 사용법 (//뒤의 내용은 사용자 지정인수이다.) delegate //return_type //function_Name (//props); 예제 코드를 보면 publisher에는 TestMet..

이 글에서는 .NET 8과 Winforms를 사용하여 계산기와 로그인창, 숫자 맞추는 게임을 만든다. 1. 기본 개념익히기 맨처음 WindowsForms 앱 템플릿으로 프로젝트를 생성하면 다음과 같은 화면 구성을 만들 수 있다. 완벽하게 일치하는 것은 아니지만 어느정도 안드로이드 앱 만들때의 경험을 되살려서 여기에 써먹을 수 있을것 같다. Form1.cs[디자인]에서는 안드로이드 XML파일과 같이 화면 구성을 담당하는 파일이다. 도구상자에서 UI구성에 필요한 요소들을 디자인 창에 드래그 & 드롭으로 추가할 수 있다. Form1.cs파일은 디자인 파일과 연동되어 실제 화면 로직에서 여러 이벤트들이 발생했을 때 처리되는 로직들을 담당할 클래스파일이다. 추가된 요소들을 속성 창을 통해 제어하거나 직접 코드 수..

C++의 namespace와 C#의 네임스페이스 설명에 대해서 거의 비슷하게 되어 있어서 둘이 같은 역할을 하는 것 인줄 알았는데 아니었다. C++에서의 namespace는 cpp파일 또는 헤더 파일 내에서 정의된 여러 변수들, 메서드 등의 중복만을 방지하기 위한 정의였다면, C#에서의 namespace는 이 기능을 넘어선 패키징의 개념이 포함되어있었다. 그렇기 때문에 C/C++에서의 #include, 자바나 자바스크립트에서 제공하는 import라는 작업 대신 using 'namespace'를 통해 사용할 클래스 파일을 '불러오고', 변수나 메서드의 중복 또한 방지해준다. 조금 더 나아가자면 import문에서는 파일 경로를 찾아 해당 파일을 참조할 수 있는 기능이라면, using은 같은 폴더 내부의 cs..

C#또한 어쨋든 C/C++를 객체지향으로 체계한 것이기 때문에 자료형이나 문법적인 체계와 같이 큰 틀에서는 다른게 없다. C#이 C/C++와 가장 큰 차이점은 자바의 JVM에 해당하는 .NET이라는 가상환경 속에서 프로그램이 실행된다는 점, 이 가상환경에서는 메모리를 프로그래머 대신 관리해주는 GC(Garbage Collector)의 존재이다. 문법적인 차이(C++ -> C#) 클래스 인스턴스에서 포인터사용 제거(Object->data) -> new/delete를 통한 인스턴스 관리, 포인터 대신 참조 사용 요소만큼 반복하기 for(item : arr) -> for(int item in arr) Array 클래스 int arr[5] = {1, 2, 3, 4, 5}; // 배열의 길이 .Length arr..

이번에 .Net에 대해 배우기 전에 C#에 대해 정리하고 넘어갈 예정이다. 사실 나는 GC(Garbage Collector), VM(Vitual Machine) 환경을 별로 좋아하지 않는다. 오히려 싫어하는 편이다. 하지만 프로젝트 진행을 위해서 배워볼 예정이다. C#은 MicroSoft에서 C/C++를 자바와 유사한 형태로 개발한 언어이다. 유니티때 스크립팅을 통해 잠깐 해봤던 기억을 떠올리면 플랫폼에 종속되지 않는, 가상 머신위에서 돌아가는 객체지향 컴파일 언어라고 기억된다. 하지만 실제로 사용해보면 컴파일 언어와 인터프리터 언어 둘 사이의 어딘가에 있는 것과 같은 느낌을 받은 언어라고 생각한다. 이런 C#의 핵심적인 특징이라면 단언코 .Net이라는 프레임 워크라고 할 수 있다. MS는 .Net을 통..