0
나는이 같은 VB와 C#의 조건은 C#에서하지 않습니다
Dim str As String = "aaa"
If (str.IndexOf("bbb")) Then
Console.WriteLine("aaa")
End If
Console.ReadLine()
동일한 코드를 다음과 같이하면
string str = "aaa";
if(str.IndexOf("bbb") > -1)
{
Console.WriteLine("aaa");
}
Console.ReadLine();
우선 if 문을 조건으로 IndexOf를 사용하여 C#으로 작성할 수 없습니다.이 경우에는 -1을 사용하여 부울을 허용해야합니다. 하지만 VB에서 당신이 그것을 작성할 수있는 곳에서는 컴파일러가 오류를주지 않으며, IndexOf가 -1을 리턴하더라도 항상 VB에서 true로 평가됩니다. 왜 이런 일이 일어나는 걸까요?
이 질문은 VB6과 어떤 관련이 있습니까? –
"동일한 코드"가 아니기 때문에? 명시 적 비교와 * 마법 번호 *를 삽입했습니다. -1을 선택하게 된 이유는 무엇입니까? –
VB6과 관련이 있습니다. True가 -1 인 기본 버전. 좋은 이유가 많아서, 수학적이고 논리적 인 And and Or 연산자를 구별하지 않아도됩니다. 프로그래머가 코드를 포팅 할 수 있도록하려면 VB.NET으로 이월해야했습니다. Option Strict를 사용하여 프로그램 컴파일러에서 오류가 발생했다는 것을 알리려면 잠시 동안 켜십시오. 그러나 익숙해지기 쉽고 다시 꺼내기가 어려울 수 있습니다. –