C# - μ–Έμ–΄ ꡬ쑰

2020. 9. 24. 15:31ㆍ전곡 κ³Όλͺ©/μœˆλ„μš° ν”„λ‘œκ·Έλž˜λ°

C# - μ–Έμ–΄ κ΅¬μ‘°

 

이번 μž₯μ—μ„œλŠ” C#의 언어ꡬ쑰(μ–΄νœ˜ ꡬ쑰, μžλ£Œν˜•, μ—°μ‚°μž, ν˜• λ³€ν™˜)에 λŒ€ν•΄μ„œ μ•Œμ•„λ³Ό 것이닀.

 

μ˜¬λ°”λ₯Έ μž¬λ£Œκ°€ μ“°μ—¬μ•Ό μ™„μ„±ν’ˆμ΄ λ°”λ₯΄κ²Œ λ‚˜μ˜¬ 수 μžˆλ‹€. ν™•μ‹€ν•˜κ²Œ μ•Œμ•„λ³΄λ„λ‘ ν•˜μž.

 

 

μ–΄νœ˜ ꡬ쑰

 

μ–΄νœ˜μ˜ ν˜•νƒœλŠ” 두 가지가 μžˆλ‹€.

 

νŠΉμˆ˜ν˜•νƒœμ™€ μΌλ°˜ν˜•νƒœ

 

νŠΉμˆ˜ν˜•νƒœλŠ” 지정어(while), μ—°μ‚°μž(++), κ΅¬λΆ„μž( [] ) 등이 있고, 일반 ν˜•νƒœλŠ” λͺ…μΉ­(sum), λ¦¬ν„°λŸ΄(523)등이 μžˆλ‹€.

 

μ§€μ •μ–΄λŠ” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ μ„€κ³„μ‹œ κ·Έ κΈ°λŠ₯κ³Ό μš©λ„κ°€ 이미 μ •μ˜λ˜μ–΄ μžˆλŠ” 단어이닀.

new, byte와 같은 것듀은 μš°λ¦¬κ°€ 직접 μ •μ˜ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€. 

 

μ—°μ‚°μžμ™€ κ΅¬λΆ„μžλŠ” λ„˜μ–΄κ°€κ³  λͺ…칭을 μ‚΄νŽ΄λ³΄μž.

 

λͺ…칭은 자료의 ν•­λͺ©(λ³€μˆ˜, μƒμˆ˜)듀을 μ‹λ³„ν•˜κΈ° μœ„ν•˜μ—¬ λΆ™μ΄λŠ” 이름이닀.

 

예λ₯Ό λ“€μ–΄ sumν•¨μˆ˜μ™€ 같은 것듀을 λͺ…칭이라고 ν•œλ‹€.

이 λͺ…μΉ­μ—λŠ” κ·œμΉ™μ΄ μžˆλ‹€.

1) 문자둜 μ‹œμž‘

2) λŒ€μ†Œλ¬Έμž ꡬ뢄

3) '@'기호 뢙이면 지정어λ₯Ό λͺ…μΉ­μœΌλ‘œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.

 

3λ²ˆμ„ μ‚΄νŽ΄λ³΄λ©΄

int @int = 10; 으둜 ν–ˆμ„ λ•Œ intνƒ€μž…μ˜ intλΌλŠ” λ³€μˆ˜κ°€ 10을 λ‹΄κ²Œ λœλ‹€.

λ°˜λ©΄μ— int i, @i;둜 ν–ˆμ„ 경우 intνƒ€μž…μ˜ iλ₯Ό λ§Œλ“€κ³  iλ₯Ό λͺ…μΉ­μœΌλ‘œ ν•  수 μ—†κ²Œλœλ‹€.

 

 

λ‹€μŒμ€ λ¦¬ν„°λŸ΄μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž.

 

λ¦¬ν„°λŸ΄ μƒμˆ˜μ—λŠ” μ •μˆ˜ν˜•, μ‹€μˆ˜ν˜•, λΆ€μšΈν˜•, 문자, 슀트링, 객체 μ°Έμ‘°κ°€ μžˆλ‹€.

 

μ’…λ₯˜κ°€ λ§Žμ•„μ„œ μ–΄λ €μ›Œλ³΄μΌμˆ˜λ„ μžˆλŠ”λ° 천천히 μ•Œμ•„λ³΄λ©΄ μ‰½κ²Œ 이해할 수 μžˆλ‹€.

 

μ •μˆ˜ν˜•

-10μ§„μˆ˜, 16μ§„μˆ˜. C#μ—μ„œλŠ” 8μ§„μˆ˜λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€. 

-μ •μˆ˜ν˜•μ˜ λΉ„νŠΈ μˆ˜λŠ” κΈ°λ³Έμ μœΌλ‘œλŠ” 4byte = 32bitλ₯Ό μ§€μ›ν•˜κ³ , longν˜•μ€ 64bitλ₯Ό μ§€μ›ν•œλ‹€.

 

μ‹€μˆ˜ν˜•

- floatκ³Ό double은 κ³Όν•™ 연산을 ν•  λ•Œ, decimal은 νšŒκ³„ 연산을 ν•  λ•Œ 쓰인닀.

- float μ‚¬μš©μ‹œμ—λŠ” μ ‘λ―Έμ–΄ -f, -Fκ°€ decimal은 -m, -M이 λΆ™λŠ”λ‹€.

 

λΆ€μšΈν˜• μƒμˆ˜

- false, trueλ₯Ό λ‹΄κ³  있으며 μ΄λŠ” 0κ³Ό 1둜 λ³€ν™˜λ˜μ§€ μ•ŠλŠ”λ‹€.(Cμ—μ„œλŠ” κ°€λŠ₯함)

 

