'게임개발공부/C#공부'에 해당되는 글 25건

  1. 2013.12.16 C#에서 문자열형은?
  2. 2013.12.16 @의 의미가 대체 뭐지? C#에서 레퍼런스와 포인터란? 막긁어와!
  3. 2013.12.16 객체형????
  4. 2013.12.16 C#의 리터럴
  5. 2013.12.15 ToString("")
String ---------------------------------------------------------------------------------------------------------------------------------------

문자열은 항상 골치다. 하지만 잘쓰면 문자란 일반적인 C++언더보다 현실세계에 근접하므로 직관적인 표현이 가능하다.


string s = ""; <-문자열 형임을 나타내는 부호


방식으로 초기화가 가능하며 문자열(string)은 프로그램에서 가장 많이 쓰이는 데이타 타입중이 하나이다. C#의 키워드 string은 .NET의 System.String 클래스와 동일하며, String클래스의 모든 메서드, 프로퍼티를 사용한다. 예를 들어 일정 문자열 부분만 뽑아내는 .Substring()메서드, 문자열 길이를 구하는 .Length 프로퍼티 등등을 사용할 수 있다.


System.String     클래스의 인스턴스 메서드

Clone                클래스 참조 반환

CompareTo        특정 객체와 비교

CopyTo         객체 복사

EndsWith         특정 문자열로 끝나는지를 확인

Equals         비교 연산

GetEnumerator IEnumerator 인터페이스 반환

GetHashCode 해쉬 코드 반환

GetType         형식 정보 반환

GetTypeCode TypeCode 반환

IndexOf         문자열 검색

IndexOfAny         유니코드 문자열에서 먼저 나오는 문자 반환

Insert                 문자열 삽입

LastIndexOf IndexOf를 뒤에서부터 수행

LastIndexOfAny IndexOfAny를 뒤에서부터 수행

PadLeft         문자열에서 남아있는 왼쪽을 빈 공백으로 채움

PadRight         문자열에서 남아있는 오른쪽을 빈 공백으로 채움

Remove         지정 개수의 문자 제거

Replace         문자열 치환

Split                 문자열 분리하여 배열로 반환

StartsWith         특정 문자로 시작하는지를 확인

Substring         문자열 추출

ToCharArray 문자 배열로 변환

ToLower         소문자로 변환

ToString         객체를 나타내는 문자열 반환

ToUpper         대문자로 변환

Trim                 양쪽 공백 없앰

TrimEnd         문자열 끝 부분의 공백 없앰

TrimStart         문자열 시작 부분의 공백 없앰



String은 변경이 불가능하다 ----------------------------------------------------------------------------------------------------------------------

 C# 문자열은 Immutable 즉 한번 문자열이 설정되면, 다시 변경할 수 없다. 예를 들어, s="C#" 이라고 한 후 다시 s="F#"이라고 실행하면, .NET 시스템은 기존의 문자열 클래스에서 새로운 객체를 생성하여 "F#"이라는 데이타로 초기화 한 후 이를 변수명 s1에 할당한다. 즉, 내부적으로는 전혀 다른 메모리를 갖는 객체를 가리키는 것이다. 


즉 빈번한 문자열의 변경은 실제로 우리가 생각하는 변경이 아니로 새로운 문자열 객체를 선언하고 할당하는 것과 같다. 큰 연산을 소비한다고 볼 수 있으니 자제해야 할듯 하다.

(나중에 보니 문자열 빌더를 통하는 방법이 있다고 한다 한번 봐둬야지.)


StringBuilder --------------------------------------------------------------------------------------------------------------------------------


StringBuilder 는 내부적으로 문자열의 추가삭제를 위해서 동착하는 작업들이 준비되어있는 클래스라고 보면 된다. string처럼 문자열을 곧바로 재할당하거나 하지 않고 내부적으로 가지고 있는 capacity값을 증가시켜 마치 vector자료구조처럼 동착하는 것으로 보인다.(내부적인 동작에 대해서는 명확하게 파악하지 못했다.)

할때마다 새로운 메모리를 할당하는 것과 달리. 충반한 메모리를 할당하고 거기에 덧붙이는 식으로 문자열을 추가하므로 일반적인 string대입보다 문자열 수정에 있어서는 빠르게 사용이 가능하다.

하지만 마치 변수처럼 사용하는 string 클래스보다는 클래스와 비슷하게 초기화등이 가능하기 때문에 사용법은 조금더 까다로와 보인다.


StringBuilder sb = new StringBuilder("abcdef"); -> 마치 클래스와 같은 초기화 방식이다.



'게임개발공부 > C#공부' 카테고리의 다른 글

