• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Operator warunkowy w C# - dziwne zachowanie

Object Storage Arubacloud
0 głosów
219 wizyt
pytanie zadane 30 września 2017 w C# przez newbie2 Nowicjusz (190 p.)

Cześć, jestem tu nowy i to moje pierwsze pytanie na forum.

Otóż mam problem z operatorem warunkowym w C#. Do jednego zadania muszę utworzyć tablicę wartości logicznych uzupełnionych naprzemiennie wartościami «true» i «false». W tym celu wykorzystałem pętlę for i operator warunkowy, ale kompilator zwraca błąd. Co jest nie tak z kodem:

for(int i = 0; i < tab.Length; i++)
        {
            i % 2 == 0 ? tab[i] = true : tab[i] = false;
        }

Kompilator zwraca błąd CS0201.

3 odpowiedzi

+2 głosów
odpowiedź 30 września 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)
wybrane 30 września 2017 przez newbie2
 
Najlepsza

A nie lepiej po prostu tak?

for (int i = 0; i < tab.Length; i++)
{
    tab[i] = i % 2 == 0;
}
+1 głos
odpowiedź 30 września 2017 przez maciej.tokarz Nałogowiec (27,280 p.)

A tak:


var tab = new bool[10];
for (var i = 0; i < tab.Length; i++)
{
	tab[i] = i%2 == 0;
}
Console.WriteLine(string.Join(", ", tab));
Console.ReadKey();

M.

0 głosów
odpowiedź 30 września 2017 przez newbie2 Nowicjusz (190 p.)

O dzięki Panowie za błyskawiczną odpowiedź. Faktycznie

tab[i] = i % 2 == 0;

wygląda znacznie prościej. Jakoś nie przyszło mi do głowy.

 

Sorry za uciążliwość, ale jednak chciałbym wiedzieć co jest nie tak z tym ?: ?

komentarz 30 września 2017 przez maciej.tokarz Nałogowiec (27,280 p.)
Skrócony warunek miałby sens, gdyby wynik porównania wskazywał na coś innego niż to o czym sam stanowi. Np. jeśli true to 'ale qrcze wynik z true', a jeśli false to 'fałsz, fałsz i fałsz wokół'. Tak mniej więcej :-)

M.
komentarz 30 września 2017 przez obl Maniak (51,280 p.)

To jest nie tak, że nie wiesz jak używać operatora trójargumentowego, a to jest dość proste:

tab[i] = i % 2 ? true : false;

czyli: warunek ? wartość zwracana gdy prawda : wartość zwracana gdy fałsz.

A ty próbujesz operator przypisania tam wykorzystać co dość zabawnie wygląda. To tak jakbyś próbował zrobić coś takiego:

c + 1 = 10

To nie ma prawa zadziałać.

komentarz 30 września 2017 przez newbie2 Nowicjusz (190 p.)

No niezupełnie. Po prostu założyłem że C# to jakiś cywilizowany język, podobny do C++. Nie ma to nic wspólnego z tym czy potrafię czy nie wykorzystać operator warunkowy, bo w C++ kod taki jak ten:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char** argv)
    {
    bool tab[20];
    for (int i = 0; i <=19; i++)
        {
        i % 2 == 0 ? tab[i] = true : tab[i] = false;
        cout << tab[i] << endl;
        }

    return 0;
    }

wykonuje się bez najmniejszych zastrzeżeń.

Wygląda na to że jakiś "geniusz" z mikrosyfu ograniczył funkcjonalność operatora warunkowego, do funkcji operatora przypisania warunkowego i nie ostrzegł o tym nigdzie nikogo.

komentarz 30 września 2017 przez obl Maniak (51,280 p.)
No cóż, w takim razie trochę przesadziłem, ale w C# nie da się bo płacze w komunikacie o tym właśnie mówiąc jakie operacje można wykonywać i operator podstawiania jest niedopuszczony.

P.S. Ja też wolę C++ :).

Podobne pytania

0 głosów
1 odpowiedź 299 wizyt
pytanie zadane 27 lipca 2017 w C# przez KlejnotNilu Użytkownik (750 p.)
0 głosów
1 odpowiedź 469 wizyt
pytanie zadane 18 marca 2018 w C i C++ przez Erichu Nowicjusz (230 p.)
0 głosów
1 odpowiedź 436 wizyt
pytanie zadane 27 listopada 2017 w C i C++ przez renticor Nowicjusz (160 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...