๐ŸŽฎ Unity Study/C#

[KLA ๋ฉ€ํ‹ฐ์บ ํผ์Šค] C#7.0 ์ œ๋Œ€๋กœ ๋ฐฐ์šฐ๊ธฐ Part.1(์ž…๋ฌธ1)

ibelieveinme 2022. 7. 14. 13:05
728x90

22.07.14 (1~7์ฐจ์‹œ)

 

[C#์˜ ์—ญ์‚ฌ]

: C์–ธ์–ด -> C++ -> C#

 

C์–ธ์–ด์—์„œ ๋ถ€์กฑํ–ˆ๋˜ OOP(๊ฐ์ฒด์ง€ํ–ฅ)๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ C++๋ฅผ ๋งŒ๋“ฌ.

Window ์šด์˜์ฒด์ œ, Office ํ”„๋กœ๊ทธ๋žจ, Adobe ์‚ฌ์˜ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด C++๋กœ ๋งŒ๋“ค์–ด์ง.

 

C#: C++์–ธ์–ด๋ฅผ ๋ฐœ์ „์‹œํ‚จ ์–ธ์–ด. Microsoft์‚ฌ์˜ Anders Hejisberg๊ฐ€ ๊ฐœ๋ฐœ. .NET Framework์— ์ตœ์ ํ™”๋œ ์–ธ์–ด. (์ธํ„ฐ๋„ท ์„œ๋น„์Šค๋ฅผ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธํ•˜๋Š” .NET๋„ Microsoft์‚ฌ๊ฐ€ ๋งŒ๋“ฌ)


[4~5์ฐจ์‹œ C# ๋ฐ์ดํ„ฐ ํƒ€์ž…]

bool: True or False

 

- ์ •์ˆ˜ํ˜•

byte: 8๋น„ํŠธ. unsigned ์ •์ˆ˜ํ˜• (integer)

sbyte: 8๋น„ํŠธ signed ์ •์ˆ˜ํ˜•

(u)short: 16๋น„ํŠธ (un)signed ์ •์ˆ˜ํ˜•

(u)int: 32๋น„ํŠธ (un)signed ์ •์ˆ˜ํ˜• <- System.Int32

(u)long: 64๋น„ํŠธ (un)signed ์ •์ˆ˜ํ˜•

 

- ์‹ค์ˆ˜ํ˜•

float: 32๋น„ํŠธ ์‹ค์ˆ˜ํ˜•

double: 64๋น„ํŠธ ์‹ค์ˆ˜ํ˜• <System.Double

decimal: 128๋น„ํŠธ ์‹ค์ˆ˜ํ˜•

 

- ๋ฌธ์ž์—ดํ˜•

char: 16๋น„ํŠธ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž

string: ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž์—ด <- System.String

 

 

[๋ฐ์ดํ„ฐํ˜•์˜ ์ตœ๋Œ€๊ฐ’ ํ™•์ธํ•˜๋Š” ๋ฒ•]

int aa = int.MaxValue; -> 2147483648

int aa_ = int.MinValue; -> -2147483647 

longํ˜•: -9223372036854775808 ~ 9223372036854775807

 

 

[Literal ๋ฆฌํ„ฐ๋Ÿด ๋ฐ์ดํ„ฐ]

: 123, True, "AGC" ์™€ ๊ฐ™์€ ๊ฐ’๋“ค์„ Literal ์ด๋ผ ํ•œ๋‹ค.

- ๋ฆฌํ„ฐ๋Ÿด์˜ ํ˜•์‹(ํƒ€์ž…): 123(int ๋ฆฌํ„ฐ๋Ÿด), 11.11(double ๋ฆฌํ„ฐ๋Ÿด), "B"(string ๋ฆฌํ„ฐ๋Ÿด), 'b'(char ๋ฆฌํ„ฐ๋Ÿด), True(bool ๋ฆฌํ„ฐ๋Ÿด) ์ด๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.


[C# ์ปดํŒŒ์ผ๋Ÿฌ]

: C# ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ int, double, char, string, bool ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ํ• ๋‹นํ•œ๋‹ค.

 

cf) ๋ฐ์ดํ„ฐ ํƒ€์ž…๋ณ„ ์ ‘๋ฏธ์‚ฌ(Suffix)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŠน์ • ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ ‘๋ฏธ์–ด: L(longํ˜•), U(unsigned intํ˜•), UL(unsigned longํ˜•), F(floatํ˜•), D(doubleํ˜•), M(decimalํ˜•)

ex) long l = 12322L; ์ด๋ฉด long ํ˜•์˜ ์‹ค์ˆ˜๋งŒ l ๋ณ€์ˆ˜์— ๋„ฃ๋Š”๋‹ค๋Š” ๋œป.


[6์ฐจ์‹œ - Null๊ณผ Nullable ํƒ€์ž…์˜ ์ดํ•ด]

NULL: ์–ด๋–ค ๋ณ€์ˆ˜๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์„ ๋•Œ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•. ์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์–ด๋–ค ๋ฐ์ดํ„ฐ๋„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ.

Null์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…(Reference ํƒ€์ž…)์ด ๋”ฐ๋กœ ์žˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ string ํƒ€์ž….

Null์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…(Value ํƒ€์ž…): int, DateTime...

 

Nullable: HasValue์™€ Value ์†์„ฑ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.  ๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉด true, ๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฉด false.

Nullable ํ˜•์‹์„ ์ ์šฉํ•˜๋ฉด ์ •์ˆ˜ ๊ฐ™์€ Value Type๋„ null ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, ๊ฐ’์ด ๋น„์–ด์žˆ๋Š” Nullable Type์˜ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.

"?" ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ.

 

ex) int? a = null; ์ด๋ ‡๊ฒŒ


