목록프로그래밍/C# (5)
cyphen156
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/4q9qA/btsBb7J3wve/hMppfl9zYikDCaaMnbPCu1/img.jpg)
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..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b6tCJC/btsA9O36Aah/WVBknrDzb7b0M0vjCJt4R0/img.jpg)
이 글에서는 .NET 8과 Winforms를 사용하여 계산기와 로그인창, 숫자 맞추는 게임을 만든다. 1. 기본 개념익히기 맨처음 WindowsForms 앱 템플릿으로 프로젝트를 생성하면 다음과 같은 화면 구성을 만들 수 있다. 완벽하게 일치하는 것은 아니지만 어느정도 안드로이드 앱 만들때의 경험을 되살려서 여기에 써먹을 수 있을것 같다. Form1.cs[디자인]에서는 안드로이드 XML파일과 같이 화면 구성을 담당하는 파일이다. 도구상자에서 UI구성에 필요한 요소들을 디자인 창에 드래그 & 드롭으로 추가할 수 있다. Form1.cs파일은 디자인 파일과 연동되어 실제 화면 로직에서 여러 이벤트들이 발생했을 때 처리되는 로직들을 담당할 클래스파일이다. 추가된 요소들을 속성 창을 통해 제어하거나 직접 코드 수..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/lj0SR/btsA31bTLln/mJv7k6jPVWzLccE3Zbqry1/img.jpg)
C++의 namespace와 C#의 네임스페이스 설명에 대해서 거의 비슷하게 되어 있어서 둘이 같은 역할을 하는 것 인줄 알았는데 아니었다. C++에서의 namespace는 cpp파일 또는 헤더 파일 내에서 정의된 여러 변수들, 메서드 등의 중복만을 방지하기 위한 정의였다면, C#에서의 namespace는 이 기능을 넘어선 패키징의 개념이 포함되어있었다. 그렇기 때문에 C/C++에서의 #include, 자바나 자바스크립트에서 제공하는 import라는 작업 대신 using 'namespace'를 통해 사용할 클래스 파일을 '불러오고', 변수나 메서드의 중복 또한 방지해준다. 조금 더 나아가자면 import문에서는 파일 경로를 찾아 해당 파일을 참조할 수 있는 기능이라면, using은 같은 폴더 내부의 cs..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/YAaUx/btsA8pI6uc1/vvLE1wIJvI4bK4aCILn46k/img.jpg)
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..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/vf5iJ/btsA6Uh4Yqp/csbuOHGrCzYKbed8ziQSJ0/img.jpg)
이번에 .Net에 대해 배우기 전에 C#에 대해 정리하고 넘어갈 예정이다. 사실 나는 GC(Garbage Collector), VM(Vitual Machine) 환경을 별로 좋아하지 않는다. 오히려 싫어하는 편이다. 하지만 프로젝트 진행을 위해서 배워볼 예정이다. C#은 MicroSoft에서 C/C++를 자바와 유사한 형태로 개발한 언어이다. 유니티때 스크립팅을 통해 잠깐 해봤던 기억을 떠올리면 플랫폼에 종속되지 않는, 가상 머신위에서 돌아가는 객체지향 컴파일 언어라고 기억된다. 하지만 실제로 사용해보면 컴파일 언어와 인터프리터 언어 둘 사이의 어딘가에 있는 것과 같은 느낌을 받은 언어라고 생각한다. 이런 C#의 핵심적인 특징이라면 단언코 .Net이라는 프레임 워크라고 할 수 있다. MS는 .Net을 통..