Section 20.2: 배열 선언 시 기본값이 아닌 값들로 채워 초기화하기

각 요소들이 기본값 (default value) 을 갖는 배열은 아래와 같이 선언할 수 있다:

int[] arr = new int[10];

위 코드는 10 개의 정수를 갖는 배열을 생성할 것이며 각 요소들은 값 0 (int 타입의 기본값) 을 갖게 될 것이다.

기본값이 아닌 값으로 초기화 된 배열을 생성하고자 한다면, System.Linq Namespace 에 속한 Enumerable.Repeat 메소드를 사용할 수 있다:

  1. true 값으로 채워진 10 개의 bool 타입의 배열을 생성하기
    bool[] booleanArray = Enumerable.Repeat(true, 10).ToArray();
  2. 100 으로 채워진 5 개의 int 타입의 배열을 생성하기
    int[] intArray = Enumerable.Repeat(100, 5).ToArray();
  3. C# 이라는 값으로 채워진 5 개의 strong 타입의 배열을 생성하기
    string[] strArray = Enumerable.Repeat("C#", 5).ToArray();
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

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

반응형

Section 20.1: 배열 선언하기

배열은 중괄호 ([]) 를 이용한 초기화 문법을 통하여 선언 및 기본값 채우기를 수행할 수 있다. 예를 들어, 10 개의 integer 배열을 생성하려면 다음과 같이 코드를 작성할 수 있다:

int[] arr = new int[10];

C# 에서의 배열 인덱스의 값은 0부터 시작하게 된다. 따라서 위 예제의 배열은 0-9 사이의 값을 가지게 된다.

예제:

int[] arr = new int[3] {7,9,4}; Console.WriteLine(arr[0]); // 출력 결과 : 7 Console.WriteLine(arr[1]); // 출력 결과 : 9

이는 시스템이 요소들의 인덱스를 0 부터 세기 시작한다는 것을 의미한다. 또한, 배열의 요소들에 대한 접근은 상수 시간 (constant time) 내에 이루어진다. 이는 배열의 첫번째 요소에의 접근에 소요되는 비용 (시간) 은 배열의 두번째, 세번째 등 다른 요소들에 대한 접근에 소요되는 비용과 동일하다는 의미이다. 또한 사용자는 배열 자체를 생성 (instantiate) 하는 것 뿐만 아니라 배열에 대한 빈 참조 (bare reference) 를 선언할 수도 있다.

int[] arr = null; // 문제 없음, 배열에 대한 null 참조자 (reference) 를 선언한다. int first = arr[0]; // 실제 참조할 배열이 존재하지 않으므로 System.NullReferenceException 을 throw 한다.

컬렉션 초기화 (collection initialization) 문법을 이용하면 배열을 생성함과 동시에 사용자 설정 값들로 초기화할 수 있다:

int[] arr = new int[] { 24, 2, 13, 47, 45 };

new int[] 부분은 배열 변수를 선언할 때에 생략이 가능하다. 이는 완전한 (self-contained) 표현식이 아니므로, 변수 선언이 아닌 부분에서의 호출은 정상적으로 작동하지 않는다. (이러한 경우, new 를 사용하는 버전의 표현식을 이용한다):

int[] arr = { 24, 2, 13, 47, 45 }; // 문제 없음 int[] arr1; arr1 = { 24, 2, 13, 47, 45 }; // 컴파일 되지 않음

암묵적 타입의 배열

위에서 소개된 선언식들의 대체 방법으로, var 키워드와의 조합을 통해 특정 타입의 이름 부분을 생략하고 배열의 타입 자체를 컴파일러로 하여금 추론하게 할 수도 있다:

// int[] 과 동일하다 var arr = new [] { 1, 2, 3 }; // string[] 과 동일하다 var arr = new [] { "one", "two", "three" }; // double[] 과 동일하다 var arr = new [] { 1.0, 2.0, 3.0 };
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

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

반응형

Section 19.17: 현재 날짜 정보 구하기

현재 날짜 정보를 이용하고 싶다면 DateTime.Today 속성값을 사용할 수 있다. 이 값은 코드가 실행되는 당일의 날짜를 DateTime 객체 형식으로 반환하여 준다. 이값을 .ToString() 을 통해 변환하는 경우, 사용자 시스템상의 소재지 문화권 정보를 기본으로 사용하게 된다.

예제:

Console.WriteLine(DateTime.Today);

위 코드는 해당일의 날짜를 로컬 서식정보에 맞추어 콘솔에 출력해줄 것이다.

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

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

반응형

Section 19.16: ToString, ToShortDateString, ToLongDateString 및 서식화된 ToString 메소드