[7์ฐจ์‹œ - Value Type๊ณผ Reference Type์˜ ์ดํ•ด]

- ๊ตฌ์กฐ์ฒด: Value Type(๊ฐ’ ํ˜•์‹: ๋ณ€์ˆ˜๊ฐ€ ๊ฐ’์„ ๋‹ด๋Š” ๋ฐ์ดํ„ฐ ํ˜•์‹)

- ํด๋ž˜์Šค: Reference Type(์ฐธ์กฐ ํ˜•์‹: ๋ณ€์ˆ˜๊ฐ€ ์‹ค์ œ ๊ฐ’ ๋Œ€์‹ ์— ๊ฐ’์ด ์žˆ๋Š” ์œ„์น˜๋ฅผ ๋‹ด๋Š” ๋ฐ์ดํ„ฐ ํ˜•์‹)

 

 

* ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ: Stack / Heap

1) Stack

๊ฐ’ ํ˜•์‹๊ณผ ๊ด€๋ จ

} ๋ธ”๋ก ๋์„ ๋งŒ๋‚˜๋ฉด ์ƒ์„ฑ๋œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ชจ๋‘ ์‚ฌ๋ผ์ง„๋‹ค. ์•Œ์•„์„œ ๋ฉ”๋ชจ๋ฆฌ ๋น„์›€.

} ๋ธ”๋ก์ด ๋๋‚˜๋„ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ณ  ์‹ถ์œผ๋ฉด Heap ์˜์—ญ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. 

 

2) Heap

์ฐธ์กฐ ํ˜•์‹๊ณผ ๊ด€๋ จ

๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•Œ์•„์„œ ์ง€์šฐ์ง€ ๋ชปํ•ด์„œ ๋ชจ๋‘ ์ฐธ์กฐ๋œ ํ›„ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ง€์›€.

Object ํ˜•์‹์˜ ๋ณ€์ˆ˜

 

cf) ์ฐธ์กฐ ํ˜•์‹์€ ํž™๊ณผ ์Šคํƒ์„ ํ•จ๊ป˜ ์ด์šฉํ•œ๋‹ค.

Heap ์˜์—ญ์— ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ 

