2010-03-30 2 views
8

저는 VB에서 프로그래머로서 C#으로가는 길입니다. 나는 VB에서 이벤트를 생성하고 발생시키는 법을 배웠고 C#에서 같은 방식으로 수행되지 않는다는 것을 알았습니다. 누구든지 C#에서 이벤트를 수행하는 방법을 이해하고 VB에서 다른 이유를 설명하는 데 도움이 될 기사를 찾았습니까?VB와 C#의 이벤트 차이점은 무엇입니까?

감사합니다.

+0

이 질문은 VB.Net과 C# 이벤트 구문의'handles'의 차이점에 대해 설명합니다. http://stackoverflow.com/questions/794332/migrating-handles-from-vb-net-to-c – MarkJ

+0

감사합니다. MarkJ 정말 고맙습니다. 귀하의 도움 –

답변

0

의 차이는 대부분 구문입니다.

차이점에 대한 간략한 설명은 this을 참조하십시오.

VB.NET의 이벤트 처리기는 Handling 키워드가 이벤트 처리기 서명에 추가되어 선언됩니다. C#에서는 +=으로 등록해야합니다.

VB.NET에서 RaiseEvent으로 이벤트를 호출하면 C#에서 대리인을 직접 호출합니다. 에서 읽기

+0

도움 주셔서 감사합니다 Oded –

0

:

http://msdn.microsoft.com/en-us/library/aa645739(VS.71).aspx

C#에서 이벤트는 몇 가지 흥미로운 것은 객체에 발생하면 의 클라이언트 클래스를 알림을 제공 에 클래스의 방법입니다. 가장 익숙한 이벤트는 이고 그래픽 사용자 인터페이스는 입니다. 일반적으로 의 컨트롤을 나타내는 클래스는 인터페이스에 (예 : 버튼을 클릭) 할 때 알림을받는 이벤트 인 이 있습니다.

그러나 이벤트는 그래픽 인터페이스 용으로 에만 사용할 필요는 없습니다. 이벤트 은 개체가 이라는 개체의 클라이언트에게 유용 할 수있는 상태 변경을 알리는 데 일반적으로 유용한 방법을 제공합니다. 이벤트는 클래스를 만들기위한 중요한 블록으로 다른 프로그램의 큰 숫자 인 에서 재사용 할 수 있습니다.

나머지는 문서를 참조하십시오.

0

구문의 주요 차이점에 대한 빠른 일반 참조는 here입니다. 해당 섹션으로 이동하려면 "이벤트"를 검색하십시오.

주요 차이점은 VB가 이벤트를 연결하기 위해 더하기/빼기가 아닌 일부 키워드를 사용해야한다는 것이지만 핸들 키워드는 루틴을 이벤트에 자동으로 연결합니다. 그리고 대리자를 전달할 때는 무의미한 AddressOf 키워드를 사용해야합니다. (사설을 위해 유감스럽게 생각하지만 키워드가 저장하는 것보다 더 혼란을 야기한다고 생각합니다.)

+0

당신의 의견을 보내 주셔서 감사합니다 패트릭 –

+0

@M 아무 문제 없습니다. 그 것이었다 . . . upvote 가치? :) –

1

가장 큰 차이점은 사용 된 구문입니다. 아래에서는 CLR 내에서 완전히 동일한 메커니즘을 사용합니다.

그러나 VB.NET은 당신이 할 수 있도록 WithEventsHandles를 통해 특수 구문을 제공합니다

Dim WithEvents button1 As Button 

Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyButton.Click 
    ' Handle button click 
End Sub 

C 번호는 equivelent 제공하지 않습니다 - 모든 이벤트가 명시 적으로 event +=을 통해 가입해야하며, 더 VB.NET의 AddHandler 문 같다.

+0

도움 주셔서 감사합니다. Reed –

관련 문제