Wpis z mikrobloga

@ugotowany_kamien: a jaki to miałoby mieć sens? pierwsza Twoja linijka tworzy Ci zmienną którą będziesz trzymał w klasie, jakąś właściwość, a kolejne to operacje na nich. Jeżeli chcesz od razu coś takiego to możesz napisać

string[] cos = new string[]{ "dupa", "asdasd", "adsasdasdasdDUPA"};
  • Odpowiedz
@jaggi: @kao3991:
tak tworze tablicę:
string[] cos = new string[3];
cos[0] = "dupa";
cos[1] = "dupadupa";
cos[2] = "dupadupadupa";

no i tak tworzę tablice
string[] cos= { "dupa", "dupadupa", "dupadupadupa" };

dla czego w 1 wypadku c# nie wie co z tym zrobić a już w 2 potrafi
  • Odpowiedz
@ugotowany_kamien: bo w tym drugim przypadku masz deklarację i przypisanie jednocześnie. W pierwszym przypadku masz oddzielnie deklarację i oddzielnie przypisanie wartości i tutaj może np. polecieć IndexOutOfRangeException tylko coś go musi rzucić (metoda albo instrukcja throw), a że obiekt na tym etapie jeszcze nie istnieje w pełni (musiałoby zakończyć się wykonywanie konstruktora) to nie ma na dobrą sprawę co go rzucić i skąd polecieć. Druga rzecz, że gdyby to było dozwolone,
  • Odpowiedz
@ugotowany_kamien: tak w dużym skrócie, w sytuacji gdy robisz
string[] tab = new string[3];
tab[0] = "a";
tab[1] = "b";
tab[2] = "c";
tab[3] = "d";

w metodzie w ostatniej instrukcji poleciałby Ci wyjątek informujący o tym że wyszedłeś poza granicę tablicy (przypisałeś wartość do 4 komórki, gdy w tablicy są tylko 3). Druga rzecz, to że w klasie dozwolone są tylko definicje pól wraz z przypisaniem wartości, definicje metod, właściwości,
  • Odpowiedz