Stack ์˜์—ญ์—๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” Heap์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋œ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด } ์„ ๋งŒ๋‚˜์„œ Stack ์˜์—ญ์€ ๋‚ ๋ผ๊ฐ€๋„ Heap ์˜์—ญ์€ ๋‚ ๋ผ๊ฐ€์ง€ ์•Š์•„์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ•  ์ˆ˜ ์žˆ๋‹ค.


22.07.15 (8~9์ฐจ์‹œ)

 

[8์ฐจ์‹œ - Boxing๊ณผ UnBoxing์˜ ๊ฐœ๋…]

 

* Object ํ˜•์‹

- C#์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ(int, string, float ๋“ฑ)๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” Object ํ˜•์‹์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

์ฆ‰, C#์˜ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์–ด๋–ค ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ผ๋„ Object ํ˜•์‹์— ๋‹ด์•„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ  ์žˆ๋‹ค.

 

ex)

object obj1 = 111;
object obj2 = 3.141212121212m; //decimal ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ object์— ๋„ฃ์€ ๊ฒƒ.
object obj3 = true;
object obj4 = "ํ•˜์ด Csharp!";

 

object obj1 = 111;

111์€ intํ˜• ๊ฐ’์ด๊ณ  obj1์€ objectํ˜•์˜ ์ฐธ์กฐํ˜•์‹์˜ ๋ณ€์ˆ˜์ด๋‹ค. ๋”ฐ๋ผ์„œ 111์ด๋ผ๋Š” ๊ฐ’์€ Heap ์— ์ €์žฅ๋œ๋‹ค. objectํ˜•์ด ์ฐธ์กฐํ˜•์‹์ด๋‹ˆ๊น.

์ด ๋•Œ, boxing ๊ธฐ๋Šฅ์„ ํ†ตํ•ด Heap์— ์ €์žฅ๋œ๋‹ค. ์ •์ˆ˜ ๊ทธ ์ž์ฒด๋Š” Heap ์— ์ €์žฅ๋  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ 111์ด Box์— ๋‹ด๊ฒจ์„œ Heap์— ์ €์žฅ๋˜๋Š” ๊ฒƒ.

UnBoxing์€ Boxing ๋˜์–ด ์žˆ๋Š” ๊ฐ’์„ ๊บผ๋‚ด ๊ฐ’ํ˜•์‹(Value Type) ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค.

 

ex)

int x = 111;
object obj1 = (object)x; // x์— ๋‹ด๊ฒจ์žˆ๋Š” ๊ฐ’์„ Boxingํ•ด์„œ Heap์— ์ €์žฅ.
int y = (int)obj1; // UnBoxing ํ›„์— Stack์— ์ €์žฅ.

[9์ฐจ์‹œ ๋ฐ์ดํ„ฐ ํ˜•๋ณ€ํ™˜(Type Conversion)]

: ์†Œ๊ด„ํ˜ธ๊ฐ€ () ์ปจ๋ฒ„์ „ ์—ฐ์‚ฐ์ž.

: ๋ฐ์ดํ„ฐ ํ˜•์‹ ๋ณ€ํ™˜์ด๋ž€. ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํ˜•์‹์— ์˜ฎ๊ธฐ๋Š” ๊ฒƒ.

 

* ํ˜•๋ณ€ํ™˜ Case. ํ˜•๋ณ€ํ™˜ํ•  ๋•Œ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ง‰์ž.

1) ํฌ๊ธฐ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ •์ˆ˜ํ˜• ์‚ฌ์ด์˜ ํ˜•๋ณ€ํ™˜

sbyte a = 127; 
Console.write(sbyte.MinValue); //-128
Console.write(" ~ ");
Console.writeLine(sbyte.MaxValue); //127
Console.WriteLine(a); // 127
int aa = (int)a;
Console.WriteLine(aa); // 127. ์ •์ƒ. sbyte ๋ฒ”์œ„๋‚ด์— ๋“ค์–ด์˜ด.
int x = 128;
Console.WriteLine(x); // 128
sbyte xx =(sbyte)x;
Console.WriteLine(xx); // -128. ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ. ์ž๋ฆฟ์ˆ˜๊ฐ€ ๋„˜์–ด๊ฐ€๋ฉฐ ๋ถ€ํ˜ธ๋น„ํŠธ์˜ ์˜ํ–ฅ์œผ๋กœ ์ƒ๊ธฐ๋Š” ํ˜„์ƒ.

 