문자 μƒμˆ˜

- 'a' , 'A'와 같은 것듀이닀.

- 문자 μƒμˆ˜μ—λŠ” escaple sequenceκ°€ μ‘΄μž¬ν•˜λŠ”λ° μ΄λŠ” \', \", \0같은 것듀이닀. μ—¬κΈ°μ„œ \ν‘œμ‹œλŠ” μŠ¬λž˜μ‹œκ°€ λ°˜λŒ€λͺ¨μ–‘μœΌλ‘œ 된 것이닀.

 

슀트링 μƒμˆ˜

- "hello world"와 같이 이쀑 μΈμš©λΆ€ν˜Έλ₯Ό 달고 μžˆλ‹€.

- μœ„μ™€ 같은 λ¬Έμžμ—΄λ“€μ€ String클래슀의 객체둜 취급이 λœλ‹€.

- @"hello \t world"λ₯Ό μ‚¬μš©ν•˜λ©΄ \tκ°€ 문자둜 μ·¨κΈ‰λœλ‹€. @κ°€ λΉ μ Έμžˆλ‹€λ©΄ \tλŠ” νƒ­λ§ŒνΌ λ„μ›Œμ§€λŠ”λ° 말이닀.

 

객체 μ°Έμ‘° λ¦¬ν„°λŸ΄

- μ΄ˆκΈ°ν™”ν•  λ•Œ μ‚¬μš©ν•œλ‹€.

- 널 μƒνƒœλΌλ©΄ 아무 객체도 가리킀지 μ•ŠλŠ” μƒνƒœμ΄λ‹€.

 

 

μžλ£Œν˜•

 

μžλ£Œν˜•μ€ κ°’ν˜•κ³Ό μ°Έμ‘°ν˜• 두 κ°€μ§€λ‘œ λ‚˜λˆ μ§„λ‹€.

κ°’ν˜•μ€ 말 κ·ΈλŒ€λ‘œ 값을 가지고 μžˆλŠ” 것이며, μ°Έμ‘°ν˜•μ€ ν΄λž˜μŠ€λΌλ“ μ§€, 배열이라든지 무언가λ₯Ό μ°Έμ‘°ν•˜κ³  μžˆλŠ” ν˜•μ΄λ‹€.

 

κ°’ν˜•μ—μ„œμ˜ μ •μˆ˜μ˜ λ²”μœ„

 

C# μžλ£Œν˜• 크기 μ΅œμ†Œκ°’ μ΅œλŒ€κ°’
Sbyte 8bit -128 127
short 16bit -32768 32767
int 32bit -2147483648 2147483647
long 64bit -9223372036854775808 9223372036854775807
byte 8bit 0 255
ushort 16bit 65535
uint 32bit 0 int의 μ–‘μˆ˜*2
ulong 64bit 0 long의 μ–‘μˆ˜*2

 

κ°’ν˜•μ—μ„œμ˜ μ‹€μˆ˜μ˜ λ²”μœ„

 

float 4byte -3.4E38 ~ 3.4E38
double 8byte -1.7E308 ~ 1.7E308

 

λ°°μ—΄ν˜•

- 같은 ν˜•μ˜ μ—¬λŸ¬ 개의 값을 μ €μž₯

- μˆœμ„œκ°€ μžˆλŠ” μ›μ†Œλ“€μ˜ λͺ¨μž„

 

λ°°μ—΄ μ‚¬μš© 방법

1) int[] vectort;

2) vectort = new int[3];

 

λ§ˆμ§€λ§‰μœΌλ‘œ 배열에 λŒ€ν•œ 예제 ν•˜λ‚˜λ₯Ό 풀어보고 λ§ˆμΉ˜κ² λ‹€.

 

μ‹€ν–‰ κ²°κ³Όλ₯Ό

0 1 2

4 5 6 7

10 11 12 13 14 둜 λ‚˜μ˜€κ²Œ ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•΄λ³΄μž.

 

static void Main(string[] args)
        {
            int[][] arrayofarray = new int[3][];
            int i, j;

            for (i=0; i<arrayofarray.Length; i++)
            {
                arrayofarray[i] = new int[i + 3];
            }
            for (i=0; i<arrayofarray.Length; i++)
            {
                for (j=0; j<arrayofarray[i].Length; j++)
                {
                    arrayofarray[i][j] = i * arrayofarray[i].Length + j;

                }
            }
            for (i=0; i<arrayofarray.Length; i++)
            {
                for (j=0; j<arrayofarray[i].Length; j++)
                {
                    Console.Write(" " + arrayofarray[i][j]);

                }
                Console.WriteLine();
            }
            
        }

 

이런 문제λ₯Ό μ ‘ν–ˆμ„ λ•Œ λ¨Όμ € 생각해보아야 ν•  것은 ν–‰μ˜ 개수, μ—΄μ˜ 개수, ν–‰κ³Ό μ—΄ μ‚¬μ΄μ™€μ˜ 관계λ₯Ό 보면 λœλ‹€.

행이 1μ”© 증가할 수둝 열이 1κ°œμ”© λŠ˜μ–΄λ‚¬κΈ° λ•Œλ¬Έμ— new int[i+3]을 μ£Όμ—ˆκ³ , 수λ₯Ό λŒ€μž…ν•˜λŠ” 것은 μ—΄μ˜ κ°œμˆ˜μ™€ ν–‰μ˜ λ²ˆν˜Έμ— 따라 관계λ₯Ό μ§€μ–΄μ£Όμ—ˆλ‹€. 

 

그리고 λ§ˆμ§€λ§‰μœΌλ‘œ 좜λ ₯을 ν•΄μ£Όμ—ˆλ‹€.