728x90
728x90

C# 6.0 8

C#] C# 6.0 요약

컴파일러를 C#으로 완벽히 재작성했으며 이를 오픈소스로 공개(Roslyn).컴파일러 파이프라인을 라이브러리를 통해 외부로 노출하여 누구든지 소스에 대해 분석이 가능함. Elvis 연산자 ; 널 상태 연산자해당 연산자 이용 시, 메서드 호출, 형식 멤버 접근 전에 명시적인 널을 확인할 필요가 없어, Null Reference Exception을 마주하지 않아도 됨. Expression-bodied Function ; 표현식 본문 함수표현식 하나로 메서드, 속성, 연산자, 인덱서를 람다로 작성 Property Initializer ; 속성 초기자자동 속성에 초기값을 배정하여 초기화되는 속성을 read-only로 만들 수가 있음.read-only 속성은 생성자에서 설정이 가능하며 이는 불변이 형식 작성 시에 ..

C#] nameof

nameof 연산자 C# 6.0에 추가된 개념임의의 기호(형식, 멤버, 변수 등)의 이름에 해당하는 문자열을 돌려줌.그냥 해당 문자열을 직접 지정하는 것에 비해, 정적 형식 점검이 일어난다는 장점이 있음.Visual Studio 같은 툴들은 기호 참조를 이해할 수 있어,해당 기호의 이름을 바꾸면 그에 대한 모든 참조의 이름도 바뀜. 필드나 속성 같은 형식 멤버의 이름을 얻으려면 그것이 속한 형식의 이름도 지정해야 함.이는 정적 멤버, 인스턴스 멤버 모두 마찬가지임. string name = nameof (StringBuilder.Length); name에는 "Length"가 배정되며, "StringBuilder.Length"를 원하는 경우 아래와 같이 사용한다. nameof(StringBuilder) +..

C#] 인덱서(Indexer)

인덱서(Indexer) 인덱서는 값들의 목록이나 사전을 캡슐화하는 클래스나 구조체에서 특정값에 자연스러운 구문으로 접근하기 위한 기능을 제공하는 멤버Property와 유사하나, 이름이 아니라 색인 변수를 통해 접근함인덱서를 사용하는 구문은 배열 사용 구문과 유사하나, 정수 이외 형식도 색인으로 사용 가능적용할 수 있는 수정자는 property의 것들과 동일함 string 클래스에는 문자열을 구성하는 특정 문자의 char 값에 int 색인을 통해서만 접근할 수 있게 하는 인덱서가 존재 class IndexerText { string[] test = "This is Text Code".Split(); public string this [int wordNum] // Indexer { get { return w..

C#] 속성(Property

속성(Property) 겉으로 보기에는 필드 같으나 내부적으로는 메서드처럼 논리 코드를 가진 멤버아래 코드만 봐서는 필드인지 속성인지 구별이 불가능함 Stock msft = new Stock(); msft.CurrentPrice=30; msft.CurrentPrice-=3; Console.WriteLine(msft.CurrentPrice); 만일 여기서 CurrentPrice가 속성일 때 구현 예시는 아래와 같다. public class Stock { decimal currentPrice; // 전용 필드 public decimal CurrentPrice // 공용 속성 { get { return currentPrice; } set { currentPrice=value; } } } 속성도 필드처럼 그 형..

C#] namespace 규칙

1. 범위 바깥 namespace에서 선언된 name은 안쪽의 namespace에서 name을 한정하지 않고 사용 가능함. namespace Outer { class ClassEx1 {} namespace Inner { class ClassEx2 : ClassEx1 {} } } namespace 계통 구조의 다른 가지에 있는 형식을 지칭하는 경우,부분적으로 한정된 name을 사용할 수 있음. namespace Outer { namespace InnerOne { class Base1 {} } namespace InnerTwo { class Base2 : InnerOne.Base1{} } } 2. 숨기기 안쪽 namespace와 바깥쪽 namespace에 같은 name이 있는 경우 안쪽 name으로 간주됨...

C#] using static 지시자

C# 6.0에서부터는 namespace가 아니라 특정 형식을 using static 지시자를 이용해 도입 가능 그렇게 사용하면, 해당 형식의 모든 정적 멤버가 도입되어, 그 후부터 그 멤버의 형식 이름을 지정하지 않고 사용이 가능해짐. using static System.Console; class Test { static void Main() { WriteLine("Hello!"); } } using static 지시자는 주어진 형식의 모든 접근 가능한 정적 멤버를 도입하기 때문에, 정적 메서드만이 아니라 정적 필드, 속성, 내포된 형식도 도입함. 열거형에 대해서도 이 지시자를 적용할 수 있으며, 열거형의 모든 멤버가 도입됨. 따라서, using static System.Windows.Visibility..

C#] 널 관련 연산자

널 접합 연산자(널 병합 연산자) : ??null-coalescing operator 좌측 피연산자가 null이 아니면, 그 피연산자에 의해 평가되고,좌측 피연산자가 null이면 우측 피연산자로 평가됨좌변이 null이 아닌 경우에는 우변은 절대 평가하지 않음.이 연산자는 nullable 형식과도 함께 사용 가능. 연산자는 다음 예처럼 변수에 default를 배정하는 데 사용할 수 있음. 12string s1 = null;string s2 = s1 ?? "우변" ; // s2는 "우변"으로 평가cs 널 조건 연산자 : ?.null-conditional operator C# 6.0에 새로 추가된 연산자로, 'Elvis 연산자'로도 불림.해당 연산자를 이용하면 표준적인 마침표 연산자를 이용해 메서드를 호출하거..

C#] 정수 Overflow와 checked, unchecked 연산자

실행 시점에서 정수 형식에 대한 산술 연산이 형식에 담을 수 없을 정도로 크거나 작을 수 있음.이 경우 overflow가 발생하는데, 이 경우, 어떠한 예외도 던져지지 않고,연산의 결과는 끝에서 끝으로 순환(wraparound)됨. 더 큰 정수 형식으로 연산을 수행한 후, 여분의 유효 자리 비트들을 폐기한 것과 같은 결과가 나오는 것이 대표적인 예 123int a = int.Minvalue;a--;Console.WirteLine (a == int.MaxValue);cs 이러한 경우의 예외 처리를 해주고 싶을 때 checked 연산자를 이용하면 예외 처리가 가능하다. checked 연산자 / unchecked 연산자표현식이나 문장에 checked 연산자를 지정하면, 실행시점에서 해당 형식의 산술 한계를 넘..

728x90