2) ํฌ๊ธฐ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ถ€๋™์†Œ์ˆ˜์  ์‚ฌ์ด์˜ ํ˜•๋ณ€ํ™˜

float f = 79.6777f;
Console.WriteLine("f: {0}", f); //79.6777
double d = (double)f;
Console.WriteLine("d: {0}", d); //79.6776962280273

double dd = 0.11212121212f;
float ff = (float)dd;
Console.WriteLine("ff: {0}", ff); // 0.1121212. ๋ฐ์ดํ„ฐ ์†์‹ค๋‚ฌ์Œ.

์‹ญ์ง„์ˆ˜๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋ฐ”๊ฟ€ ๋•Œ, ์‹ญ์ง„์ˆ˜์˜ ์†Œ์ˆ˜์ ์ž๋ฆฌ๊ฐ€ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ์ด์ง„์ˆ˜๊ฐ€ ์†Œ์ˆ˜์  ๊ณ„์‚ฐ์ด ์™„๋ฒฝํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์ด ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๋‚œ ๊ฒƒ.

 

22.07.15 (10์ฐจ์‹œ)

 

3) ๋ถ€ํ˜ธ์žˆ๋Š” ์ •์ˆ˜ํ˜•๊ณผ ๋ถ€ํ˜ธ์—†๋Š” ์ •์ˆ˜ํ˜• ์‚ฌ์ด์˜ ํ˜•๋ณ€ํ™˜

byte(๋ถ€ํ˜ธ์—†์Œ), sbyte(๋ถ€ํ˜ธ์žˆ์Œ)

short(๋ถ€ํ˜ธ์žˆ์Œ), ushort(๋ถ€ํ˜ธ์—†์Œ)

int(๋ถ€ํ˜ธ์žˆ์Œ), uint(๋ถ€ํ˜ธ์—†์Œ)

 

byte(8๋น„ํŠธ): 0 ~ 255

sbyte(8๋น„ํŠธ): -127 ~ 128

 

ex)

๋ถ€ํ˜ธ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ,

0000 0000

0000 0001 = 1

0000 0011 = 3

0000 0111 = 7

0000 1111 = 15

...

1111 1111 = 255

 

๋ถ€ํ˜ธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ,

0111 1111 = 127

0000 0011 = 3

0000 0111 = 7

0000 1111 = 15

...

0111 1111 = 127

1111 1111 = -1

: 8์ž๋ฆฌ ๋น„ํŠธ์—์„œ ๋งจ ์ฒซ๋ฒˆ์งธ ๋น„ํŠธ๋Š” ๋ถ€ํ˜ธ๋น„ํŠธ์ด๋ฏ€๋กœ ์ตœ๋Œ€๊ฐ’์€ 2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0 = 127๊นŒ์ง€ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค.

: ์Œ์ˆ˜๋Š” 2์˜ ๋ณด์ˆ˜๋กœ ํ‘œํ˜„๋˜๊ธฐ ๋•Œ๋ฌธ์—  1111 1111 ์€ -127์ด ์•„๋‹ˆ๋ผ -1์ด๋‹ค. 

 

** 2์˜ ๋ณด์ˆ˜ํ‘œํ˜„๋ฒ•

0000 0001 ์˜ 2์˜ ๋ณด์ˆ˜๋ฅผ ๊ตฌํ•ด๋ณด์ž.

1) 0000 0001์„ ๋น„ํŠธ ๋ฐ˜์ „์‹œ์ผœ์ค€๋‹ค.
   1111 1110

2) ๋ฐ˜์ „๋œ ๋น„ํŠธ์— 1์„ ๋”ํ•œ๋‹ค.
       1111 1110
