dev

C#

C#

Wonny (워니)
Wonny (워니)·생성일 2022년 04월 06일 09:16·마지막 수정일 2022년 04월 07일 08:19

About C#

  • Microsoft에서 만듦
  • 객체 지향 언어

Hello World!

Console.WriteLine("Hello World!"); // Hello World! Console.Write("Hello"); Console.Write(" "); Console.Write("World!"); // Hello World!

Comment

// one line comment /* this is multiline comment */

Types

string name = "wonny"; char firstWord = 'w'; int count = 4; decimal pie = 3.14m; bool isTrue = true; // array string[] items = new items[3]; // 길이가 3인 배열 생성 int[] numbers = { 1, 2, 3 };

Literal

// string literal Console.WriteLine("Hi"); // char literal Console.WriteLine('b'); // int literal Console.WriteLine(123); // decimal literal // m or M are called a literal suffix Console.WriteLine(12.3m); Console.WriteLine(12.3M); // bool literal Console.WriteLine(true);

Variable

string name = "wonny"; Console.WriteLine(name); string firstName; Console.WriteLine(firstName); // error! // error CS0165: Use of unassigned local variable 'firstName' // 변수 할당 전에 값을 읽으려고 하면 에러남

암시적 타입 변수: var

var message = "Hello World!"; var message; // error! // error CS0818: Implicitly-typed variables must be initialized // var 키워드 사용 시 반드시 변수를 초기화 해야 함
  • var 키워드를 사용하여 변수를 선언하면 C# 컴파일러가 타입을 추론하여 데이터 타입 지정
  • 다른 언어의 var 키워드랑 다르게 컴파일러가 정적으로 데이터 타입을 지정해서 변수가 선언될 때 정해진 타입으로 고정되고, 이후에 데이터 타입 변경이 불가능
  • C# 커뮤니티에서 명시적으로 타입을 지정하지 않고 var 키워드를 많이 쓰는 이유
    • 변수를 초기화할 때 데이터 타입을 명확하게 알 수 없는 상황이 있음 (e.g. 나중에 작성하게 되는 코드에 따라 정해지는 경우)
    • 새로운 커스텀 데이터 타입을 생성할 수도 있고 예측 가능한 이름을 미리 지정하지 못할 수도 있음

String Formatting

이스케이프 문자 시퀀스

  • \": 큰따옴표
  • \n: 줄바꿈
  • \t: 탭
  • \\: 백슬래쉬
  • \u: 유니코드 (UTF-16)
Console.WriteLine("Hello\nWorld!"); // Hello // World! // Kon'nichiwa World Console.WriteLine("\u3053\u3093\u306B\u3061\u306F World!"); // こんにちは World!

축자 문자열 리터럴 (Verbatim String Literal)

공백이나 특수 문자를 이스케이프 문자 시퀀스 없이 쓸 수 있게 해주는 것

Console.WriteLine(@" c:\source\repos (this is where your code goes)"); // c:\source\repos // (this is where your code goes) Console.WriteLine(@"Wonny say ""hi!"""); // Wonny say "hi!"

문자열 보간

템플릿과 보간 표현식을 사용하여 하나의 리터럴 문자열에 여러 변수를 결합하는 것

string firstName = "Bob"; string greeting = "Hello"; Console.WriteLine($"{greeting} {firstName}!"); // Hello Bob!

verbatim string literal과 같이 쓸 수 있다.

string projectName = "First-Project"; Console.WriteLine($@"C:\Output\{projectName}\Data"); // result: // C:\Output\First-Project\Data

연산자

int sum = 7 + 5; // 12 int difference = 7 - 5; // 2 int product = 7 * 5; // 35 int quotient = 7 / 5; // 1 int modulus = 7 % 5; // 2 decimal decimalQuotient = 7.0m / 5; // 1.4 decimal decimalQuotient = 7 / 5; // 1 decimal decimalQuotient = (decimal)7 / 5; // 1.4 // compound assignment operator int value = 0; value = value + 5; // 5 value += 5; // 10 value++; // 11 int value = 1; value++; Console.WriteLine(value); // 2 Console.WriteLine(value++); // 2 Console.WriteLine(value); // 3 Console.WriteLine(++value); // 4

Method

stateful method vs stateless method

// stateful method (instance method) // 메모리에 값을 저장하거나 업데이트하는 식으로 어플리케이션의 상태를 수정하는 메서드 var dice = new Random().Next(10); // stateless method (static method) // 저장된 어떤 값을 참조하는 것 없이 동작할 수 있는 메서드 Console.WriteLine("Hi");

overloaded method

여러 메서드 시그니처로 정의할 수 있음

Random dice = new Random(); int roll1 = dice.Next(); int roll2 = dice.Next(101); int roll3 = dice.Next(50, 101);

if statement

Random dice = new Random(); int roll1 = dice.Next(1, 7); int roll2 = dice.Next(1, 7); int roll3 = dice.Next(1, 7); int total = roll1 + roll2 + roll3; Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}"); if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3)) { if ((roll1 == roll2) && (roll2 == roll3)) { Console.WriteLine("You rolled triples! +6 bonus to total!"); total += 6; } else { Console.WriteLine("You rolled doubles! +2 bonus to total!"); total += 2; } } if (total >= 16) { Console.WriteLine("You win a new car!"); } else if (total >= 10) { Console.WriteLine("You win a new laptop!"); } else if (total == 7) { Console.WriteLine("You win a trip for two!"); } else { Console.WriteLine("You win a kitten!"); }

foreach statement

int[] numbers = { 1, 2, 3, 4, 5 }; int sum = 0; foreach (int number in numbers) { sum += number; } Console.WriteLine(sum); // 15

Reference

© 2020 Wonny.