C# syntax를 VB-ER에 대해 설명하십시오
-
06-07-2019 - |
문제
다음 코드 스 니펫이 있습니다.
// Notify the source (the other control).
if (operation != DropOperation.Reorder) {
e = new DroppedEventArgs()
{
Operation = operation == DropOperation.MoveToHere ? DropOperation.MoveFromHere : DropOperation.CopyFromHere,
Source = src,
Target = this,
DroppedItems = srcItems
};
src.OnDropped(e);
}
나는 이해하지 못한다
Operation = operation == DropOperation.MoveToHere ? DropOperation.MoveFromHere : DropOperation.CopyFromHere
선.
누군가 설명 할 수 있습니까? 레코드의 경우 ... 드롭 프로칭은 열거입니다. VB 구문을 제공 할 수 있습니까?
세스
해결책
이해하기 어려운 이유는 당신이 3 원 운영자에게 익숙하지 않기 때문입니까? :. 기본적으로 그것이하는 일은 표현식을 평가하고 평가가 반환되는지 여부에 따라 두 값 중 하나를 반환하는 것입니다. 진실 또는 거짓.
예를 들어, 부울이 참이면 다음 표현이 "true"를 반환하고 "거짓"은 다음과 같습니다.
bool test = false;
string testString = test ? "true" : "false";
실제로 vb.net에도 존재합니다. 그러나 조금 다르게 표현되었습니다. C#과 vb.net 의이 두 가지 진술은 실제로 동일합니다.
Dim s As String = If(True, "kek", "lol")
string s = true ? "kek" : "lol";
IIF와 테니 연산자의 차이점은 IIF가 연산자 대신 함수이기 때문에 IIF가 항상 두 번째 및 세 번째 매개 변수를 모두 평가한다는 것입니다. 이러한 이유로 테나리 운영자는 선호합니다.
메모: 테나리 연산자는 VB 9에 추가되었으므로 이전 버전을 사용하는 경우이 기능의 IIF 기능에 의존해야합니다.
다른 팁
If (operation = DropOperation.MoveToHere) Then
Operation = DropOperation.MoveFromHere
Else
Operation = DropOperation.CopyFromHere
End If
의무적 인 위키 백과 링크. 나는이 링크를 의견에 언급하는 것을 포기 했으므로 여기에 답이 있습니다. 당신은 사용의 사용을 대체 할 수 있습니까? IIF 기능에 대한 호출이있는 연산자 :
Operation = IIF(operation = DropOperation.MoveToHere, DropOperation.MoveFromHere, DropOperation.CopyFromHere)
IIF 이후로 그들은 엄격하게 동등하지 않습니다. 기능 진실과 거짓 사건을 모두 평가하는 동안? 운영자 반환하는 경우 만 평가합니다.
이것은 조건부 운영자이며 VB와 매우 유사합니다. IIf
기능:
표현식 평가에 따라 두 개체 중 하나를 반환합니다.
Public Function IIf( _
ByVal Expression As Boolean, _
ByVal TruePart As Object, _
ByVal FalsePart As Object _
) As Object
이 특별한 예에서 IIf
기능은 다음과 같이 작성됩니다.
Operation = IIF((operation = DropOperation.MoveToHere), _
DropOperation.MoveFromHere, _
DropOperation.CopyFromHere)
이것은 사용 중입니다 ?
운영자 조건부 과제. 이 라인은 기본적으로 다음의 구문 설탕입니다.
// C# expanded example
if (operation == DropOperation.MoveToHere)
{
Operation = DropOperation.MoveFromHere;
}
else
{
Operation = DropOperation.CopyFromHere;
}
VB에서는 다음과 같습니다.
If operation = DropOperation.MoveToHere Then
Operation = DropOperation.MoveFromHere
Else
Operation = DropOperation.CopyFromHere
End If
operation == DropOperation.MoveToHere ? DropOperation.MoveFromHere : DropOperation.CopyFromHere
이것을 3 배 연산자라고합니다. 기본적으로 짧은 글쓰기 방법입니다.
if (operation == DropOperation.MoveToHere)
return DropOperation.MoveToHere;
else
return DropOperation.CopyFromHere;
그만큼 ?:
구조는 3 배의 연산자이며 기본적으로 인라인입니다 if (x) y else x
. 인라인의 이점은 여기서 변수에 즉시 할당된다는 점에서 볼 수 있습니다. IF 문으로는 그렇게 할 수 없습니다.
C# 블로거는 "?" 많이. 이 코드보기 :
int Foo(int x, int y){
return x==y? 10: 11;
}
와 동등하다:
int Foo(int x, int y){
if (x==y)
return 10;
else
return 11;
}
잘 설명 된 도넛의 대답을 읽으십시오 !!
( "vb-er"나는 용어를 좋아한다)
그것은 The라고합니다 3 배 운영자. 나는 그것이 VB에 존재한다고 생각하지 않지만 기본적으로 if/else의 속기 일뿐입니다.