+ 0000 0001
ใ…กใ…กใ…กใ…กใ…กใ…กใ…ก
      1111 1111

=> 0000 0001์˜ 2์˜ ๋ณด์ˆ˜ = 1111 1111 => -1

 

2์˜ ๋ณด์ˆ˜๋กœ ํ‘œํ˜„์„ ์•ˆํ–ˆ๋‹ค๋ฉด,

  0000 0001

+  1111 1111

ใ…กใ…กใ…กใ…กใ…กใ…กใ…ก

  0000 0000 (1์ด ํ•œ์ž๋ฆฌ ๋„˜์–ด๊ฐ€์„œ 8์ž๋ฆฌ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— 0์ด ๋œ๋‹ค. ๊ฐ’์ด ๋‹ฌ๋ผ์ง.)

 

๋”ฐ๋ผ์„œ ๋ถ€ํ˜ธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ 1111 1111 ์€ -1 ์ด๋‹ค. 

 

4) ์‹ค์ˆ˜ํ˜•๊ณผ ์ •์ˆ˜ํ˜• ์‚ฌ์ด์˜ ํ˜•๋ณ€ํ™˜

float f = 4.72134f; // 4.72134
int aa = (int)f; // 4 (์†Œ์ˆ˜์ ์ž๋ฆฌ ๊ฑ ๋ฒ„๋ฆผ)

 

5) ๋ฌธ์ž์—ด๊ณผ ์ˆซ์ž ์‚ฌ์ด์˜ ํ˜•๋ณ€ํ™˜

๋ฌธ์ž์—ด -> ์ˆซ์ž: ToString() ์ด์šฉ

string str1 = "12222";
int num1 = (int)str1; // error!

int num2 = 12222;
string str2 = (string)num2; // error!

int num3 = 343434;
string str3 = num3.ToString(); // 343434. ok!

float num4 = 1212.1212f;
string str4 = num4.ToString(); // 1212.12. ok!

์ˆซ์ž -> ๋ฌธ์ž์—ด: Parse ์ด์šฉ

string str1 = "121212"
int num1 = int.Parse(str1); // 121212

string str2 = "1.1234562"
float num1 = float.Parse(str1); // 1.123456 -> ์ •์ˆ˜ํ˜• 1์ž๋ฆฌ ํฌํ•จํ•ด์„œ 7์ž๋ฆฌ ์ˆ˜๋งŒ ํ‘œํ˜„ ๊ฐ€๋Šฅ. ๊ทธ ๋’ค ์ˆซ์ž๋Š” ๋ฒ„๋ฆผ.

 

 

22.07.21 (11~13์ฐจ์‹œ)

[11์ฐจ์‹œ - ์ƒ์ˆ˜(Constants) / 12์ฐจ์‹œ - enumํ˜•์˜ ์ดํ•ด]

* ๋ณ€์ˆ˜: ๋‹ด๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ผ๋งˆ๋“ ์ง€ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„

* ์ƒ์ˆ˜: ๋‹ด๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ ˆ๋Œ€ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„. const ๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

* ์—ด๊ฑฐํ˜• ์ƒ์ˆ˜(enum)

enum ์—ด๊ฑฐํ˜•์‹๋ช… : ์ž๋ฃŒํ˜• {์ƒ์ˆ˜1, ์ƒ์ˆ˜2, ์ƒ์ˆ˜3}

 

์ •์ˆ˜ํ˜•(byte, sbyte, short, ushort, int, unit, long, char) ์ž๋ฃŒํ˜•๋งŒ ์‚ฌ์šฉ๋œ๋‹ค

์ž๋ฃŒํ˜•์„ ์ƒ๋žตํ–ˆ์„ ๊ฒฝ์šฐ int ํ˜•์œผ๋กœ ์„ค์ •๋œ๋‹ค.

 

ex)

enum City { Seoul, Incheon, Daegu, Daejeon }

 

