Case problem

Izpostavil bom problem, ki ga je napisal MihaM na svojem blogu (upam, da MihaM ne bo jezen Embarrassed). Kaj menite, ali se bo prevedlo in če se bo,  kaj bo izpisal? Ter zakaj?

Dim a As Integer = 0
Select Case a
   
Case 0
        Console.WriteLine(
"a")
   
Case 0
        Console.WriteLine(
"b")
End Select
Console.ReadLine()
Avtor: bojanv, objavljeno na portalu SloDug.si (Arhiv)

Leave a comment

Please note that we won't show your email to others, or use it for sending unwanted emails. We will only use it to render your Gravatar image and to validate you as a real person.

MihaM
MihaM - sreda, 28. februar 2007

pril: No, meni se to sploh ne zdi težava: to je bolj vsebinska kot sintaktična napaka, česar kompajlerji ne bodo nikoli razlikovali...Poskušaj isto narediti v C#.  pril: lahko zamenjaš tudi "a" in "b", pa je ravno tako napaka... Če pa se ne šteje za napako, program pravilno izpiše "a", kot bi se izpisalo če se case stavek zamenja z if stavki - kar je tudi njegov namen.To, da se dvakrat isti pogoj z dvema različnima rezultatoma pojavi v kodi je napaka, ki bi jo prevajalnik moral zaznati in vsaj opozoriti. Prevajalnik seveda ne ve, kakšen rezultat hočeš, zato te pa ne more opozoriti, če zamenjaš a in b.

pril
pril - sreda, 28. februar 2007

No, meni se to sploh ne zdi težava: to je bolj vsebinska kot sintaktična napaka, česar kompajlerji ne bodo nikoli razlikovali... lahko zamenjaš tudi "a" in "b", pa je ravno tako napaka... Če pa se ne šteje za napako, program pravilno izpiše "a", kot bi se izpisalo če se case stavek zamenja z if stavki - kar je tudi njegov namen. lp, pl

Samir
Samir - ponedeljek, 19. februar 2007

Se prevede! Začuda. To pa zato, ker VB.Net compiler ni tako dosleden do svoje ozr. do CLI, kakor je C#. Kar bi lahko bila promocija, zakaj je bolje programirati v C#. Aja, pa izpiše se " a ".Tukaj je še program pripravljen za copy&paste&compile Module Module1    Sub Main()        Dim a As Integer = 0        Select Case a            Case 0                Console.WriteLine("a")            Case 0                Console.WriteLine("b")        End Select        Console.ReadLine()    End SubEnd Module

MihaM
MihaM - četrtek, 18. januar 2007

Navedel si vir, ne vem zakaj bi bil jezen, kvečjemu vesel