Section 3.21: 클래스 멤버 연산자

멤버 접근 (member access)

var now = DateTime.UtcNow; // 클래스의 멤버에 접근한다. 이 경우는 UtcNow 속성 (property) 에 접근한다.

함수 호출 (function invocation)

var age = Person.GetAge(dateOfBirth); // 위 코드는 dateOfBirth 인자를 넘겨 GetAge 함수를 호출한다.

역주: 원문에는 Person. 부분이 없이 GetAge() 함수를 바로 부르고 있으나 해당 주제인 클래스 멤버 연산자와 관련이 없는 것 같아 예제를 수정하였습니다.

집합 객체 요소 액세스 (aggregate object indexing)

var letters = "letters".ToCharArray(); char letter = letters[1]; Console.WriteLine("Second Letter is {0}",letter); // 위 예제는 letters[1] 을 호출함으로써 // 배열에서 두번째 문자를 추출한다. // 중요: 배열의 요소 액세스시 인덱스는 0 부터 시작된다: 즉, 첫번째 문자는 letters[0] 으로 접근이 가능하다.
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

'번역 > C# Notes for Professionals' 카테고리의 다른 글

4.2: If 문의 조건식  (0) 2020.11.17
4.1: If-Else 문  (0) 2020.11.16
3.20: nameof 연산자  (0) 2020.11.13
3.19: 대입 이항 연산자  (0) 2020.11.11
3.18: typeof  (0) 2020.11.11

Section 3.20: nameof 연산자

변수나 타입 혹은 멤버에 대한 정규화 (qualified) 되지 않은 이름을 나타내는 문자열을 반환한다.

역주:정규화된 이름에 대한 세부 사항은 여기 에서 확인할 수 있습니다.

int counter = 10; nameof(counter); // "counter" 를 반환한다 Client client = new Client(); nameof(client.Address.PostalCode)); // "PostalCode" 를 반환한다

nameof 연산자는 C# 6.0 에서 처음 소개되었다. 이는 컴파일 시점에 평가 (evaluate) 되어 반환된 문자열 값이 컴파일러에 의해 inline 으로 삽입되므로, 문자열 상수가 사용될 수 있는 대부분의 상황에 (예: switch 문 안의 case 라벨이라던가, attribute 등...) 사용될 수 있다. 또한 이는 예외 (exception)을 발생시키거나 로그를 남기는 상황, 혹은 특성 (attribute) 및 MVC Action link 사용 등 다양한 경우에 매우 유용하다.

본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

'번역 > C# Notes for Professionals' 카테고리의 다른 글

4.1: If-Else 문  (0) 2020.11.16
3.21: 클래스 멤버 연산자  (0) 2020.11.13
3.19: 대입 이항 연산자  (0) 2020.11.11
3.18: typeof  (0) 2020.11.11
3.17: 후위 (postfix) 증감 및 전위 (prefix) 증감 연산  (0) 2020.11.10

Section 3.19: 대입 이항 연산자

C# 은 = 기호와 합쳐져, 연산자의 결과를 평가 (evaluate) 한 후 해당 결과를 원래의 변수에 대입해주는 몇가지의 연산자를 지원한다.

예제:

x += y

위 코드는 다음과 같다.

x = x + y

이항 대입 연산자들:

+= -= *= /= %= &= |= ^= <<= >>=
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

Section 3.18: typeof

특정 타입에 대한 System.Type 객체를 얻어온다.

System.Type type = typeof(Point) //System.Drawing.Point System.Type type = typeof(IDisposable) //System.IDisposable System.Type type = typeof(Colors) //System.Drawing.Color System.Type type = typeof(List<>) //System.Collections.Generic.List`1[T]

런타임 형식 (run-time type) 을 확인하고자 한다면, GetType 메소드를 사용하여 현재 인스턴스의 System.Type 을 얻어올 수 있다.

typeof 연산자는 컴파일 타임에 명시되는 타입 이름을 파라미터로 받게 되어있다.