์—ด๊ฑฐํ˜•์‹ ์•ˆ์— ์„ ์–ธ๋œ ์ƒ์ˆ˜๋“ค์ด ์–ด๋–ค ๊ฐ’๋„ ํ• ๋‹น ๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ์—๋Š”

์ฒซ๋ฒˆ์งธ ์ƒ์ˆ˜ ์š”์†Œ์—๋Š” 0์ด๋ผ๋Š” ๊ฐ’์ด ํ• ๋‹น๋จ. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋‹ค์Œ ์š”์†Œ์—๋Š” 1, 2, 3...

์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ Counting ํ•ด์„œ ํ• ๋‹น ํ•จ.

 

 

22.07.22(14์ฐจ์‹œ)

*๋น„ํŠธ์—ฐ์‚ฐ์ž(์‰ฌํ”„ํŠธ, &, |, ^)

1) ์‰ฌํ”„ํŠธ ์—ฐ์‚ฐ

int aa = 1, bb = 2, cc = 3;

Console.WriteLine("{0:x8}", aa);//0001. 16์ง„์ˆ˜ 8์ž๋ฆฌ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฒ•. x๊ฐ€ 16์ง„์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ„.
Console.WriteLine("{0:D3} 0x{0:X8}", aa);//001 0x00000001. (00000001 = 1 ์ด๋ผ์„œ)
Console.WriteLine("{0:D3} 0x{0:X8}", aa << 1);//002 0x00000002. (00000010 = 2 ๋ผ์„œ)
Console.WriteLine("{0:D3} 0x{0:X8}", aa << 5);//032 0x00000020.(00100000 = 32 ๋ผ์„œ)
Console.WriteLine("aa:{0} bb:{1} cc:{2}", aa, bb, cc); //ํŠน์ •ํ˜•์‹์— ๋งž์ถฐ ์ถœ๋ ฅํ•˜๋Š” ํฌ๋งทํŒ…(Formatting) ๊ธฐ๋Šฅ


int a = 100;
Console.WriteLine("{0:D}:", cc); //3
Console.WriteLine("{0:D5}", cc); //00003
Console.WriteLine("{0:D5}:", a); //00100

cf) 16์ง„์ˆ˜๋Š” 4๋น„ํŠธ ํ•„์š”. 0~15

 

 

22.07.22(15~19์ฐจ์‹œ)

*๋น„ํŠธ์—ฐ์‚ฐ

: &(AND์—ฐ์‚ฐ), |(OR์—ฐ์‚ฐ), ^(XOR์—ฐ์‚ฐ), ~(๋ณด์ˆ˜์—ฐ์‚ฐ)

int x = 9;
int y = 10;

Console.WriteLine(x & y); //8. 1001 ๊ณผ 1010 ์˜ AND ์—ฐ์‚ฐ
Console.WriteLine(x | y); //11. 1001 ๊ณผ 1010 ์˜ OR ์—ฐ์‚ฐ
Console.WriteLine(x ^ y); //3. 1001 ๊ณผ 1010 ์˜ XOR ์—ฐ์‚ฐ

int xx = 255;

Console.WriteLine("{0} 0x{0:x8} {1} 0x{1:x8}", xx, ~xx); // 255 0x000000FF -256 0xFFFFFF00

0 1111 1111(255)์„ ๋ณด์ˆ˜์—ฐ์‚ฐํ•˜๋ฉด 1 0000 0000(-256)์ด ๋œ๋‹ค.

์™œ 1 0000 0000์ด -255๊ฐ€ ์•„๋‹ˆ๋ผ -256์ผ๊นŒ?

 

๊ทธ ์ด์œ ๋Š” 256์ธ 1 0000 0000 ์˜ 2์˜ ๋ณด์ˆ˜๋ฅผ ๊ตฌํ•ด๋ณด๋ฉด ์•Œ ์ˆ˜ ์ž‡๊ฒŸ์ง€.

 

<2์˜ ๋ณด์ˆ˜ ๊ตฌํ•˜๋Š” ๋ฒ•>

