[c#] 익명타입이란? 익명 타입이란 말그대로 이름이 없는 타입을 의미합니다. 기본 사용법 아래와 같이 사용을 합니다. new뒤에 이름이 없기 때문에 빈칸이죠? 그리고 특별한 타입자체가 없음으로 var 키워드를 이용합니다. (var 키워드를 모르시면 해당 포스팅 참조) 객체 내부값 읽기 익명타입 내부에 접근하는 방법은 아래와 같습니다. output : 객체 내부값 변경 익명타입은 읽기만 가능할뿐 수정은 불가합니다. 수정을 하려고하면 아래와 같이 에러가 발생되죠. 이 글과 읽으면 좋은글 [c#] var 키워드란? c# 2022. 5. 13. [c#] 인터페이스란? 인터페이스란 우리가 코드를 작성할때, "이러 이러한 것은 꼭 작성해!"라고 말해주는 청사진 같은 역할을 합니다. 1. 인터페이스 생김새 1) 인터페이스는 제일 앞에 interface라는 것을 붙혀줍니다. 2) 인터페이스명은 관습적으로 대문자 I로 시작을 합니다. 3) 있어야할 메소드를 적어줍니다.( 여기선 void Drive(); ) 이때 주의할점은 바디(body)를 적어주지 않습니다. 즉 {}가 없는 상태입니다. 앞서 제가 말했듯 인터페이스는 청사진 역할을합니다. 즉 내용물이 없어도 되는 것이죠. 참고로 interface는 디폴트로 public 한정자를 사용하고, 다른 한정자는 사용할 수 없습니다. 2. 인터페이스 사용법 청사진 규칙을 사용해야하는 클래스에 해당 인터페이스를 상속합니다. 그 후 상속 받.. c# 2022. 5. 12. [c#] 업 캐스팅이란? 업캐스팅을 영어로 표현해보면 up + casting으로 나눠 볼 수 있습니다. 여기서 casting은 무엇일까요? 아래 예제에 서로 다른 타입의 값들이 있습니다. int a = 10; double b = 3.14; a = b // c# 2022. 5. 12. [wpf 기초] App.xaml 기본 구조 이해 wpf 프로젝트를 생성하면 기본적으로 생성되는 파일 중 가장 중요한 두개의 축은 MainWindow.xaml 과 App.xaml입니다. 이 중에서 이번 포스팅에서는 파일을 실행시 시작점이되는 App.xaml에 대해 알아보겠습니다. App.xaml 구성 요소 App.xaml을 열어보면 아래와 같이 코드들이 보일텐데요, 여기서 우리가 주목해볼요소는 StartupUri입니다. StartupUri를 보면 MainWindow.xaml이라고 적혀있네요. 이 뜻은 해당 앱이 실행될때 해당 파일(MainWindow.xaml)을 제일 먼저 실행 시킨다는 뜻입니다. Startup이란? 반면 StartupUri가 아닌 Startup을 이용할 수도 있습니다. StartupUri가 파일 위치를 가르켰다면 Startup은 함수를.. c#/wpf 2022. 5. 11. [c#] private set 사용 이유?(프러퍼티) 위와 같이 프러퍼티 set 부분에 private이 붙은걸 보신적이 있을텐데요. (프러퍼티를 모르시는분은 해당글 참조) 이 친구의 역할은 무엇일까요? private set의 역할 결론부터 말하자면, 해당 필드값을 읽기전용으로 하겠다!라는 것입니다. 그런데 우리가 기존에 알고 있던 읽기전용 방식으로는 set을 그냥 없애는 형태도 있습니다. 이 둘의 차이는 무엇일까요? private set VS set 없는 형태 private 접근한정자의 특징에서도 알수 있듯이, private을 적용하면 외부에서는 접근을 못하지만, 내부 클래스에서는 접근이 가능합니다. 다시 말하면, 아래와 같이 내부에 public 메소드를 만들면 내부 함수를 통해서는 해당 set을 실행 시킬 수 있다는 뜻이죠. 반면 set이 아예 없는 형태.. c# 2022. 5. 11. [c#] 프로퍼티(property)란? - 사용 이유/ 사용법 이번 포스팅에서는 프로퍼티가 무엇이고, 사용법 및 사용 이유에 대해 알아 보겠습니다. 우리가 코딩을 하다보면 클래스내 private으로 지정된 필드값을 외부에서 변경하고 싶을 때가 있습니다. 이때는 public으로 지정된 함수를 통해 private값에 접근하면 된다고 이전 포스팅에서 알아보았죠. 예시를 통해 복습을 해볼까요? class Car { private string name; public string GetName() { return name; } public void SetName(string name) { this.name = name; } } 위 클래스는 public 으로 구성된 GetName, SetName 메소드을 가지고 있습니다. 즉, 이 메소드들을 이용해 private 필드값을 접근을.. c# 2022. 5. 11. [c#] 델리게이트(delegate) 개념 | += , -= 정수값을 변수에 담고 싶을때는 정수를 담고싶을때는 int로 선언하면됩니다. 문자를 담고싶을때는 string로 선언하면됩니다. 함수(or 메소드)를 변수에 담고 싶을땐 어떻게 할까요? 이때 사용하는것이 대리자(delegate)입니다. 이 글과 읽으면 좋은글 [c#] 델리게이트를 왜 쓸까? 1. 델리게이트 선언방법 1) 제일 앞에 delegate 명시하고, 리턴값 타입, 매개변수 구성을 맞춰서 정의를 합니다. 아래 그림 처럼 변수에 넣고 싶은 메소드인 Print의 구성요소를 맞춰서 delegate를 정의하는것을 알 수 있습니다. 2) 메소드를 가진 클래스를 먼저 객체화 하고, 메소드를 델리게이트의 인자로 넣는 형태로 정의를 합니다. 델리게이트가 마치 변수처럼 사용되는걸 알 수 있습니다. Output: 이 방.. c# 2022. 5. 10. [c# 기초] 코드 동작 시간 측정 (with Stopwatch) 이번 포스팅에서는 코드 실행 시간을 측정하는 방법에 대해 알아 보도록 하겠습니다. 1. Stopwatch 클래스 불러오기 Stopwatch regularStopwatch = new Stopwatch(); Stopwatch클래스를 불러와 regularStopwatch라는 명으로 객체를 형성합니다.(객체 명은 원하는대로 작성하셔도 됩니다.^^) 혹시 아래와 같이 빨간줄이 뜨신다면, 빨간줄 부분을 클릭 후 Ctrl + . 을 누르시고 엔터를 치시면 using System.Diagnostics; 가 윗부분에 작성 됩니다. 해당 클래스가 Diagnostics에 포함된 클래스이기 때문에 정상적으로 실행 되실겁니다. 2. Start(), Stop() 메소드 이용 파란색 사각형 부분이 측정하고 싶은 코드이고, 이 코드.. c# 2022. 5. 9. [c# 기초] StringBuilder 사용 이유? 이번 포스팅에서는 StringBuilder를 써야 하는 이유와 사용법에 대해 알아보도록 하겠습니다. 1. StringBuilder를 써야 하는 이유 기본 string형태는 immutable 형태로 변경할 수 없는 데이터타입 입니다. 이 말은 무엇을 의미할까요? 이는 데이터값이 바뀔때마다 새로운 메모리에 해당 값이 저장되고, 낙동강 오리알이 되어버린 이전값들이 garbage로 쌓이게 된다는걸 의미합니다. 결과적으로 속도가 느려집니다. 반면 StringBuilder은 변경할 수 있는 데이터타입으로 해당 문제를 해결 해줍니다. 2. string vs Stringbuilder 속도 비교 코드 코드 속도 측정 클래스(Stopwatch)를 모르시는 분은 해당 포스팅을 참조바랍니다. 정말로 그런지 아래 코드를 통해 .. c# 2022. 5. 9. [c# 기초] partial을 쓰는 이유? c# 코딩을 하다보면 parital이라고 적힌 것을 보신적이 있을겁니다. 이 친구의 정체는 무엇이고, 언제 사용할까요? 결론부터 말하자면, 한 클래스내에 메소드들이 너무 많아져서 유지 관리가 힘들때, 관련있는 메소드들끼리 분리하고 나누기 위함입니다. 아래 예시처럼 Person 이라는 클래스내에 많은 메소드(함수)들이 있습니다. 실제 실무에서는 이러한 메소드들이 100개 이상이 되는 경우도 있는데요. 이때 메소드를 수정하려는데 메소드가 어디있는지 찾기 힘든 경우가 더러 있습니다. 이럴땐 관련있는 메소드들을 분리하여 관리하면 편하겠죠? partial 사용법은 같은 클래스명을 사용하되 앞에 partial을 붙혀주면 끝입니다. 실무에서는 아래처럼 관련있는 메소드별로 클래스를 분류하여 관리합니다. 마치 다른 클래.. c# 2022. 5. 6. [c# 기초] c# 접근 제한자(Access modifier) / private, protected, public c# 코딩을 하다보면 클래스, 함수, 변수 제일 앞에 붙어 있는것을 보신적이 있으실겁니다. 이러한 것들은 접근 제한자(Access modifier)라고 불리는데요. 접근제한자는 해당 변수 ,함수, 클래스에 개방성(?)정도를 조절하는 역할을 합니다. 쉽게 말해 모두가 쓸수 있게 해준다거나, 아무도 못쓰게하는 등 제한 정도를 거는거죠. 자주 쓰이는것으로 아래 3가지 있으며, 이번 포스팅에서는 아래 3가지에 대해서만 알아 보도록 하겠습니다. 1. private 2. protected 3. public 1. public public을 쓰는 순간 사실상 신경 쓸 필요가 없습니다. 왜냐하면 모든 곳에 사용 가능하고, 심지어 다른 파일에 있는 클래스도 가져와서 쓸 수 있습니다. (다른 파일에 클래스를 사용한 예는 해.. c# 2022. 5. 6. [c# 기초] this 키워드 , this() 생성자 개념 이번 포스팅에서는 this키워드, this() 생성자에 대해 알아보겠습니다. 1. this 키워드 클래스 외부에서 클래스 내부에 있는 멤버변수에 접근하려면 아래와 같이 객체명.멤버면수명으로 접근을 합니다. 그렇다면 클래스내 메소드(함수)에서 클래스 멤버변수값을 사용하려면 어떻게 할까요? 이때 사용하는 것이 this입니다. this를 생성자 함수에서 이용하는 예시를 보여드리겠습니다.(생성자 함수를 모르시는분은 해당 포스팅 참조) Person p1 = new Person("david"); class Person { public string name; public Person(string name) { this.name = name; Console.WriteLine($"제이름은 {this.name}입니다.").. c# 2022. 5. 4. 이전 1 ··· 4 5 6 7 8 다음