using System; public class Program { public static void Main() { var date = new DateTime(2016, 12, 31); Console.WriteLine(date.ToString()); // 출력 결과 : 12/31/2016 12:00:00 AM Console.WriteLine(date.ToShortDateString()); // 출력 결과 : 12/31/2016 Console.WriteLine(date.ToLongDateString()); // 출력 결과 : Saturday, December 31, 2016 Console.WriteLine(date.ToString("dd/MM/yyyy")); // 출력 결과 : 31/12/2016 } }
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

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

반응형

Section 19.15: DateTime.ParseExact(String, String, IFormatProvider) 메소드

날짜 및 시간을 나타내는 문자열을 특정 서식 및 문화권 정보를 이용하여 상응하는 DateTime 객체로 변환한다. 변환하고자 하는 문자열은 주어진 서식과 정확하게 일치하여야 한다.

특정 서식의 문자열을 DateTime 객체로 변환하기

MM-dd-yyyy hh:mm:ss tt 서식에 해당하는 08-07-2016 11:30:12 PM 문자열이 있으며, 이를 현재 문화권에 상응하는 DateTime 객체로 변환 하는 예를 살펴본다.

string str = "08-07-2016 11:30:12 PM"; DateTime date = DateTime.ParseExact(str, "MM-dd-yyyy hh:mm:ss tt", CultureInfo.CurrentCulture);

문자열을 문화권 정보 없이 DateTime 객체로 변환하기

dd-MM-yy hh:mm:ss tt 서식에 해당하는 문자열이 있으며, 이를 문화권 정보를 포함하지 않는 DateTime 객체로 변환 하는 예를 살펴본다.

string str = "17-06-16 11:30:12 PM"; DateTime date = DateTime.ParseExact(str, "dd-MM-yy hh:mm:ss tt", CultureInfo.InvariantCulture);

문자열을 문화권 정보 없이 여러 종류의 서식을 이용하여 DateTime 객체로 변환하기

예를 들어 23-12-2016 이나 12/23/2016 과 같은 서식에 해당하는 문자열이 있으며, 이를 문화권 정보를 포함하지 않는 DateTime 객체로 변환 하는 예를 살펴본다.

string date = "23-12-2016" /* or date = "12/23/2016" */ ; string[] formats = new string[] {"dd-MM-yyyy","MM/dd/yyyy"}; // 더욱 많은 서식을 추가할 수도 있다. DateTime date = DateTime.ParseExact(date,formats, CultureInfo.InvariantCulture,DateTimeStyles.None);

주의: CultureInfo Class 클래스를 사용하기 위해서는 System.Globalization 가 추가되어야 한다.

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

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

반응형

Section 19.14: DateTime 을 for 반복문에서 initializer 로 사용하기

// 두개의 DateTime 날짜 범위를 (Add 계열의 메소드를 사용하여) // 반복자 (iterator) 를 통해 요소 반복 (iterate) 한다 DateTime start = new DateTime(2016, 01, 01); DateTime until = new DateTime(2016, 02, 01); // 주의: add 계열의 메소드들은 새로운 DateTime 객체를 반환하게 되어 있으므로 // dt = dt.Add() 와 같은 형식의 문법을 사용하여 반복자의 값을 덮어쓰도록 (overwrite) 한다. for (DateTime dt = start; dt < until; dt = dt.AddDays(1)) { Console.WriteLine("Added {0} days. Resulting DateTime: {1}", (dt - start).Days, dt.ToString()); }

시간 범위에 대한 요소 반복 역시 위와 유사한 방법으로 수행할 수 있다.

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

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

반응형

Section 19.13: 문화권 정보를 이용하여 Parse 및 TryParse 메소드 사용하기

다른 문화권 (언어) 정보를 이용하여 날짜와 시간 정보를 파싱하려고 하는 경우, 아래와 같은 예제를 참고하여 사용할 수 있다.

예제: 네덜란드에서 사용하는 날짜/시간 정보를 파싱하는 예

DateTime dateResult; var dutchDateString = "31 oktober 1999 04:20"; var dutchCulture = CultureInfo.CreateSpecificCulture("nl-NL"); DateTime.TryParse(dutchDateString, dutchCulture, styles, out dateResult); // 결과 {31/10/1999 04:20:00}

Parse 메소드를 사용하는 예제:

DateTime.Parse(dutchDateString, dutchCulture) // 결과 {31/10/1999 04:20:00}
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

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

반응형

Section 19.12: DateTime.Add(TimeSpan) 메소드

// 현재 날짜로부터 36일 후는 어떤 요일일지를 계산하여 출력한다. System.DateTime today = System.DateTime.Now; System.TimeSpan duration = new System.TimeSpan(36, 0, 0, 0); System.DateTime answer = today.Add(duration); System.Console.WriteLine("{0:dddd}", answer);

출력 결과:

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

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

반응형

+ Recent posts