Czy to jest niezdefiniowane zachowanie w C# ?

0

Mam pytanie. Jest w stanie mi ktoś wytłumaczyć dlaczego ta zakomentowana linijka nie działa, a ekwiwalent w 4 tak?
consumption jest krotką (enum, double), enum trzyma indeks do tablicy _usage. Mniejsza z tym dlaczego tak :D

//_usage[(int)consumption.Item1] =- consumption.Item2;
 var a = _usage[(int)consumption.Item1];
var b = consumption.Item2;
var c = a - b;
_usage[(int)consumption.Item1] = c;

```
5

Zdefiniuj "nie działa". Błąd jakiś czy coś się pojawia?

I nie wiem czy nie o to chodzi, że masz =- a nie -=.

2

C# to nie C że zrobisz x = x++ i już masz niezdefiniowane zachowanie. Wszelkie takie kombinacje mają albo ustalony wynik, albo się nie skompilują.

2

@chalwa: Ten zakomentowany kod ustawiał tam wartość: -consumption.Item2
możliwe, ze chciałeś użyć "-=" a nie "=-"

0

@sebek6543210: @Ktos : tak dokładnie o to chodziło, literówka

@Azarien: no właśnie słyszałem, że w c# zabawy typu x[y++] albo (x++) + (x-- ) prowadzą do błędów i operator ++ powinien być używany jako jedyna operacja w linii. Ale może to już zostało naprawione w nowych wersjach. Nie wiem nie sprawdzałem

0
chalwa napisał(a):

no właśnie słyszałem, że w c# zabawy typu x[y++] albo (x++) + (x-- )

Akurat pierwszy podany przez Ciebie przykład x[y++] jest zdefiniowany. Może nieczytelny, ale nie UB.

1 użytkowników online, w tym zalogowanych: 0, gości: 1