๋จผ์ € 256์ธ 1 0000 0000 ๋ฅผ ๋น„ํŠธ๋ฐ˜์ „ ์‹œ์ผœ์„œ 1์˜ ๋ณด์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. => 0 11111 11111

๊ทธ๋ฆฌ๊ณ  0 11111 11111 ์— 1์„ ๋”ํ•œ๋‹ค. => 1 0000 0000.

 

์ฆ‰, 1 0000 0000(256)์˜ 2์˜ ๋ณด์ˆ˜๊ฐ€ 1 0000 0000 ์ด๋ฏ€๋กœ 1 0000 0000์€ 10์ง„์ˆ˜ ํ‘œํ˜„์—์„œ -256์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

[18์ฐจ์‹œ - ๋ฐฐ์—ด๊ณผ foreach๋ฌธ]

* ๋ฐฐ์—ด(Array): ์ผ๋ จ์˜ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์š”์†Œ๋“ค๋กœ ๊ตฌ์„ฑ๋œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ

 

1) 1์ฐจ์› ๋ฐฐ์—ด ์„ ์–ธ

๋ฐ์ดํ„ฐํ˜•์‹[ ] ๋ฐฐ์—ด์ด๋ฆ„ = new ๋ฐ์ดํ„ฐํ˜•์‹[๋ฐฐ์—ด์˜ํฌ๊ธฐ];

int arr[] = new int[5];

2) 2์ฐจ์› ๋ฐฐ์—ด ์„ ์–ธ

๋ฐ์ดํ„ฐํ˜•์‹[ , ] ๋ฐฐ์—ด์ด๋ฆ„ = new ๋ฐ์ดํ„ฐํ˜•์‹ [2์ฐจ์›ํฌ๊ธฐ, 1์ฐจ์›ํฌ๊ธฐ]

int[,] arr = {{1,10,100}, {5,50,500}};

 

* GetLength(): ๋ฐฐ์—ด์—์„œ ์ง€์ •ํ•œ ์ฐจ์›์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ

int[,] arr = {{1,10,100},{5,50,500}};

for(int i = 0; i<arr.GetLength(0); i++){
	for(int j = 0; j<arr.GetLength(1); j++){
    
    }
}

: [,] ์—์„œ ์•ž์ด 2์ฐจ์› ๊ธธ์ด. ๋’ค๊ฐ€ 1์ฐจ์› ๊ธธ์ด ์ด๋ฏ€๋กœ ํ—น, ์—ด ๊ธธ์ด๋กœ ๋ณด๋ฉด ๋œ๋‹ค.

 

* foreach๋ฌธ

foreach(๋ฐ์ดํ„ฐํ˜•์‹ ๋ณ€์ˆ˜๋ช… in ๋ฐฐ์—ด/์ปฌ๋ ‰์…˜)
       ๋ฐ˜๋ณต์ฝ”๋“œ

 

 

22.07.27(20~25์ฐจ์‹œ) ๋!

3) ๊ฐ€๋ณ€๋ฐฐ์—ด(Jagged Array) ์„ ์–ธ

๋ฐ์ดํ„ฐ ํ˜•์‹[][] ๋ฐฐ์—ด์ด๋ฆ„ = new ๋ฐ์ดํ„ฐํ˜•์‹[๊ฐ€๋ณ€๋ฐฐ์—ด์˜ ํฌ๊ธฐ][];

****๊ฐ€๋ณ€๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ํ•„์ˆ˜์ ์œผ๋กœ ๋“ค์–ด๊ฐ€์•ผ ํ•จ !

 

์˜ˆ์‹œ)

int[][] arr = new int[3][];
arr[0] = new int[5]{1,2,3,4,5};
arr[1] = new int[3]{11,22,33};
arr[2] = new int[2]{20,30};

int[][] arr2 = new int[2][];
arr2[0] = new int[]{1,22,333,4444,55555};

//ํ–‰์€ ์„ค์ •ํ•ด๋†“๊ณ  ์—ด์„ ๋ง˜๋Œ€๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

