반응형
자 이제 문법 해보자.. 
문법 이거 후딱 한번 보고 지나가야 한다. 하나 잡고 시간끌다간 그전에 봤던거 다 까먹는다.. 그러니 후딱 보고 다시 보고, 또 보고... 한번 보고 숙련되었다면, 넌 천재다.. 프로그래머 따위 하지마라.. 그리 좋은 머리로 왜 이거하냐..?

C#도 1.0, 2.0, 3.0까지 업그레이드?가 되어 왔다. 각각의 버젼업이 되면서 변화들이 있었다고 하지만, 우선 기초 문법은 그냥 왔다갔다 하면서 생각나는데로 지껄일까 한다. 

C#이 아무리 C/C++의 포인터를 사용하지 않는다 하지만, 분명 포인터 개념이 존재하고 있다. 그건 자바에서도 마찬가지 인것으로 보여진다. 단지 *, -> 이런 연산자를 사용하지 않고, c/c++처럼 폭 넓은 범위에 사용되지 않는것 뿐일 것이다.

C#의 데이터 타입은 크게 call by value와 call by reference로 나눌 수 있다. 뭔 소리냐면? 내가 너한테 소포를 보냈는데, 등기로 보내서 꼭 너가 받아야만 하는게 call by value고, 그냥 너네집 우체통에 넣고 가는게 call by reference다. 이것도 어려운가? value는 너가 중요한거고, reference는 집주소가 중요한거야.. 그래도 이해가 안가? 그럼 애쓰지마라.. 하다 보면 이해 될꺼다.. 그래도 안되면 ㅡㅡ? 포기해라..
 
좀 정확히 써주자면, 영문표현 그대로 call by value는 호출시 값이 나오는 거고, call by reference는 참조가 나오는 것인데, 여기서 참조는 편하게 주소라고 생각해도 된다. 난 call by.. 어쩌고 라고 했지만, 이걸 값타입과 참조타입이라고 부르기도 하더라. 뭐 부르는 사람 마음이겠지..

C#에서 둘의 가장 큰 차이점 중 하나는 선언시 인스턴스 생성 여부야.. 인스턴스 이러니까 어렵지? 선언했을때, 메모리에 자리가 잡히느냐 안잡히느냐 그 차이란 소리야. 쉽게 이야기 하자면, 값타입은 '길동이네'라는 주소를 받았을때, 그 주소에 길동이네 집이 있는거야.. 참조타입은 '길동이네'이긴한데, 아직 집을 안지어놓은거야.. 값타입일때 길동이네 가서 '길동아 놀자'하면 길동이가 놀아주겠지만, 참조타입에서 '길동아 놀자'그러면 지나가던 행인이 '저거 미친 x 아냐?'그러겠지? 그게 access violation이야..

그런데, 우리가 보통 사용하는 기본타입 (int, char...)은 다 값타입이야.. 여기서 약간 신경써야 할게, struct는 값타입이고, class는 참조 타입이라는 거야..

Reserved Word

(C# 언어에서 정의한 명칭)

Aliased Type

(.NET 시스템에서 사용하는 명칭)

Sbyte

System.SByte

Byte

System.Byte

Short

System.Int16

ushort

System.UInt16

Int

System.Int32

Uint

System.UInt32

Long

System.Int64

Ulong

System.UInt64

Char

System.Char

Float

System.Single

double

System.Double

Bool

System.Boolean

decimal

System.Decimal


뭐 위와같은 녀석들이 있다니 유심히 봐둬.. 다 익숙한데 나두 decimal이란 녀석은 많이 생소한 녀석이야.. 그래서 MSDN을 뒤져봤더니 이넘은 무려 128비트짜리 데이터 타입이라고 나오더군.. 어디다 써먹어야 할까..? 암튼 엄청난 계산을 하기 위해 사용되는 녀석임엔 틀림없지만, 많이 사용 안하게 될것 같은 예감이...참고로 이녀석은 float같은 녀석을 0.0f같이 표현했듯, 이녀석의 접미사는 0.0m이야..


그리고 C#은 strong-type language야.. 뭔소리냐면, int a로 선언해 놓고 'c'같은걸 넣는걸 절대로 용납안하겠다는 까칠한 녀석이란 소리지.. 안그런 녀석도 있냐고? VB해봐.. VB.net으로 해놓구 안된다고 그러면 콱~~!! 알지..?


마지막으로 C# 키워드나 좀 뿌려놓고 이번 주저리도 마무리..

C# 프로그램 키워드

abstract

as

base

bool

break

byte

case

catch

char

checked

class

const

continue

decimal

default

delegate

do

double

else

enum

event

explicit

extern

false

finally

fixed

float

for

foreach

goto

if

implicit

In

Int

Interface

Internal

Is

lock

long

namespace

new

null

object

operator

out

override

params

private

protected

public

readonly      

ref

return

sbyte

sealed

short

sizeof

stackalloc

static

string

struct

switch

this

throw

true

try

typeof

uint

ulong

unchecked

unsafe

ushort

using

virtual

void

while







잘 봐둬.. 이건 변수 이름으로 못쓰는 것들이니까.. 뭐 새로운것이 많다기 보단 많이 봐왔던 거니까 그냥 한번 훑고 지나가도 큰 무리 없을 것 같아..


반응형

+ Recent posts