배열과 배열메소드  (0) 2013.12.19
C#공부에 대해서...  (0) 2013.12.18
@의 의미가 대체 뭐지? C#에서 레퍼런스와 포인터란? 막긁어와!  (0) 2013.12.16
객체형????  (0) 2013.12.16
C#의 리터럴  (0) 2013.12.16
Posted by JJOREG
C#에서 Reference와 Pointer는 전혀 다르고 '비슷한 것'도 아닙니다. 
C/C++ 프로그래머를 위해 스마트 포인터 정도로 표현하기도 합니다만, 
전혀 다릅니다. 

localText는 지역 변수로 할당한 TextBox를 사용하기 위한 이름입니다. 
내부적으로 생각하신 참조는 일어나지 않습니다. 생성자 함수 전체적으로 
보면, 폼 컨트롤 컬렉터에 참조된 객체이므로, localText는 대리자 
성격이 강하며 그러므로 개비지 컬럭터는 호출될 필요도 없습니다. 

개비지 컬렉터는 폼 컨트롤 컬렉터(myForm.Controls)가 소멸할 때 
만들어진 TextBox에 대해 호출됩니다. 

임시 지역 변수의 개비지 컬렉터 호출은 함수 내에서 할당해서 함수 
내에서 사용하다가 소멸할 때 불려집니다. 

결국엔 지역 변수와 클래스 변수의 차이점입니다. 
http://msdn2.micros...csharp/aa336809.aspx
 에 가셔서 
C# 언어 사양 문서를 받아서 읽어보시면 좋겠네요.


C# 언어 참조


C# 키워드 

키워드는 컴파일러에 대해 특별한 의미를 갖는, 미리 정의되어 있는 예약된 식별자입니다. 키워드는 프로그램에서 식별자로 사용되려면 접두어로 @을 포함해야 합니다. 예를 들어 '@if'는 올바른 식별자이지만 if는 키워드이므로 올바른 식별자가 아닙니다.

C# 연산자 

C#은 식에서 수행할 연산을 지정하는 기호인 연산자를 다양하게 제공합니다. C#에는 일반적인 산술 및 논리 연산자와 그외 다양한 종류의 연산자가 미리 정의되어 있습니다. 또한 사용자가 다양한 연산자를 오버로드하여 사용자 정의 형식에 적용할 때 해당 연산자의 의미를 변경할 수 있습니다.

C# 전처리기 지시문

C#의 조건부 컴파일 지시문에 대해 알아봅니다.

C# 언어 기능

배열, Main 메서드, 속성, 인덱서, 전달 매개 변수 및 기타 언어 기능에 대해 알아봅니다.

C# 언어 자습서

C# 자습서를 통해 언어의 기본 사항에 대한 개요를 살펴보고 중요한 언어 기능을 확인합니다. 각 자습서에는 하나 이상의 샘플 프로그램이 포함되어 있습니다. 자습서에는 샘플 코드에 대한 설명뿐만 아니라 추가적인 배경 정보도 제공됩니다. 또한 샘플 프로그램을 다운로드하고 실행할 수 있는 해당 샘플 항목에 대한 링크도 제공합니다.

'게임개발공부 > C#공부' 카테고리의 다른 글

C#공부에 대해서...  (0) 2013.12.18
C#에서 문자열형은?  (0) 2013.12.16
객체형????  (0) 2013.12.16
C#의 리터럴  (0) 2013.12.16
ToString("")  (0) 2013.12.15
Posted by JJOREG

객체형 ??? ----------------------------------------------------------------------------------------------------------------------------

C#에는 큰의미로 봐서 다음과 같은 항목들이 존재한다.


값형

참조형


참조형은 말그대로 참조하는 형태를 의미한다. C++에서 익히 들어왔던  Call by Value & Call By Reference 와 비슷하다고 보고 있다.(이해가 좀더 완벽해지면 바뀔 수도 있지만.)

이중 참조형은 다음과 같은 분류로 나뉜다.


클래스형

- 객체형 -> 요녀석이 뭐지?

- 문자열형 -> 문자열주소와 같은 개념으로 보고 있다.

배열형 -> 말그대로 배열

델리게이트형 -> 함수로의 포인터


int a = 0;

object b; -> 이녀석이 객체형이다. .net형으로는 system.object가 된다.

b = a;


이 형에는 말그대로 무엇이든 대입할수가 있다고 하며 이렇게 대입하여 객체형을 값형으로 (object형에 int를 대입함으로서) 변형시키는 것을 박스(boxing)라고 한다.

이게뭐지????? 라고 하니


object형은 메모리상 어디엔가 영역을 확보하고 있고(힙? 코드? 스택? 데이터?) 그 참조가 object에 저장된다.(힙에다가 저장한다고 합니다. 스마트포인터 같은 느낌인가?)


반대로


int a = 0;

object b; 

a = (int)b;  ->역시 형변환은 필요한가?


