์ค๋์ ์๊ณ ๋ฆฌ์ฆ ํน๊ฐ์ ๋ค์๊ณ , ๋๋จธ์ง ๊ฐ์๋ฅผ ์๊ฐํ๋ค.
๋ฌธ์ ํด๊ฒฐ?
์ ๋ ฅ๋ ์๋ฃ๋ฅผ ํ ๋๋ก ํ์ฌ ์ํ๋ ์ถ๋ ฅ์ ์ ๋ํ์ฌ ๋ด๋ ๊ท์น์ ์งํฉ.
ํ๋ก๊ทธ๋๋จธ๋ ์๊ฐํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ ์ค์ ์ด๋ค๊ฒ ์ต์ ์ ์๊ณ ๋ฆฌ์ฆ์ธ์ง๋ฅผ ์ฐพ์๋ด๋ ๋ฅ๋ ฅ์ด ํ์ํ๋ค.
1. ๋ค์ด์๋ชฌ๋ ๋ฌธ์ (Diamond Problem)
๋ค์ค ์์์ ํ์ฉ -> ํ ํด๋์ค๊ฐ ๋ ๊ฐ ์ด์์ ๋ถ๋ชจ ํด๋์ค๋ก๋ถํฐ ๋์ผํ ๋ฉค๋ฒ๋ฅผ ์์.
์ฆ, ์ด๋ค ๋ถ๋ชจ ํด๋์ค์ ๋ฉค๋ฒ๋ฅผ ์ฌ์ฉํด์ผํ๋์ง ๋ชจํธํด์ง๋ค!
2. ์ค๊ณ์ ๋ณต์ก์ฑ ์ฆ๊ฐ
๋ค์ค ์์์ ํ์ฉํ๋ฉด, ํด๋์ค๊ฐ์ ๊ด๊ณ๊ฐ ๋ณต์กํด์ง๋ค. ํด๋์ค๊ฐ ๋ค์ค ์์์ ๋ฐ์ ๊ฒฝ์ฐ, ์ด๋ค ํด๋์ค๋ก๋ถํฐ ์ด๋ค ๋ฉค๋ฒ๋ฅผ ์์๋ฐ์์ง ๊ฒฐ์ ํด์ผํ๋ค.
3. ์ด๋ฆ ์ถฉ๋๊ณผ ์ถฉ๋ ํด๊ฒฐ์ ์ด๋ ค์
์ฌ๋ฌ ๋ถ๋ชจ ํด๋์ค๋ก๋ถํฐ ์์๋ฐ์ ๋ฉค๋ฒ๋ค์ ์ด๋ฆ์ด ์ถฉ๋ํ ์ ์๋ค.
-> ๋ฉค๋ฒ ์ฌ์ ์, ๋ช
์์ ๋ถ๋ชจํด๋์ค ์ง์
4. ์ค๊ณ์ ์ผ๊ด์ฑ๊ณผ ๋จ์์ฑ ์ ์ง
C#์ ๋จ์ผ ์์์ ํตํด ์ค๊ณ์ ์ผ๊ด์ฑ๊ณผ ๋จ์์ฑ ์ ์ง.
ํด๋์ค๊ฐ ๊ตฌํํด์ผ ํ๋ ๋ฉค๋ฒ๋ค์ ์ ์ํ๋ ๊ฒ.
1. ๋ค์ค ์์ ์ง์
2. ํด๋์ค๊ฐ ์ธํฐํ์ด์ค ๊ตฌํํ ๊ฒฝ์ฐ, ๋ชจ๋ ์ธํฐํ์ด์ค ๋ฉค๋ฒ ๊ตฌํ
interface ImayInterface // interface ๋ ๋ณ์๋ช
์์ I ๊ผญ !
{
void Methid1();
int Method2(string str);
}
class MyClass : IMyInterface
{
public void Method1()
{
// ๊ตฌํ
}
public int Method2(string str)
{
// ๊ตฌํ
return 0;
}
}
๋ค๋ฅธ ํด๋์ค์์ ํด๋น ์ธํฐํ์ด์ค ๊ตฌํ, ๋์ผ ๊ธฐ๋ฅ ๊ณต์ ๊ฐ๋ฅ!
ํด๋์ค๋ ๋จ์ผ ์์ ์ง์, ์ธํฐํ์ด์ค๋ ๋ค์ค ์์ ์ง์!
ํด๋์ค - ์ธํฐํ์ด์ค ๋์จํ ๊ฒฐํฉ!
์ถ์์ ์ธ ๋์๋ง ์ ์, ๊ตฌํ์ ๊ฐ์ง ์์.
๋ค์ค ์์ ๊ฐ๋ฅ, ์ฌ๋ฌ ํด๋์ค๊ฐ ๋์ผํ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์ ์๋ค.
ํด๋์ค๊ฐ ๊ฒฐํฉ๋ ๋ฎ์ถ๊ณ , ์ ์ฐํ ์ํธ์์ฉ ๊ฐ๋ฅ.
์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ํ์ฅ์ฑ์ ํฅ์
์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ํด๋์ค๊ฐ ๋ชจ๋ ๋์์ ๊ตฌํํด์ผ ํ๋ค๋ ์๋ฌด๋ฅผ ๊ฐ์ง ๋๋ฌธ์ ์์ ๋ ์ฆ๊ฐํ ์ ์์.
์ผ๋ถ ๋์์ ๊ตฌํ์ ๊ฐ์ง๋ฉฐ, ์ถ์ ๋ฉ์๋๋ฅผ ํฌํจํ ์ ์๋ค.
๋จ์ผ ์์๋ง ๊ฐ๋ฅ, ๋ค๋ฅธ ํด๋์ค์ ํจ๊ป ์์ ๊ณ์ธต ๊ตฌ์กฐ ํ์ฑ ๊ฐ๋ฅ.
๊ณตํต๋ ๋์์ ์ถ์ํ, ์ฝ๋ ์ค๋ณต ๋ฐฉ์ง, ํ์ฅ์ฑ ์ ๊ณต
๋ค์ค ์์ ๋ถ๊ฐ๋ฅ, ์์์ ํตํด ๊ฒฐํฉ๋ ํด๋์ค ํ์ฑ -> ์ ์ฐ์ฑ ์ ํ
์์์ ์ํ๋ฉด ์ถ์, ํธํ์ฑ์ ์ํ๋ฉด ์ธํฐํ์ด์ค!
์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ฌ์ค๋ค.
1. ๊ฐ๋ ์ฑ
์ฐ๊ด๋ ์์๋ค์ ๋ช ๋ช ํ ์ ์๋ค. ๊ฐ๋ ์ฑ ํฅ์, ์ค์๋ก ์๋ชป ๋ ๊ฐ ์ ๋ฌ ๋ฐฉ์ง.
2. ์๊ธฐ ๋ฌธ์ํ(Self - documenting)
์๋ฏธ ์๋ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์์๋ฅผ ๋ช ๋ช ํ ์ ์๋ค.
3. ์ค์์น ๋ฌธ๊ณผ ํธํ์ฑ
๋ค์ํ ์์ ๊ฐ์ ๋ํ ๋ถ๊ธฐ๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์๋ค.
// ์ ์ด๊ฑฐํ
public enum Month
{
January = 1,
February,
March,
April,
May,
June,
July,
August,
September,
October,
November,
December
}
// ์ฒ๋ฆฌํ๋ ํจ์
static void ProcessMonth(int month)
{
if (month >= (int)Month.January && month <= (int)Month.December)
{
Month selectedMonth = (Month)month;
Console.WriteLine("์ ํํ ์์ {0}์
๋๋ค.", selectedMonth);
// ์์ ๋ฐ๋ฅธ ์ฒ๋ฆฌ ๋ก์ง ์ถ๊ฐ
}
else
{
Console.WriteLine("์ฌ๋ฐ๋ฅธ ์์ ์
๋ ฅํด์ฃผ์ธ์.");
}
}
// ์คํ ์์
static void Main()
{
int userInput = 7; // ์ฌ์ฉ์ ์
๋ ฅ ์์
ProcessMonth(userInput);
}
ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋ฐ์ํ๋ ์๊ธฐ์น ์์ ์ํฉ
try
{
// ์์ธ๊ฐ ๋ฐ์ํ ์ ์๋ ์ฝ๋
}
catch (ExceptionType1 ex)
{
// ExceptionType1์ ํด๋นํ๋ ์์ธ ์ฒ๋ฆฌ
}
catch (ExceptionType2 ex)
{
// ExceptionType2์ ํด๋นํ๋ ์์ธ ์ฒ๋ฆฌ
}
finally
{
// ์์ธ ๋ฐ์ ์ฌ๋ถ์ ์๊ด์์ด ํญ์ ์คํ๋๋ ์ฝ๋
}
์์ธ ๋ฐ์ ์ฌ๋ถ์ ์๊ด์์ด ํญ์ ์คํํ๋ ์ฝ๋
๋ณ์์ ๊ฐ์ ์ง์ ์ ์ฅ.
๋ณ์๊ฐ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ , ํด๋น ๋ณ์๋ฅผ ๋ค๋ฅธ ๋ณ์์ ํ ๋นํ๊ฑฐ๋, ์ ๋ฌํ ๋๋ ๊ฐ ๋ณต์ฌ.
int, float, double, bool ๋ฑ์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ๋ค์ด ๊ฐํ์ ํด๋น.
๋ณ์ ๊ฐ์ ๊ฐ ๋ณต์ฌ.
๋ณ์๊ฐ ๋ ๋ฆฝ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง.
struct MyStruct
{
public int Value;
}
MyStruct struct1 = new MyStruct();
struct1.Value = 10;
MyStruct struct2 = struct1; // struct2๋ struct1์ ๊ฐ ๋ณต์ฌ
struct2.Value = 20;
Console.WriteLine(struct1.Value); // ์ถ๋ ฅ ๊ฒฐ๊ณผ: 10
๋ณ์๊ฐ ๋ฐ์ดํฐ์ ๋ํ ์ฐธ์กฐ(๋ฉ๋ชจ๋ฆฌ ์ฃผ์)๋ฅผ ์ ์ฅ.
๋ณ์๊ฐ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๋ฅผ ๊ฐ๊ณ ์๋ค.
ํด๋น ๋ณ์๋ฅผ ๋ค๋ฅธ ๋ณ์์ ํ ๋น, ์ ๋ฌ ์ ์ฐธ์กฐ๊ฐ ๋ณต์ฌ
ํด๋์ค, ๋ฐฐ์ด, ์ธํฐํ์ด์ค ๋ฑ์ด ์ฐธ์กฐํ์ ํด๋น.
๋ณ์ ๊ฐ์ ์ฐธ์กฐ ๋ณต์ฌ.
๋ณ์๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐ.
class MyClass
{
public int Value;
}
MyClass obj1 = new MyClass();
obj1.Value = 10;
MyClass obj2 = obj1; // obj2๋ obj1๊ณผ ๋์ผํ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ
obj2.Value = 20;
Console.WriteLine(obj1.Value); // ์ถ๋ ฅ ๊ฒฐ๊ณผ: 20
๊ฐํ๊ณผ ์ฐธ์กฐํ ์ฌ์ด์ ๋ณํ์ ์๋ฏธ.
๊ฐํ์ ์ฐธ์กฐํ์ผ๋ก ๋ณํํ๋ ๊ณผ์ .
๊ฐํ ๋ณ์์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ํ ์์ญ์ ํ ๋น๋ ๊ฐ์ฒด๋ก ๋ํ.
๋ฐ์ฑ์ ํตํด ๊ฐํ์ด ์ฐธ์กฐํ์ ํน์ง์ ๊ฐ์ง๋ฉฐ, ์ฐธ์กฐํ ๋ณ์๋ก ๋ค๋ค์ง ์ ์๋ค.
๋ฐ์ฑ๋ ๊ฐํ์ ์ฐธ์กฐ๋ก ์ ๋ฌ, ๋ฉ๋ชจ๋ฆฌ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์์!
๋ฐ์ฑ๋ ๊ฐ์ฒด๋ฅผ ๋ค์ ๊ฐํ์ผ๋ก ๋ณํํ๋ ๊ณผ์ .
๋ฐ์ฑ๋ ๊ฐ์ฒด์์ ๊ฐ์ ์ถ์ถ, ๊ฐํ ๋ณ์์ ํ ๋น.
๋ช ์์ ํ์ ์บ์คํ , ๋ฐํ์์์ ๊ฒ์ฌ.
์๋ชป๋ ํ์์ผ๋ก ์ธ๋ฐ์ฑ -> ๋ฐํ์ ์๋ฌ.
using System;
class Program
{
static void Main()
{
// ๊ฐํ
int x = 10;
int y = x;
y = 20;
Console.WriteLine("x: " + x); // ์ถ๋ ฅ ๊ฒฐ๊ณผ: 10
Console.WriteLine("y: " + y); // ์ถ๋ ฅ ๊ฒฐ๊ณผ: 20
// ์ฐธ์กฐํ
int[] arr1 = new int[] { 1, 2, 3 };
int[] arr2 = arr1;
arr2[0] = 4;
Console.WriteLine("arr1[0]: " + arr1[0]); // ์ถ๋ ฅ ๊ฒฐ๊ณผ: 4
Console.WriteLine("arr2[0]: " + arr2[0]); // ์ถ๋ ฅ ๊ฒฐ๊ณผ: 4
// ๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ
int num1 = 10;
object obj = num1; // ๋ฐ์ฑ
int num2 = (int)obj; // ์ธ๋ฐ์ฑ
Console.WriteLine("num1: " + num1); // ์ถ๋ ฅ ๊ฒฐ๊ณผ: 10
Console.WriteLine("num2: " + num2); // ์ถ๋ ฅ ๊ฒฐ๊ณผ: 10
}
}
๋ฉ์๋๋ฅผ ์ฐธ์กฐํ๋ ํ์ . (ํจ์ ํฌ์ธํฐ)
evnet๋ ํ ๋น์ฐ์ฐ์ (=) ์ฌ์ฉ๋ถ๊ฐ๋ฅ!
์ ๊ทผ์ด ๋ถํธํ ๋, ๋ฉ์๋๋ฅผ ์ฐ๊ฒฐํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
๋ณด์์ฑ, ์บก์ํ๋ฅผ ์ํด ํด๋์ค ์ธ๋ถ์์ ์ง์ ์ด๋ฒคํธ ํธ์ถ X
// ๋ธ๋ฆฌ๊ฒ์ดํธ ์ ์ธ
public delegate void EnemyAttackHandler(float damage);
// ์ ํด๋์ค
public class Enemy
{
// ๊ณต๊ฒฉ ์ด๋ฒคํธ
public event EnemyAttackHandler OnAttack;
// ์ ์ ๊ณต๊ฒฉ ๋ฉ์๋
public void Attack(float damage)
{
// ์ด๋ฒคํธ ํธ์ถ
OnAttack?.Invoke(damage);
// null ์กฐ๊ฑด๋ถ ์ฐ์ฐ์
// null ์ฐธ์กฐ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ๋ฉค๋ฒ์ ์ ๊ทผํ๊ฑฐ๋ ๋ฉ์๋๋ฅผ ํธ์ถ
}
}
// ํ๋ ์ด์ด ํด๋์ค
public class Player
{
// ํ๋ ์ด์ด๊ฐ ๋ฐ์ ๋ฐ๋ฏธ์ง ์ฒ๋ฆฌ ๋ฉ์๋
public void HandleDamage(float damage)
{
// ํ๋ ์ด์ด์ ์ฒด๋ ฅ ๊ฐ์ ๋ฑ์ ์ฒ๋ฆฌ ๋ก์ง
Console.WriteLine("ํ๋ ์ด์ด๊ฐ {0}์ ๋ฐ๋ฏธ์ง๋ฅผ ์
์์ต๋๋ค.", damage);
}
}
// ๊ฒ์ ์คํ
static void Main()
{
// ์ ๊ฐ์ฒด ์์ฑ
Enemy enemy = new Enemy();
// ํ๋ ์ด์ด ๊ฐ์ฒด ์์ฑ
Player player = new Player();
// ํ๋ ์ด์ด์ ๋ฐ๋ฏธ์ง ์ฒ๋ฆฌ ๋ฉ์๋๋ฅผ ์ ์ ๊ณต๊ฒฉ ์ด๋ฒคํธ์ ์ถ๊ฐ
enemy.OnAttack += player.HandleDamage;
// ์ ์ ๊ณต๊ฒฉ
enemy.Attack(10.0f);
}
์ต๋ช ์ ๋ฉ์๋๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ.
๋ฉ์๋์ ์ด๋ฆ ์์ด ๋ฉ์๋๋ฅผ ๋ง๋ค ์ ์๋ค.
๋ธ๋ฆฌ๊ฒ์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์์ ํ ๋น, ๋ฉ์๋์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ ๊ฐ๋ฅ.
๊ฐ๋จํ ๋ฉ์๋์ ์ฌ์ฉ!
Calculate calc = (x, y) =>
{
return x + y;
};
Calculate calc = (x, y) => x + y;
Func, Action์ ๋ธ๋ฆฌ๊ฒ์ดํธ๋ฅผ ๋์ฒดํ๋ ๋ฏธ๋ฆฌ ์ ์๋ ์ ๋ค๋ฆญ ํ์.
๊ฐ์ ๋ฐํํ๋ ๋ฉ์๋๋ฅผ ๋ํ๋ด๋ ๋ธ๋ฆฌ๊ฒ์ดํธ.
๋ง์ง๋ง ์ ๋ค๋ฆญ ํ์ ๋งค๊ฐ๋ณ์๋ ๋ฐํ ํ์ ๋ํ๋.
Function < int, string > => int ์ ๋ ฅ, string ๋ฐํ
// Func๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ ์ ์๋ฅผ ๋ํ๋ ๋ฉ์๋
int Add(int x, int y)
{
return x + y;
}
// Func๋ฅผ ์ด์ฉํ ๋ฉ์๋ ํธ์ถ
Func<int, int, int> addFunc = Add;
int result = addFunc(3, 5);
Console.WriteLine("๊ฒฐ๊ณผ: " + result);
๊ฐ์ ๋ฐํํ์ง ์๋ ๋ฉ์๋๋ฅผ ๋ํ๋ด๋ ๋ธ๋ฆฌ๊ฒ์ดํธ.
Action < int, string > => int์ string์ ์ ๋ ฅ์ผ๋ก ๋ฐ๊ณ , ์๋ฌด ๊ฐ ๋ฐํ X
// Action์ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ ๋ฉ์๋
void PrintMessage(string message)
{
Console.WriteLine(message);
}
// Action์ ์ด์ฉํ ๋ฉ์๋ ํธ์ถ
Action<string> printAction = PrintMessage;
printAction("Hello, World!");
.NET ํ๋ ์์ํฌ์์ ์ ๊ณต๋๋ ์ฟผ๋ฆฌ ์ธ์ด ํ์ฅ.
var result = from ๋ณ์ in ๋ฐ์ดํฐ์์ค
[where ์กฐ๊ฑด์]
[orderby ์ ๋ ฌ์ [, ์ ๋ ฌ์...]]
[select ์];
var
ํค์๋๋ ๊ฒฐ๊ณผ ๊ฐ์ ์๋ฃํ์ ์๋์ผ๋ก ์ถ๋ก .from
์ ์์๋ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ง์ .where
์ ์ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ๋ฉฐ, ์กฐ๊ฑด์์ ์ง์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํํฐ๋ง.orderby
์ ์ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ๋ฉฐ, ์ ๋ ฌ ๋ฐฉ์์ ์ง์ .select
์ ์ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ๋ฉฐ, ์กฐํํ ๋ฐ์ดํฐ๋ฅผ ์ง์ .C#์์ null ๊ฐ์ ๊ฐ์ง ์ ์๋ ๊ฐํ์ ๋ํ ํน๋ณํ ํ์.
๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐํ์ null ํ์ฉ X
๊ฐํ ๋ณ์์ Null ๊ฐ์ ์ง์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณต.
ํ์์ ? ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ธ.
// Nullable ํ์ ๋ณ์ ์ ์ธ
int? nullableInt = null;
double? nullableDouble = 3.14;
bool? nullableBool = true;
// ๊ฐ ํ ๋น ๋ฐ ์ ๊ทผ
nullableInt = 10;
int intValue = nullableInt.Value;
// null ๊ฐ ๊ฒ์ฌ
if (nullableDouble.HasValue)
{
Console.WriteLine("nullableDouble ๊ฐ: " + nullableDouble.Value);
}
else
{
Console.WriteLine("nullableDouble์ null์
๋๋ค.");
}
// null ๋ณํฉ ์ฐ์ฐ์ ์ฌ์ฉ
// nullableInt ?? 0๊ณผ ๊ฐ์ด ์ฌ์ฉ๋๋ฉฐ, nullableInt๊ฐ null์ด๋ฉด 0์ ๋ฐํํฉ๋๋ค.
int nonNullableInt = nullableInt ?? 0;
Console.WriteLine("nonNullableInt ๊ฐ: " + nonNullableInt);
1. ๋ฌธ์์ด ์กฐ์
Append(), Insert(), Replace(), Remove() ๋ฑ
๋ค์ํ ๋ฉ์๋๋ฅผ ์ ๊ณตํ์ฌ ๋ฌธ์์ด์ ๋ํ ์ถ๊ฐ, ์ฝ์
, ์นํ, ์ญ์ ์์
์ ์ํ.
2. ๊ฐ๋ณ์ฑ
StringBuilder๋ ๋ด๋ถ ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด ์กฐ์์ ์ํํ๋ฏ๋ก ํฌ๊ธฐ๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํ ์ ์๋ค.
๋ฐ๋ผ์ ๋ฌธ์์ด์ ํฌ๊ธฐ๊ฐ ๋์ด๋๊ฑฐ๋ ์ค์ด๋ค์ด๋ ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ๋ฐ์ X
3. ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
๋ฌธ์์ด ์กฐ์ ์ StringBuilder๋ ๋ด๋ถ ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ์กฐ์ํ๋ฏ๋ก, ๋ฐ๋ณต์ ์ธ ๋ฌธ์์ด ์กฐ์ ์์
์ด ๋ฐ์ํด๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ํด์ ์ค๋ฒํค๋๊ฐ ํฌ๊ฒ ๊ฐ์.
StringBuilder sb = new StringBuilder();
// ๋ฌธ์์ด ์ถ๊ฐ
sb.Append("Hello");
sb.Append(" ");
sb.Append("World");
// ๋ฌธ์์ด ์ฝ์
sb.Insert(5, ", ");
// ๋ฌธ์์ด ์นํ
sb.Replace("World", "C#");
// ๋ฌธ์์ด ์ญ์
sb.Remove(5, 2);
// ์์ฑ๋ ๋ฌธ์์ด ์ถ๋ ฅ
string result = sb.ToString();
Console.WriteLine(result);
๋ค์ํ C#์ ๋ฌธ๋ฒ์ ๋ฐฐ์ธ ์ ์์๋ค.
๊ฐ์ธ ๊ณผ์ ๋ฅผ ์ ์ํ๊ธฐ ์
๋ฏธ๋ฆฌ ๋ค์ ์ ์์๋ค๋ฉด, ๋ ํจ์จ์ ์ด๊ณ ๊ฐ๋ ์ฑ์ด ์ข์ ์ฝ๋๋ฅผ ์ ์ํ์ ๊ฒ ๊ฐ์๋ฐ,
๊ต์ฅํ ์์ฝ๋ค!
๋ค์ ๊ณผ์ ์๋ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํด์ ํจ์จ์ฑ ์๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ถ๋ค.
5๊ฐ ๊ฐ์ ์๊ฐ์ ์ํด Text RPG ์์ ๋ฅผ ์๋ฃํ๊ธฐ!
5๊ฐ ๊ฐ์ ๋ฃ๊ธฐ!