기초 문법 총정리2 (랜덤 숫자 생성, 문자열 처리, out과 ref, is와 as)

2024. 8. 30. 17:44카테고리 없음

개요

기초 문법 총정리2

 

랜덤 숫자 생성 (Random Number Generation)

설명

컴퓨터 프로그램에서 난수를 생성하는 방법입니다. C#에서는 Random 클래스를 사용하여 난수를 생성할 수 있습니다.

1. Random 클래스 사용

Random 클래스는 난수를 생성하는 데 사용됩니다. 객체를 생성한 후, Next 메서드를 사용하여 난수를 생성할 수 있습니다.

코드

Random random = new Random();
int randomNumber = random.Next(); // 0과 int.MaxValue 사이의 난수 생성
int randomNumberInRange = random.Next(1, 101); // 1과 100 사이의 난수 생성

 

2. 랜덤 숫자 생성 예제

다음은 Random 클래스를 사용하여 1부터 100 사이의 난수를 생성하는 예제입니다.

코드

Random random = new Random();
int randomNumber = random.Next(1, 101);
Console.WriteLine($"Random number between 1 and 100: {randomNumber}");

 

문자열 처리 (String Manipulation)

설명

문자열 처리란 문자열을 다루고 조작하는 다양한 방법을 의미합니다. C#에서는 문자열을 쉽게 처리할 수 있는 다양한 메서드를 제공합니다.

1. 문자열 생성 및 초기화

문자열은 큰따옴표로 묶어 생성할 수 있습니다.

코드

string message = "Hello, World!";

 

2. 문자열 길이 확인

문자열의 길이는 Length 속성을 사용하여 확인할 수 있습니다.

코드

string message = "Hello, World!";
int length = message.Length; // 13

 

3. 문자열 비교

== 연산자 Equals 메서드를 사용하여 문자열을 비교할 수 있습니다.

코드

string str1 = "Hello";
string str2 = "World";
bool isEqual = str1 == str2; // false
bool isEqualMethod = str1.Equals(str2); // false

 

4. 부분 문자열 추출

Substring 메서드를 사용하여 문자열의 일부를 추출할 수 있습니다.

코드

string message = "Hello, World!";
string hello = message.Substring(0, 5); // "Hello"

 

5. 문자열 분할

Split 메서드를 사용하여 문자열을 특정 구분자로 나눌 수 있습니다.

코드

string message = "Hello, World!";
string[] words = message.Split(','); // { "Hello", " World!" }

 

6. 문자열 합치기

+ 연산자나 String.Concat 메서드를 사용하여 문자열을 합칠 수 있습니다.

코드

string str1 = "Hello";
string str2 = "World";
string message = str1 + ", " + str2 + "!"; // "Hello, World!"

 

7. 문자열 포맷팅

String.Format 메서드를 사용하여 문자열을 포맷팅할 수 있습니다.

코드

string name = "John";
int age = 30;
string message = String.Format("Name: {0}, Age: {1}", name, age); // "Name: John, Age: 30"

 

8. 문자 배열 변환

문자열을 문자 배열로 변환하거나, 그 반대 작업을 할 수 있습니다.

코드

string message = "Hello";
char[] chars = message.ToCharArray(); // { 'H', 'e', 'l', 'l', 'o' }
string newMessage = new string(chars); // "Hello"

 

내용 - out과 ref (Pass by Reference)

설명

C#에서 out과 ref 키워드는 메서드에 인수로 전달된 변수를 참조로 전달하는 데 사용됩니다. 둘 다 메서드 내부에서 값을 변경할 수 있으며, 메서드 호출 후에도 변경된 값이 반영됩니다.

1. out

사용 예: 메서드가 여러 값을 반환해야 할 때 유용합니다.

특징:

- 메서드가 반환하기 전에 반드시 값을 할당해야 합니다.

- 호출할 때 초기화되지 않아도 됩니다.

코드

void GetValues(out int x, out int y)
{
    x = 10;
    y = 20;
}

int a, b;
GetValues(out a, out b);
Console.WriteLine($"a: {a}, b: {b}"); // a: 10, b: 20

 

2. ref

사용 예: 변수의 현재 값을 메서드 내부에서 수정해야 할 때 유용합니다.

특징:

- 메서드가 호출될 때 변수는 초기화되어 있어야 합니다.

- 메서드 내부에서 값을 수정할 수 있습니다.

코드

void Increment(ref int number)
{
    number++;
}

int value = 5;
Increment(ref value);
Console.WriteLine(value); // 6

 

out 과 ref의 차이점

out은 메서드 내부에서 값을 할당해야 하며, 초기화되지 않은 변수를 받을 수 있습니다.

ref는 변수의 초기화가 필요하며, 메서드 호출 전에 이미 할당된 값을 전달받습니다.

 

is와 as (Type Checking and Casting)

설명

C#에서 is와 as 키워드는 객체의 타입을 확인하고 변환하는 데 사용됩니다. 두 키워드는 타입 검사 및 변환을 더 간단하고 안전하게 수행할 수 있도록 도와줍니다.

is (타입 확인)

사용 예: 객체가 특정 타입인지 확인할 때 사용합니다.

특징:

- 결과는 true 또는 false로 반환됩니다.

- 타입이 일치하면 true, 그렇지 않으면 false를 반환합니다.

코드

object obj = "Hello, World!";
if (obj is string)
{
    Console.WriteLine("obj is a string");
}
else
{
    Console.WriteLine("obj is not a string");
}

코드해석

if (obj is string) : obj 가 string타입이라면 obj is a string를 출력하세요.

출력결과 = obj is a string

 

as (타입 변환)

사용 예: 객체를 특정 타입으로 안전하게 변환할 때 사용합니다.

특징:

타입 변환이 성공하면 변환된 객체를 반환합니다.

실패하면 null을 반환합니다.

코드

object obj = "Hello, World!";
string str = obj as string;
if (str != null)
{
    Console.WriteLine("Conversion successful: " + str);
}
else
{
    Console.WriteLine("Conversion failed");
}

코드해석

object obj = "Hello, World!"; : obj 변수는 object 타입으로 선언되며, "Hello, World!"라는 문자열을 할당받습니다.

string str = obj as string; :

  • as 연산자를 사용하여 obj를 string 타입으로 변환하려고 시도합니다.
  • as 연산자는 변환이 성공하면 변환된 객체를 반환하고, 실패하면 null을 반환합니다.
  • 여기서 obj는 실제로 string 타입이므로 변환이 성공하고, str에는 "Hello, World!"라는 문자열이 할당됩니다.

 

출력결과 = Conversion successful: Hello, World!

차이점:

is는 객체가 특정 타입인지 확인하는 데 사용됩니다.

as는 객체를 특정 타입으로 변환하는 데 사용되며, 변환에 실패하면 null을 반환합니다.