이와같이 참조형으로 부터 값형으로 변환시키는 것을 박스화 해제(unboxing)라고 한다.


이녀석 실수할 거리가 많아보인다. 예제로 나온경우에는


long l = 0;

object o; 

int i;


o = l;

i = (int)o;  -> 롱형을 먼저 대입하고 그걸 인트형에 대입하니 오류.


object o = 1;

int i ;

i = (int)o; -> 값형의 데이터를 object에 대입했지만 참조형의 데이터도 object형에 대입할 수 있다. 이 경우는, 박스화라고는 하지 않는다.








'게임개발공부 > C#공부' 카테고리의 다른 글

C#공부에 대해서...  (0) 2013.12.18
C#에서 문자열형은?  (0) 2013.12.16
@의 의미가 대체 뭐지? C#에서 레퍼런스와 포인터란? 막긁어와!  (0) 2013.12.16
C#의 리터럴  (0) 2013.12.16
ToString("")  (0) 2013.12.15
Posted by JJOREG

C# 리터럴 데이타 

C#에서 리터럴(Literal) 데이타를 사용할 때, 별도의 표시가 없는 경우 C# 컴파일러는 int, double, char, string, bool 데이타 타입을 기본 데이타 타입으로 사용한다. 따라서, 특정 데이타 타입을 지정하고 싶으면, 리터럴 데이타뒤에 1~2자의 타입 지정 문자(Suffix)를 추가해야 한다. Suffix는 대소문자 구분이 없다. 즉 decimal을 나타내는 M은 1024M 이나 1024m처럼 사용가능하다. 아래는 디폴트 리터럴 타입과 각 데이타 타입별 Suffix에 대한 예제이다. 

디폴트 리터럴 타입

123    // int 리터럴
12.3   // double 리터럴
"A"    // string 리터럴
'a'    // char 리터럴
true   // bool 리터럴



C# 리터럴 데이타 타입Suffix (대소문자 모두 가능)예제
longL1024L
uintU1024U
ulongUL1024UL
floatF10.24F
doubleD10.24D 또는 10.24
decimalM10.24M


와 이런식으로 표현이 가능하다니 C++만 하다보니 신기하기는 하다.

'게임개발공부 > C#공부' 카테고리의 다른 글

C#공부에 대해서...  (0) 2013.12.18
C#에서 문자열형은?  (0) 2013.12.16
@의 의미가 대체 뭐지? C#에서 레퍼런스와 포인터란? 막긁어와!  (0) 2013.12.16
객체형????  (0) 2013.12.16
ToString("")  (0) 2013.12.15
Posted by JJOREG

뭐야이게! INT형을 별 어려움 없이 그냥 STRING으로 변경하네! ----------------------------------------------------------------------------------------


int 형 변수를 문자로 바로 변경할수 있다는 것은 C++만 해오던 나한테 듣도보도 못한 개념이고 거기에 형식까지 지정이 가능하다는건 컬처쇼크나 다름없다.

복잡 다난한 변환과정을 거치거나 다시 변경하는 경우도 꽤 많기 때문이다. 그런데 그냥 된다. C#에서는


int a


a.ToString()만 해주면 문자열 값을 반환해준다.


옵션으로는 다음과 같은 값들이 있다.


ToString("C") 통화표시(돈표시)

ToString("D")  정수의 10진수 표시

ToString("E")  부동 소숫점의 지수 표시

ToString("F")  표준의 부동 소숫점 표시

ToString("G")  E또는 F의 단축 표시

ToString("N")  자리로 구분된 붇종 소숫점 표시

ToString("P")  퍼센트 표시

ToString("X")  정수 16진수 표시


이런식으로도 쓸수 있다.


int a = 1;

Console.WriteLine(a.ToString("x5"));


//result

//00001



int a = 1;

Console.WriteLine(a.ToString("0000"));


//result

//0001



float a = 1.51321548f;

Console.WriteLine(a.ToString("0000.00"));


이렇게도 쓸수 있다.

"c" : 해당 컴퓨터에서 사용하는 통화 단위로 변환

"f3" : 소수점 아래로 세 자리까지 표시

"0" : 정수 현태로 변환

"0%" : 정수 퍼센트 단위로 변환

"n" : 천 단위마다 쉼표를 집어넣음


'게임개발공부 > C#공부' 카테고리의 다른 글

C#공부에 대해서...  (0) 2013.12.18
C#에서 문자열형은?  (0) 2013.12.16
@의 의미가 대체 뭐지? C#에서 레퍼런스와 포인터란? 막긁어와!  (0) 2013.12.16
객체형????  (0) 2013.12.16
C#의 리터럴  (0) 2013.12.16
Posted by JJOREG
이전버튼 1 2 3 이전버튼