public class Animal {} public class Dog : Animal {} var animal = new Dog(); Assert.IsTrue(animal.GetType() == typeof(Animal)); // 실패, animal 은 typeof(Dog) 이다 Assert.IsTrue(animal.GetType() == typeof(Dog)); // 성공, animal 은 typeof(Dog) 이다 Assert.IsTrue(animal is Animal); // 성공, animal 은 Animal 을 구현 (implement) 한다
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

Section 3.17: 후위 (postfix) 증감 및 전위 (prefix) 증감 연산

후위 증가 연산인 x++x 에 1 을 더해 준다.

var x = 42; x++; Console.WriteLine(x); // 43

후위 감소 연산인 x--x 에서 1 을 빼준다.

var x = 42; x--; Console.WriteLine(x); // 41

++x 는 전위 증가 연산이라 불린다. 이는 x 의 값을 증가시킨 후 x 를 반환하며, x++ 의 경우에는 x 의 값을 반환한 후 증가 연산을 수행한다

var x = 42; Console.WriteLine(++x); // 43 System.out.println(x); // 43

아래의 결과는 위와 다르게 나타난다.

var x = 42; Console.WriteLine(x++); // 42 System.out.println(x); // 43

두가지 모두 for 반복문 (loop) 에서 빈번하게 사용된다.

for(int i = 0; i < 10; i++) { }
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

Section 3.16: 클래스 멤버 연산자들: Null 조건부 요소 액세스

var letters = null; char? letter = letters?[1]; Console.WriteLine("Second Letter is {0}",letter); // 위 예제에서 letters 가 null 이라는 이유로 인해 에러를 throw 하는 대신, // letter 에 null 값이 대입 (assign) 되게 된다
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

Section 3.15: 클래스 멤버 연산자들: Null 조건부 멤버 액세스

var zipcode = myEmployee?.Address?.ZipCode; // 왼쪽 피연산자가 null 인 경우 null 을 반환한다. // 위 코드는 아래 코드와 동등하다: var zipcode = (string)null; if (myEmployee != null && myEmployee.Address != null) zipcode = myEmployee.Address.ZipCode;
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

Section 3.14: => Lambda 연산자

버전 ≥ 3.0

=> 연산자는 대입 연산자인 = 와 동일한 우선 순위를 가지며 우측 우선 결합 (right-associative) 방식으로 동작한다.

이는 lambda 표현식 (expression) 을 선언하기 위해 사용되며 LINQ 쿼리들과 함께 널리 사용된다:

string[] words = { "cherry", "apple", "blueberry" }; int shortestWordLength = words.Min((string w) => w.Length); // 5

LINQ extension 이나 쿼리에서 사용 시 객체 (object) 의 타입은 컴파일러에 의해 추론될 수 있으므로 종종 생략된다:

int shortestWordLength = words.Min(w => w.Length); //컴파일되어 동일한 결과를 출력한다

일반적으로 lambda 연산자는 다음과 같은 형태를 가지게 된다:

(input parameters) => expression

lambda 표현식의 파라미터들은 => 연산자 앞에 기술되며, 실제 실행될 표현식/구문/블럭 등은 연산자 오른쪽에 기술된다:

// 표현식 (int x, string s) => s.Length > x // 표현식 (int x, int y) => x + y // 구문 (string x) => Console.WriteLine(x) // 블럭 (string x) => { x += " says Hello!"; Console.WriteLine(x); }

이 연산자는 손쉽게 delegate 를 정의하기 위해 사용될 수 있으며, 이러한 경우 명시적인 메소드를 별도로 작성할 필요가 없다:

delegate void TestDelegate(string s); TestDelegate myDelegate = s => Console.WriteLine(s + " World"); myDelegate("Hello");

아래의 경우와 비교해본다:

void MyMethod(string s) { Console.WriteLine(s + " World"); } delegate void TestDelegate(string s); TestDelegate myDelegate = MyMethod; myDelegate("Hello");
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

+ Recent posts