목록Programming/C# (18)
외로운 Nova의 작업실
안녕하세요. 저번시간에 이어서 오늘은 c#의 에트리뷰트에대해서 배워보도록 하겠습니다. 혹시 코딩하면서 잘못된 메소드나 코드를 짯을때 뜨는 error메시지를 본적이 있으신가요? 아래와 같은 메시지 말이죠! 이러한 메시지를 저장하는 곳이 에트리뷰트 클래스입니다! 백문일 불여일견! 바로 어떻게 하는지 코드부터 보시죠. using System; namespace StudyCSharp { class MainApp { static void Main(string[] args) { Method OldMethod = new Method(); OldMethod.OldMethod(); } [Obsolete("OldMethod는 없어졌습니다. NewMethod를 사용하세요")] //애트리뷰트사용 class Method { p..
안녕하세요. 오늘은 c# 언어의 LINQ기능에 이어서 리플렉션에대해서 배워보도록 하겠습니다. 리플렉션은 객체의 형식 정보를 들여다보는 기능입니다. 객체의 형식정보에는 프로퍼티 목록, 메소드 목록, 필드, 이벤트 목록까지 객체의 모든게 있습니다. 이러한 리플렉션 기능을 위해서 c# 개발자는 객체의 모든 조상 Object에 GetType()메소드를 만들어 놨습니다. GetType()메소드는 Type형식의 객체를 반환합니다. Type객체는 그객체의 모든 정보가 들어가게됩니다. 코드를 먼저 보시죠. using System; using System.Reflection; namespace StudyCSharp { class MainApp { static void Main(string[] args) { int b =..
안녕하세요. 오늘은 저번시간에 이어서 c#의 LINQ에대해서 배워보도록 하겠습니다. LINQ는 Language INtegrated Query의 약자입니다. 한국어로 직역하면 언어 통합 질의입니다. 의역하면 데이터 질의 기능이라고 할수 있습니다. 데이터를 한곳에 모아놓고 원하는 데이터를 질의하듯이 골라 낼 수 있는 기능을 가집니다. 백문일 불여일견이라고 코드를 한번 봅시다. using System; using System.Linq; namespace StudyCSharp { class MainApp { static void Main(string[] args) { Profile[] profile_list = { new Profile() { name = "정우성", age = 13 }, new Profile(..
-안녕하세요. 오늘은 저번시간에이어 c# 언어에서 대리자와 이벤트에대해서 알아보겠습니다. 대리자는 쉽게말해서 비서같은역할을 합니다. 대리자에게 메소드들을 등록해놓으면 그 대리자는 메소드들을 실행시킵니다. 중요한점은 메소드'들' 이라는 점입니다. 대리자는 delegate 키워드로 선언이 됩니다. 먼저 코드부터 보시죠. using System; namespace StudyCSharp { delegate void ThereIsFire(string location); //대리자 선언 class MainApp { static void Main(string[] args) { void Call119(string location) { Console.WriteLine("소방서죠?" + location + "에 불이 났어..
안녕하세요. 오늘은 저번시간에 이어서 c# 예외처리에대해서 배워보도록 하겠습니다. 예외의 예시를 하나 들어보도록 하겠습니다. 먼저 코드부터 보시죠. using System; namespace StudyCSharp { class MainApp { static void Main(string[] args) { int[] array = new int[3]; array[3] = 4; Console.WriteLine("종료"); } } } 위와 같은 코드를 실행하게되면, 컴퓨터는 에러를 일으킵니다. 왜냐면 array배열의 크기는3인데, 즉 index가 2까지 밖에없는데 3에 접근하고있기 때문입니다. 또한 프로그램은 에러를 일으키고 다운되어버려 그 다음줄인 콘솔에 종료 출력을 안하게됩니다. 이렇게 프로그램이 에러를 ..
안녕하세요. 오늘은 저번시간에이어 c#의 일반화 프로그래밍과 예외처리를 배워보도록 하겠습니다. 일반화 프로그래밍은 객체들의 공통점을 찾아서 일반화 하는 프로그래밍을 말합니다. 예를들어 int[], string[], double[] 객체들의 공통점은 배열이라는 것입니다. 일반화 프로그래밍은 다음과 같은 상황일때 유용합니다. 1.배열을 copy하는 copyarray 객체를 만들었습니다. class CopyArray { } 2. int[]배열을 copy하는 메소드를 만들었습니다. class CopyArray { public void Copyint(int[] a, int[] b) { for(int i = 0; i < a.Length; i++) { a[i] = b[i]; } } } 3.쓰다보니 string[]배열..
안녕하세요. 오늘은 저번시간에 이어 c#의 배열에 대해서 알아보겠습니다. 배열은 c언어와 개념이 똑같습니다. 고로 생성하는 법을 알아보겠습니다. 코드를 보시죠 using System; namespace StudyCSharp { class MainApp { static void Main(string[] args) { int[] score = new int[4]; //크기가 4인 배열 생성 score[0] = 0; score[1] = 1; score[2] = 2; score[3] = 3; } } } 위 코드처럼 배열을 생성할 수 있습니다. c#은 특별하게 ^연산자가 있습니다. 배열의 마지막이라는 뜻을 가지고있습니다. 예를들어 ^1은 배열의 마지막에서 첫번째를 의미하는 수입니다. 코드를 보시죠. using S..
안녕하세요. 저번시간에 이어 오늘은 c#의 인터페이스에대해 알아보겠습니다. 인터페이스는 프로그래머들간의 약속을 위해 탄생했습니다. "우리 robot 객체는 움직이는 move 메소드와 말하는 speak 메소드는 꼭 만들자" 라고 메소드의 이름과 내용등을 정합니다. 그래서 인터페이스의 정의는 아래와 같습니다. interface IRobot { void Move(); //움직이는 메소드 void Speak(); //말하는 메소드 } 인터페이스는 메소드, 이벤트, 인덱서, 프로퍼티만을 약속할 수 있습니다. 프로그래머는 이 인터페이스를 '상속'하여 사용하게됩니다. 상속하게되면 '무조건' 인터페이스에서 약속한 메소드는 꼭 구현해야합니다. 구현을 안하고 컴파일하게되면 컴파일러가 오류를 냅니다. 상속하는 것은 클래스랑..
안녕하세요. 오늘은 접근한정자에이어 클래스에 대해 좀 더 알아보도록 하겠습니다. 다시 한번 말씀드리지만 해당 설명은 c언어를 마스터하신분들께 적합한 내용입니다. c언어 책을 한권이라도 읽지않으신 분은 이해하시기 어려울것입니다. 그럼 상속에대해서 먼저 알아 보겠습니다. 강아지와 고양이는 젖을 먹인다는 공통점 때문에 포유류로 분류됩니다. 하지만 강아지와 고양이는 울음소리가 다릅니다. 강아지와 고양이 클래스를 만들때 각각 젖을 먹이는 메소드를 만들 수 있지만, 포유류라는 새로운 클래스를 만들고 그 안의 메소드와 필드등을 그대로 가져갈 수 있습니다. 먼저 코드부터 보시죠. using System; namespace StudyCSharp { class MainApp { static void Main(string[..
안녕하세요. 오늘은 클래스에대해서 알아보겠습니다. 클래스란 자동차에 비유하면 자동차 설계도와 같습니다. 객체는 이 클래스(자동차 설계도)를 가지고 만든 자동차와 같습니다. 또한 객체는 인스턴스라고도 불립니다. 세상의 모든 물체를 객체로 바라보는 것이 객체지향 프로그래밍의 핵심입니다. 모든 객체에는 속성과 기능으로 이루어져있습니다. 예를들어 강아지로봇을 객체로 생각해본다면, 클래스(강아지로봇 설계도)에는 강아지 털의 색, 강아지 크기등이 속성으로 존재해야하고, 밥먹기, 짖기 등이 기능으로 존재해야한다고 생각 할 수 있습니다. 그럼, 강아지 로봇을 코드로 구현시켜보겠습니다. class DogRobot { public string DogColor; // 강아지 색 속성 public int DogSize; //..