2013-04-16 5 views
0

C#에서 (로 보낸)와 (신규) 사이의 차이, 나는 msdn.microsoft.com에서이 튜토리얼 (http://msdn.microsoft.com/en-us/library/vstudio/dd492172.aspx),이 튜토리얼의나는 C#에서 새로운 해요

일부를 공부하고 요즘 이 생각으로 새 개체를 만들 수있는 문장이다 그러나 나는 아래로 수치 제어 모르겠어요, 명령문은 다음과 같습니다

NumericUpDown answerBox = sender as NumericUpDown; 

과이 페이지 (http://msdn.microsoft.com/en-us/library/vstudio/dd492138.aspx)

을에의 질문은,이 두 문장의 차이점은 무엇입니까 ?, 둘 다 무슨 뜻인지.

NumericUpDown answerBox = sender as NumericUpDown; 

NumericUpDown answerBox = new NumericUpDown(); 

은 사전에 감사합니다. 당신이 컨텍스트에 다시 코드를 삽입하면

+1

그들은 변수를 선언한다는 것을 제외하고는 서로와 아무 상관이 없습니다. – SLaks

답변

2

이들은 매우입니다. 안전하게 클래스에 정의 된 속성과 메서드를 사용할 수 있도록 개체를 캐스팅이 경우

  • NumericUpDown answerBox = sender as NumericUpdown;

      는 입력 NumericUpDown의 객체에 함수에 전달된다. 이 경우
    1. NumericUpDown answerBox = new NumericUpDown();

      당신이 완전히 새로운 개체 개체에 관계없는 유형 NumericUpDown을 만드는

      이 전달된다.이 새로운 인스턴스에 액세스하는 모든 사용자가 전화를 메서드 또는 속성이있을 것이다 sender*에 영향을 미치지 않습니다.
      (* 면책 조항 : 클래스는 정적 멤버와 이상한 일하지 않을 경우) :

      new NumericUpDown(); 
      

      As 호환 사이의 변환을 수행하는 데 사용됩니다

  • 2

    당신은 볼 수 있습니다 :

    private void answer_Enter(object sender, EventArgs e) 
    { 
        // Select the whole answer in the NumericUpDown control. 
        NumericUpDown answerBox = sender as NumericUpDown; 
    } 
    

    object sender 이미 함수에 전달 된 sender라는 object으로 정의하고있다.

    sender as NumericUpDown;이 수행하는 작업은 기능 내에서 사용하기 위해 objectNumericUpDown으로 구문 분석합니다.

    따라서 newas 사이에는 유사성이 없습니다.

    1

    이 하나가 NumericUpDown의 새로운 인스턴스를 만듭니다 유형.

    sender as NumericUpDown; 
    

    참조 MSDN하십시오 NumericUpDown를 입력

    as

    new

    0

    이 (튜토리얼은이 이벤트가 당신이 구독은), 윈도우 폼은 입력 된 특정 NumericUpDown 상자를 전달 sender. sender은 많은 객체에 이와 같은 이벤트가 있으므로 아무 것도 전달할 수없는 객체를 의미합니다. 이 sender은 NumericUpDown이라는 컴파일러에게 알려야합니다. 이것이 첫 번째 기능입니다.

    두 번째는 완전히 새로운 NumericUpDown을 만듭니다.이 NumericUpDown은 기본적으로 쓸모가 없습니다.

    0

    첫 번째 것은 실제로 "발신자"개체를 가져 와서 "NumericUpDown"유형으로 전송합니다. "(NumericUpDown) sender"에 더 가깝지만 "발신자"의 형식을 NumericUpDown 유형으로 변환 할 수없는 경우 "as"연산자는 null을 반환한다는 점에서 차이가 있습니다 (NumericUpDown) 보낸 사람이 InvalidCastException을 throw합니다.

    두 번째 문 "NumericUpDown answerBox = new NumericUpDown()"은 매개 변수없는 생성자를 사용하여 NumericUpDown 유형의 새 인스턴스를 만듭니다.

    관련 문제