2010-12-09 2 views
0

에 "운영자를 넓히는 공유"는 변환 VB.NET 내가 C#을에 vb.net에서이 방법을 변환 한 C#

Public Shared Widening Operator CType(ByVal items As MyOption()) As MyOptionCollection 
    Return New MyOptionCollection(items) 
End Operator 

내 불만은 내가이 함수를 완료 할 수 있는지 모르겠입니다. 나는 또한 어떻게 작동하는지 생각하고 싶다. 나는 "넓은 오퍼레이터"란 당신이 캐스트 할 때 캐스트가 작동하지만, 나는 완전한 의미를 가지고 있다고 생각하지 않는다는 것을 의미합니다.

어떻게하면 C#으로 변환 할 수 있습니까? 너는 내가하는 일을 배우는 곳에 나를 보내 주길 바래?

+0

당신이 반사경이 봤어 :

그래서 C#에서 동등한 뭔가 같은 것? C#으로 디 컴파일? – Oded

+0

MSIL로 전환하는 것을 알고 있지만 반사체를 모르거나이 변환 가능한 도구를 가지고 있습니다 (컴파일하지 않습니다) –

+0

반사경이 매우 인기가 있으며이를 수행 할 수 있습니다. 여기에서 무료로 다운로드 할 수 있습니다 : http://www.red-gate.com/products/reflector/ – Oded

답변

2

이 연산자는 MyOption 개의 배열을 가져와 MyOptionCollection 개체에 대한 참조를 반환하는 변환 연산자입니다. '확대'는이 전환을 사용하면 데이터가 손실되지 않음을 의미합니다. "연산자"는 특수 구문으로 호출 할 수 있음을 의미합니다.

C#에서 Wideningimplicit으로 바꿀 수 있습니다 (정확하게는 같지 않습니다). 그러면 다음과 같습니다.

public static implicit operator MyOptionCollection(MyOption[] items) 
{ 
    return new MyOptionCollection(items); 
} 

변환 연산자는 C# (MSDN)에서 읽을 수 있습니다.

확대/축소에 대한 추가 정보 : 연산자가 좁아지면 데이터 손실 가능성이 있음을 의미합니다. 좋은 예는 Int64에서 Int32으로 전송하는 것입니다. 값이 Int32의 최대 값보다 작 으면 캐스트가 성공하고 값은 지속됩니다. 하지만 그렇지 않으면 실패 할 것입니다. 반대로 운영자는 데이터를 잃어 버릴 수 없습니다. 즉, Int32에서 Int64으로 전송됩니다. 언제든지 안전하게 수행 할 수 있습니다.

1

확대 연산자는 정밀도/정보 손실없이 변환을 수행 할 수있는 연산자입니다. 따라서 C#에서 암시 적 연산자로 선언하는 것이 안전 할 수 있습니다.

public static implicit operator MyOptionCollection(MyOption[] items) 
{ 
    return New MyOptionCollection(items); 
}