c# 11
[C#] 인터페이스(Interface)
인터페이스(Interface) 인터페이스는 약속입니다. 차는 우측 방향으로 통행해야 하고, 초록불일때 통행을 해야하는 것 처럼 인터페이스는 클래스가 따라야 하는 약속을 정의합니다. 즉 인터페이스는 인터페이스로부터 파생된 클래스가 어떤 메소드를 구현할지를 정의합니다. 인터페이스에서 정의한 메소드는 파생된 클래스에서 반드시 구현해야 합니다. 인터페이스는 다음과 같은 특징을 가지고 있습니다. 인스턴스를 만들 수 없음 접근 제한자(Access Modifier)를 사용할 수 없고 모두 public으로 선언됨 메소드(Method), 이벤트(Event), 인덱서(Indexer), 프로퍼티(Property)만을 가짐 파생 클래스는 인터페이스에 선언되어 있는 모든 메소드(Method), 프로퍼티(Property)를 구현..
[C#] DLL 파일 생성
DLL은 동적 링크 라이브러리(Dynamic Link Library)의 약자로 표준화된 함수나 데이터를 모아놓은 것을 의미합니다. DLL 파일을 만들기 위한 방법은 다음과 같습니다. DLL 파일 생성 1. Visual Studio에서 클래스 라이브러리(.NET Framework)로 프로젝트를 생성합니다. 2. 프로젝트를 생성한 후 라이브러리로 만들고자 하는 코드를 작성합니다. 3. 코드 작성 후 빌드 -> 솔루션 빌드(Ctrl + Shift + B)를 클릭합니다. 4. 솔루션 빌드 후 프로젝트 폴더의 bin\Debug로 이동하면 DLL 파일이 생성된 것을 확인할 수 있습니다. DLL 파일 참조 만들어진 DLL 파일을 사용하기 위해서는 DLL 파일을 참조해야 합니다. 새로운 프로젝트를 하나 만들겠습니다. ..
[C#] 엑셀 파일로부터 데이터 불러오기
C#에서 엑셀 파일을 불러오기 위해서는 Microsoft Excecl Object Library를 참조로 추가해야 합니다. Microsoft Excecl Object Library 참조 추가 방법은 [C#] 데이터를 엑셀 파일로 저장하기 를 참조하시면 됩니다. 엑셀 파일로부터 불러오기 위한 샘플 데이터로 다음과 같은 데이터를 사용하겠습니다. 엑셀 파일을 불러오는 코드는 다음과 같습니다. using System; using System.IO; using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel; namespace ImportExcel { class Program { static Excel.Application ..
[C#] 접근 한정자(Access Modifier)
접근 한정자(Access Modifier) 접근 한정자는 클래스, 구조체, 필드, 메소드 델리게이트 등에 대해서 노출 수준을 설정하는 것입니다. 일반적으로 외부로부터 노출할 필요가 없는 경우에는 private 접근 한정자를, 외부로부터 노출할 필요가 있는 경우에는 public 접근 한정자를 사용합니다. 클래스 내부에서 접근 한정자를 설정하지 않은 필드, 메소드 등은 private 접근 한정자로 설정됩니다. 객체 지향 프로그래밍의 특성 중 캡슐화(Encapsulation)라는 특성 때문에 접근 한정자를 설정하는 것은 매우 중요합니다. 필요한 부분만 공개하고 불필요한 부분은 숨김으로써 소프트웨어 간의 결합도를 낮추고 응집도를 높일 수 있습니다. 결합도를 낮추고 응집도를 높이는 소프트웨어 설계를 하려면 변경되..
[C#] 객체 얕은 복사(Shallow Copy) 깊은 복사(Deep Copy)
얕은 복사(Shallow Copy) 얕은 복사는 객체의 참조만 복사하는 것입니다. 객체를 얕은 복사 하게 되면 스택에 있는 참조를 복사하게 됩니다. 즉 복사할 객체(source)의 참조값을 복사될 객체(target)에 대입하게 됩니다. 다음은 얕은 복사의 예제 코드입니다. public class Employee { public int No; public string Name; } public class Program { static void Main(string[] args) { Employee source = new Employee(); source.No = 1; source.Name = "Sana"; Employee target = source; target.No = 2; target.Name = "..
[C#] 정적(Static) 클래스(Class), 메소드(Method), 필드(Field)
정적 클래스(Static Class) 정적 클래스는 new 키워드를 사용해서 인스턴스를 만들 수 없습니다. 정적 클래스는 class 키워드 앞에 static 키워드를 선언해서 만듭니다. 정적 클래스의 모든 멤버는 static으로 선언되어야 합니다. 정적 클래스는 생성자를 포함할 수 없습니다. 정적 클래스는 객체들이 처음 호출될 때 생성되고 프로그램이 종료될 때 해제되기 때문에 정적 클래스는 어디서든 접근할 수 있습니다. 전역적으로 접근해야 하는 유틸리티 클래스를 만들 때 정적 클래스로 만들면 유용하게 사용할 수 있습니다. 다음은 정적 클래스의 예제 코드입니다. 정적 메소드(Static Method) 정적 메소드는 인스턴스를 직접 생성하지 않고 호출할 수 있습니다. 정적 메소드는 static 키워드를 선언..
[C#] 클래스(Class)
클래스(Class) 클래스를 이해하기 이전에 먼저 객체 지향 프로그래밍(Object Oriented Programming)을 이해하는것이 필요합니다. 객체 지향 프로그래밍은 모든 것을 객체로 표현합니다. 사람, 사물, 동물 등은 모두 객체로 표현할 수 있습니다. 객체는 속성과 기능(또는 행위)을 가지고 있습니다. 사람을 예로 들면 이름, 나이, 성별을 속성으로 가질 수 있고, 잠자기, 밥먹기, 걷기 등을 기능으로 가질 수 있습니다. 이것을 코드로 표현하면 객체의 속성은 변수, 기능은 메소드로 표현할 수 있습니다. 앞에서 설명한 객체를 만들기 위해서는 클래스가 필요합니다. 클래스는 객체를 만들기 위한 틀이고 클래스를 통해 만들어진 것이 객체 입니다. 클래스를 통해 만들어진 객체는 인스턴스(Instance,..
[C#] CLR(Common Language Runtime)
CLR(Common Language Runtime) CLR은 C# 프로그램이 실행되는 환경이고 .NET 프레임워크의 실행을 관리합니다. 자바를 아시는 분들은 CLR은 자바 가상 머신(Java Virtual Machine)과 비슷하다고 생각하시면 됩니다. C#으로 만든 실행파일은 네이티브 코드로 되어있지 않고 IL(Intermediate Language, 중간언어)로 되어있기 때문에 운영체제가 이해할 수 없습니다. C# 컴파일러는 C#으로 작성한 코드를 IL로 만들고 CLR은 프로그램 실행 시 IL을 운영체제가 이해할 수 있는 네이티브 코드로 바꿔줍니다. IL을 네이티브 코드로 바꾸는 것을 JIT(Just In Time, 적시 컴파일)이라고 하는데 필요한 코드를 실행할 때마다 실시간으로 컴파일해서 실행한다..
[C#] 데이터를 엑셀 파일로 저장하기
C#에서 엑셀 파일로 저장하기 위해서는 Microsoft Excecl Object Library를 참조로 추가해야 합니다. 솔루션탐색기에서 프로젝트 -> 참조 우클릭 - 참조 추가를 클릭 한 후 Microsoft Excel Object Library를 체크한 후 확인을 클릭합니다. 엑셀 파일에 저장하는 코드는 다음과 같습니다. ReleaseObject(object obj) : 엑셀 객체를 사용하고 난 후 반드시 엑셀 객체를 해제(Release)해 주어야 합니다. 셀에 데이터를 저장하기 위해서는 workSheet.Cells[row, column]를 사용하는데 row, column의 인덱스는 0이 아닌 1부터 시작해야 합니다. 소스 코드를 실행하게 되면 지정된 경로에 엑셀 파일이 저장되고 다음과 같은 결과를..
[Unity3D] 유니티에서 외부 파일 실행하기
using System.Diagnostics; 을 선언한 후 Process.Start("실행할 파일 경로"); 를 사용하면 외부 파일이 실행됩니다. 1 2 3 4 string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); Process.Start(path + "/Manual.pptx"); Colored by Color Scripter cs Environment.GetFolderPath(Environment.SpecialFolder.Desktop) : 사용자 바탕화면 경로 반환