본문 바로가기

전체보기

(243)
C# 구조체, ref, out C# 구조체 (Struct) 클래스처럼 사용자 정의 형식을 두는 법.특징1. new로 생성해도되고 안해도 된다.2. 기본 생성자는 명시적으로 정의할 수 없다.3. 매개변수를 갖는 생성자를 정의해도 디폴트생성자가 생성된다. (클래스는 생성x)4. 매개변수를 받는 생성자의 경우 반드시 해당 코드내에서 구조체 모든 필드값을 할당해야한다.123456789101112131415161718192021222324252627struct Vector{ public int X; public int Y; public Vector(int x, int y) { // 모든 필드 초기화 필수 this.X = x; this.Y = y; } public override string ToString() { return "X: " + X..
C# 인터페이스 인터페이스 구현 없이 메서드 선언만 포함된 클래스 문법과 유사하다.추상메서드만 0개 이상 담고 있는 추상 클래스로 봐도 무방.1234567891011abstract class DrawingObject{ public abstract void Draw(); public abstract void Move(int offset);}interface IDrawingObject{ void Draw(); void Move();} Colored by Color Scripter 추상클래스를 쓰면되지 왜 인터페이스를 만들었을까?- 클래스는 다중 상속이 불가능 하기 때문.1234class Notebook : Computer, IMonitor, IKeyboard{ void IMonitor.TurnOn(){}; // 추상메서드와..
C# delegate (콜백, 체인, 범용성) C# 델리게이트(delegate) : C#에서 메서드를 가리킬 수 있는 타입(C++의 함수 포인터, 함수형프로그래밍에서 일급 함수와 유사하다.)delegate로 선언한 타입이 메서드를 가리키기 때문에그 메서드를 직접 호출하는 것 대신에 delegate로 그 메서드를 호출할 수 있다.- 메서드를 직접호출하면되지 왜 굳이 delegate를 사용해서 호출할까? 는 잠시 후에..1. delegate 만들기 delegate가 어떤 메서드를 가리키기 때문에 그 메서드와 동일한 매개변수와 리턴타입으로 선언해야한다.1234567선언 구문=> 접근제한자 delegate 대상_메서드의_반환타입 타입명(대상_메서드의_매개변수들..);(예시에선 접근제한자 생략) delegate void Type1(void); // void ..
C# 다형성 (override, overload, implicit, explicit) C# 다형성 메서드 오버라이드- 자식클래스에서 부모클래스로부터 상속받은 부모의 메서드를 재정의하여 사용하는 것1. 부모클래스에서는 오버라이드를 가능하게 하기 위해 'virtual' 이라는 예약어를 메서드 앞에 붙인다.2. 자식클래스에서는 재정의하여 사용하고 싶으면 'override' 라는 예약어를 메서드 앞에 붙인다.123456789101112131415161718192021222324252627282930313233343536373839using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace ConsoleApp2{ class Mammal { v..
C# 캡슐화, 상속(접근제한자, 프로퍼티, as, is, Object, this, base) 캡슐화 (Encapsulation) 객체안의 변수나 함수에 아무나 함부로 접근해서 변경하면 프로그램에 지장을 주는 경우가 많아지므로 그렇게 하지 못하게 하기 위해 내부 멤버를 숨겨야 함. 이렇게 하는 것이 캡슐화.접근제한자private : 클래스 내부에서만 접근 가능protected : 내부에서 접근 및 파생 클래스에서만 접근 가능public : 내부, 파생클래스, 외부에서도 접근 가능internal : 동일 어셈블리 내에서는 public에 준한 접근 가능, 다른 어셈블리에서는 접근 불가internal protected : 동일 어셈블리 내에서 정의된 파생클래스까지만 접근 가능* 어셈블리는 아직 모르니 패스. (보통 private, public 으로 대부분 구현)12345678910111213141516..
C# 클래스 (static, 생성자, namespace, Main) C# 클래스 현실 세계를 모델링하여 사물을 속성과 행위로 나눠 코드로 표현123456789class Book{ string title; decimal ISBN13; string Content; string Author; int pageCount;} Book gulliver = new Book(); 단순히 속성만 있는 클래스를 정의하고 생성하는 코드.객체 지향 프로그래밍에서는 저런 객체들 간의 행위를 통해 코드를 작성함.1234567891011121314class Book{ public string Title; public decimal ISBN13; public string Contents; public string Author; public int PageCount; public void Open(){..
C# 기초 (변수, 예약어, 연산자, 반복문, 조건문등) C# 문법 기초 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341. 기본 자료형 (Primitive data type)int , long, short, byte, float, double, char, bool 등기존 java와 크게 ..
C# .NET framework 개발 환경 준비 C# C# 개발 환경 설정하기.1. .NET Framework 설치2. 비주얼스튜디오 설치[1]닷넷 프레임워크는 마이크로 소프트 다운로드 센터에서 설치 [4.6 버전]https://msdn.microsoft.com/ko-kr/library/5a4x27ek(v=vs.110).aspx(윈도우 10 운영체제를 사용할 경우, 4.6버전이 자동으로 설치 되어있다.)[2]비주얼 스튜디오도 마이크로 소프트 다운로드 센터에서 설치 [Community 2015버전 이상]https://www.visualstudio.com/ko/downloads/?rr=https%3A%2F%2Fmsdn.microsoft.com%2Fko-kr%2Flibrary%2F5a4x27ek(v%3Dvs.110).aspx(C# 6.0 문법을 사용할 경우..