_freeIndex == null ? _freeIndex = new FreeIndex(index, null) : _freeIndex = new FreeIndex(index, _freeIndex); a tym:
if (_freeIndex == null) { _freeIndex = new FreeIndex(index, null); } else { _freeIndex = new FreeIndex(index, _freeIndex); } Myślałem że pierwszy sposób to zwyczajne skrócenie ifa, ale VS pokazuje błąd CS0201 i sugeruje zmianę typu zwracanego przez metodę z void na FreeIndex (nie chcę nic zwracać, w ifie ma się tylko zmienić wartość pola), albo użycie:
_ = _freeIndex == null ? _freeIndex = new FreeIndex(index, null) : _freeIndex = new FreeIndex(index, _freeIndex); #csharp #naukaprogramowania
@Goglez: nie znam się, ale się wypowiem: czy to by nie zadziałało?
_freeIndex = (_freeIndex == null) ? new FreeIndex(index, null) : new FreeIndex(index, _freeIndex); wydaje mi się, że skróconego zapisu używa się w operacjach przypisania, ale nic za to nie dam sobie uciąć.
@Goglez: Przede wszystkim - operator warunkowy zwraca wartość na podstawie warunku (jedną albo drugą), a if...else wartości nie zwraca, a jedynie na podstawie warunku decyduje czy wykonać dany blok czy nie - przy czym blok może zawierać w sobie cokolwiek (wywołania, przypisania, inne bloki warunkowe, pętle itd), natomiast dla operatora warunkowego ZAWSZE musi on przyjąć postać:
warunek ? wartosc_dla_true : wartosc_dla_false W twoim przykładzie ifa faktycznie można skrócić do takiej postaci:
nie zawsze jest możliwe proste przekształcenie z postaci ifa do operatora warunkowego - te konstrukcje nie są sobie równoważne i mają różne zastosowania.
@t3m4: @Szab: Stąd problem, myślałem że to działa tak samo. Dzięki.
_freeIndex == null ? _freeIndex = new FreeIndex(index, null) : _freeIndex = new FreeIndex(index, _freeIndex);
a tym:
if (_freeIndex == null)
{
_freeIndex = new FreeIndex(index, null);
}
else
{
_freeIndex = new FreeIndex(index, _freeIndex);
}
Myślałem że pierwszy sposób to zwyczajne skrócenie ifa, ale VS pokazuje błąd CS0201 i sugeruje zmianę typu zwracanego przez metodę z void na FreeIndex (nie chcę nic zwracać, w ifie ma się tylko zmienić wartość pola), albo użycie:
_ = _freeIndex == null ? _freeIndex = new FreeIndex(index, null) : _freeIndex = new FreeIndex(index, _freeIndex);
#csharp #naukaprogramowania
_freeIndex = (_freeIndex == null) ? new FreeIndex(index, null) : new FreeIndex(index, _freeIndex);
wydaje mi się, że skróconego zapisu używa się w operacjach przypisania, ale nic za to nie dam sobie uciąć.
warunek ? wartosc_dla_true : wartosc_dla_false
W twoim przykładzie ifa faktycznie można skrócić do takiej postaci:
@t3m4: @Szab: Stąd problem, myślałem że to działa tak samo. Dzięki.
_freeIndex = new FreeIndex(index, _freeIndex);
wystarczy