Dlaczego warunkowe, jeśli w VB nie wymaga obsługi bezpośredniego rzutowania warunków. Na przykład w języku C# to jest dobrze ...Warunek, jeśli różnice w C# i VB
bool i = false;
i = (1<2)? true:false;
int x = i? 5:6;
Ale gdybym chciał to samo w VB musiałbym rzucić to
Dim i as Boolean = CBool(IIF(1<2, True, False))
Dim x as Integer = CInt(IIF(i, 5, 6))
Nie rozumiem dlaczego C# zrobi przekształcić i dlaczego VB tego nie robi. Gdyby będę odlewania na moich C# warunkowe np
bool i = Convert.ToBoolean((1<2)? True: False);
int x = Convert.ToInt32(i? 5:6);
Również Tak, jestem świadomy, że IIF zwraca obiekt typu ale zakładam, że C# robi, jak można zwrócić więcej niż tylko true | false; wydaje mi się, że C# obsługuje niejawną konwersję.
'IIF' jest starszą funkcją VB; spróbuj z nowszym operatorem 'If' i działa tak, jak oczekujesz:' Dim i As Boolean = If (1 <2, True, False) ' – Plutonix
Operator' <'(jak również wszystkie inne operatory porównania) już zwraca true lub false, więc proszę nie rób tego nigdy: '(1 <2)? true: false; ' –
Dziękuję wszystkim za informacje :) Tak @BrianDriscoll Normalnie nie robiłbym tego, próbowałem pokazać szybką logikę tego, co miałem na myśli - dziękuję jednak za upewnienie się. – alykins