[c#] 값 형식 처럼 작동하는 string(참조 형식) string 타입은 참조형식(reference types)의 데이터 타입입니다. 즉 해당 포스팅에서 설명 드렸듯이 실제 데이터 값은 힙(heap)메모리에 저장이 되고, 스택(stack)메모리에는 힙 메모리의 주소가 저장이 되는 형태 입니다. 그런데 특이하게도 이 string 타입은 다른 참조형식과는 조금 다른 방식으로 활동을 하는 것처럼 보입니다. string 코드 예제 "안녕"이라는 데이터값을 Text라는 변수에 넣고, Text를 다시 Text2에 할당을 한 뒤, 최종적으로 Text2의 값을 변경한 코드입니다. (이전 포스팅에서 지겹게 다룬 내용이기 때문에 자세한 설명은 생략합니다.) output: 결과를 보시면 뭔가 이상한걸 느끼셨을겁니다. 분명 이전에 참조 형식(reference types)의 경우.. c# 2022. 5. 17. [c#] 값 형식(value types) VS 참조 형식(reference types) c# 에서는 데이터를 메모리에 어떤 방식으로 저장하느냐에 따라 크게 두개의 타입으로 나뉘게 됩니다. 바로 오늘의 주제인 값형식(value types)과 참조형식(reference types)입니다. c#의 많은 문법들이 사실 이 두 녀석의 특징과 차이로 인해 설명이 되기 때문에 이번 포스팅은 특히 잘 이해 하실 필요가 있습니다. 결론부터 간단히 설명드리자면, 값 형식(value types)은 해당 데이터를 직접적으로 스택(stack) 메모리에 저장하는 반면, 참조 형식(reference types)의 경우 힙(heap) 메모리에 데이터를 저장합니다. 스택(stack) 메모리에는 힙 메모리의 주소를 저장합니다. 무슨 말인지 조금 애매하시죠? 사실 이런 추상적인 설명보단 직접적으로 어떻게 다른지는 코드를 통.. c# 2022. 5. 17. [c#] Attribute(어트리뷰트) 란? c#에서 Attribute란 코드에 대한 부가정보를 기록하는것입니다. 부가정보? 그냥 주석으로 적으면 되지 않나? 라는 의문이 드시는 분도 있을건데요. 주석은 인간만 읽을 수 있지만, 이 Attribute는 컴퓨터도 읽을 수 있습니다. 이게 무슨말인지는 차차 설명드리겠습니다. Obsolete 어트리뷰트 사용 예시 우선 어트리뷰트의 예시로 c#의 빌트인(내장) 어트리뷰트 중 하나인 Obsolete를 소개하겠습니다. 함수 위 대괄호 내부에 Obsolete라는 것이 보이실텐데요. 생긴게 조금 낯설어 보이지만, 이것도 사실 함수입니다. 즉 "NewMethod()를 사용해주세요"가 첫번째 인자로 들어 간것입니다. Obsolete 어트리뷰트는 더이상 사용하지 않는 클래스나 함수, 필드앞에 붙히는데요, 일반적으로 사.. c# 2022. 5. 16. [c#] enum(열거형) 사용 이유/사용법 enum이란 여러개의 상수를 하나의 컨테이너에서 관리하기 위해 사용하는 자료형입니다. 그런데 왜 굳이 하나로 관리할까요? 우리가 관리해야할, 또는 기억해야 할것들이 많다면 우리 머리로 일일이 기억하기 어렵기 때문입니다. enum을 쓰면 왜 기억하기 쉬울까요? enum의 자동완성 기능 바로 자동 완성 기능 때문인데요. c#의 빌트인 enum중 하나인 ConsoleColor를 예로 들어 설명해보겠습니다. (ConsoleColor은 콘솔창에 컬러를 바꾸는 역할을 함) 보시는 것처럼 .(점)을 하나찍으면 해당 enum에 포함된 모든 컬러가 노출이 됩니다. 우리는 마치 주관식이 아닌 객관식 문제풀듯 내용물에 접근할 수 있게 되는거죠. switch 구문과 사용 이외에도 스위치 구문 인자로 enum을 넣으면 해당 모.. c# 2022. 5. 16. [c#] 델리게이트(대리자) 익명 함수로 선언 이전 포스팅에서 기본 델리게이트(대리자)사용법에 알아 보았다면, 이번 포스팅에서는 관련 추가 사항 중 하나인 익명함수로 선언 하는 방법에 대해 알아보겠습니다. delegate() 이용 class Program { public delegate void TestDelegate(); public static void Main(string[] args) { Testing Test = new Testing(); TestDelegate testDelegateFunction = delegate () { Console.WriteLine("테스트"); }; testDelegateFunction(); } } 위와 같이 delegate ()를 이용해 함수명 없이 익명함수를 델리게이트에 할당할 수 있습니다. lambda 함수.. c# 2022. 5. 13. [c#] var 키워드란? 값을 변수에 할당하기 위해서는 변수에 할당할 값에 맞는 타입을 자료형으로 미리 기입해야 합니다. 예를 들어 숫자 1을 변수에 넣고 싶다면 아래와 같이 int자료형을 미리 세팅을 해줘야 하죠. var키워드란? 하지만 var 키워드를 쓰면 값만 넣어주면 알아서 자료형 선택해줍니다. output : 실제로 타입을 확인해보면, 타입이 int32로 할당 된것을 알 수 있죠. var키워드 제약사항 하지만 너무나도 편리한 var키워드에는 몇가지 제약 사항이 있습니다. 1) 지역변수(local)는 사용가능 하나 전역변수(global)로는 사용이 불가 즉 함수안이나, for loop 내부 스코프안에서만 사용이 가능하다는 단점이 있습니다. 아래 코드를 보시면 함수 바깥에서 var키워드로 정의한 부분이 오류가 나죠. 2) .. c# 2022. 5. 13. [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. 이전 1 ··· 20 21 22 23 24 25 26 ··· 32 다음