icewall의 생각들, 여행기, 잡다한 일상 등등 icewall의 모든 것 입니다.
- 저작권 공지
- 블로그 오픈~
전체 (94)
Travelog (46)
EverydayLife (10)
PartOfLife (7)
작업 (3)
잡담 (13)
개발 (3)
일기 (7)
건강프로젝트 (5)
Google
Web www.icewall10.com
ARTICLES GUEST
REPLIES TRACKBACKS
«   2008/11   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
 + Angst essen Seel..
 + In My World
 + WiseBell 하우스
 + 루오니의 집
 + 블로거기자단
 + 블로거뉴스
 + 이정환닷컴!
 + 최신개정판 세계..
 + 파파짱

 

 

Get RSS Page XML RSS2.0
Powered By TatterTools
Skin By zippy
C# - 해당되는 글 2건
2007/02/08   C#에서의 Assignment와 Reference 
2006/10/17   C# event의 속도 
* C#에서의 Assignment와 Reference
- 개발 | 2007/02/08 11:19
C#에서의 reference를 알아보기 위해 약간의 테스트를 하였다.
C#에서도 Java에서와 마찬가지로 모든 값들을 reference로 유지 하고 있었다.
의문점은 과연 이 reference가 언제까지 유지가 되며 언제 바뀌는지가 궁금하여 테스트를 해보았다.
결과는 다음과 같았다.

Class C1
{
   public Test test = new Test();
}

Class C2
{
   public Test test = new Test();
}

Class Test
{
   public string str = "Test";
}

C1 c1 = new C1();
C2 c2 = new C2();

c2.test = c1.test;

c1과 c2가 생성이 되면 안에 있는 test가 생성이 되면서 test는 각각의 Test instance를 reference로 만든다.
그리고 c2.test = c1.test가 되는 순간에 c2의 test는 기존에 가지고 있던 Test instance를 버리고 c1이 reference하고 있는 Test instance로 reference를 옮긴다. 
그래서 이 시점에 c1.test와 c2.test가 같은 Test instance를 reference하고 있는 것이다.
하지만 이것이

Test newTest = new Test();
c1.test = newTest;

를 하게 되면 c1과 c2가 함께 reference하고 있던 Test instance를
c1 --> newTest
c2 --> 예전 Test instance

를 reference 하게 된다.

하지만, c1.test = newTest를 하기전에
c1.test.str = "New Test";
를 하게 되면 이것은 c1.test가 가리키고 있는 Test instance를 직접 호출 하여 값을 바꾸는 것이 되기 때문에
c1.test와 c2.test가 함께 바뀌는 결과를 낳게 되는 것이다.

이 사실은 basic data type에도 같이 적용이 된다.
예를 들어
c1.int = 3;
은 c1.int를 직접 호출하여 값을 바꾸는 것이지만,
int x = 4;
c1.int = x;
를 하게 되면 c1.int의 reference 값을 바꾸에 되어 c1.int와 c2.int의 값이 달라지게 된다.

위 사실만 주지 하고 있으면, C#에서의 reference는 마스터를 할 수 있다고 볼 수 있다.


이올린에 북마크하기(0) 이올린에 추천하기(0)
 
이 글의 관련글
 
Post by icewall l Trackback 0 l Comment 0
Track this back : http://www.icewall10.com/icewall/trackback/89


* C# event의 속도
- 개발 | 2006/10/17 21:58
C#으로 프로그램을 짤때 프로세스를 잡아먹는 polling대신에 event를 쓰면 간단히 callback function을 호출 할 수 있습니다.  하지만 그 속도가 의심되는 바 간단한 실험을 했습니다.  그랬더니 생각보다 상당히 빠른 속도로 이벤트가 발생 하는 것을 발견 했습니다.  DateTime 클라스의 Ticks를 써서 찍어 봤더니 아래와 같은 속도가 나왔습니다.  그래서 Ticks를 MSDN에서 찾아보니...

The value of this property represents the number of 100-nanosecond intervals that have elapsed since 12:00:00 midnight, January 1, 0001.
100 nanosecond 단위로 숫자가 올라 간다네여..  더 많은 event를 동시에 발생 시켜서 좀더 정확히 알아 볼 수 도 있었으나, 귀차니즘과 프로젝트 시간의 압박으로 포기... 어쨌든,

결론:  event는 100 nanosecond 보다 빠르게 발생한다.  호기심 해결~

이올린에 북마크하기(0) 이올린에 추천하기(0)
 
이 글의 관련글
 
Post by icewall l Trackback 0 l Comment 0
Track this back : http://www.icewall10.com/icewall/trackback/81


prev   1   next