int[][] jArr = new int[3][];
jArr[0] = new int[4] {1, 2, 3, 4};
jArr[1] = new int[] {10, 11, 12, 22, 33, 44};
jArr[2] = new int[] {20, 30};

foreach (int[] arr in jArr){
	Console.WriteLine("Length: {0}, ", arr.Length); //4, 6, 2 ๋‚˜์˜ด
}

 

[22์ฐจ์‹œ - ์ฐธ์กฐ์— ์˜ํ•œ ๋งค๊ฐœ ๋ณ€์ˆ˜ ์ „๋‹ฌ]

1) ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•  ๋•Œ

: a, b ๋ฅผ ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•˜๋ฉด a, b ๋ณ€์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ x, y๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ ๋‹ค. ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ํ• ๋‹น๋œ๋‹ค.

 

2) ์ฐธ์กฐ๋กœ ์ „๋‹ฌํ•  ๋•Œ: ref ํ‚ค์›Œ๋“œ

static void Main(string[] args){
	int aa = 100;
	int bb = 111;
    
    Console.WriteLine("aa: {0}, bb: {1}", aa, bb); // 100, 111
    Swap(ref aa, ref bb);
    Console.WriteLine("aa: {0}, bb: {1}", aa, bb); // 111, 100
}

static void Swap(ref int x, ref int y){
	int temp = x;
    x = y;
    y = temp;
}

: x, y ๊ฐ€ aa, bb ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

 

 

[23์ฐจ์‹œ - ์˜ค๋ฒ„๋กœ๋”ฉ, ํŒŒ๋ผ๋ฏธํ„ฐ ๋””ํด๋“œ ๊ฐ’ ์ฃผ๊ธฐ]

* ๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ: ๊ฐ™์€ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์ธ๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜(๋งค๊ฐœ๋ณ€์ˆ˜ ์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…)๋ฅผ ๋‹ฌ๋ฆฌ ์„ ์–ธํ•ด์„œ ๋งŒ๋“œ๋Š” ๊ฒƒ.

* ํŒŒ๋ผ๋ฏธํ„ฐ์— ๊ธฐ๋ณธ๊ฐ’ ์ ์šฉํ•˜๊ธฐ: void aaa(int a = 0, int b = 1){ ... }

 

[24์ฐจ์‹œ - ๋กœ์ปฌํ•จ์ˆ˜]

* var ํ‚ค์›Œ๋“œ: ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ์•Œ์•„์„œ C#์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ง€์ •ํ•œ๋‹ค.

 

๋กœ์ปฌํ•จ์ˆ˜: ๋ฉ”์†Œ๋“œ ์•ˆ์—์„œ ์„ ์–ธ๋œ ํŠน๋ณ„ ํ•จ์ˆ˜. ๋ฉ”์†Œ๋“œ ์•ˆ์—์„œ ์„ ์–ธ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํด๋ž˜์Šค ๋ฉค๋ฒ„๊ฐ€ ์•„๋‹ˆ๋‹ค. ํ•จ์ˆ˜๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

class Program{
	static string ToLowerStar(string str){
        var arr = str.ToCharArray();
        for(int i = 0; i<arr.Length; i++){
        	arr[i] = ToLowerChar(i);
        }
    }
    char ToLowerChar(int i){
    	if(arr[i] < 65 || arr[i] > 90)
        	return arr[i];
        else
        	return (char){arr[i] + 32);
    }
    return new string(arr);
}

 

[25์ฐจ์‹œ - ํด๋ž˜์Šค์™€ ๊ฐ์ฒด]

OOP: Object Oriented Programing

 

*๊ฐ์ฒด๋Š” ์†์„ฑ(๋ช…์‚ฌ), ๊ธฐ๋Šฅ(๋™์‚ฌ)์„ ๊ฐ–๊ณ  ํ‘œํ˜„ํ•œ๋‹ค. -> ๊ฐ์ฒด: ํด๋ž˜์Šค. ์†์„ฑ: ๋ณ€์ˆ˜, ๊ธฐ๋Šฅ: ํ•จ์ˆ˜...

 

728x90