@zibizz1: Ja wiem czemu się tak dzieje, ale zwykle pracuje się z klasami i jakoś tak wyleciało z głowy. Gdybym miał listę intów to bym wiedział, że jak wyciągnę element z tablicy i zmienię wartość to w liście się nic nie zmieni, ale jakoś tak z tuplem umknęło mi :)
@Yahoo_: to jest jedno z pytań które zawsze daje na rozmowach, w tym w czym działam są 2 właściwości np
controller i controllers Zazwyczaj jest jeden i można tam przypisać co się chce, ale controllers zwraca za każdym razem nowa tablicę więc controllers[2]=newController; jest błędem i nie działa i to nie ma żadnego zabezpieczenia, każdy junior sie na tym wykłada.
@Yahoo_: Nie, to biblioteka której używa 1.5miliona deweloperów na świecie, tak jest od wielu lat. Kolejność elementów ma duże znaczenie, więc raczej ienumerable nie pasuje. Trzeba z tym żyć i być tego świadomym. To property możnaby zamienić na 4 metody(set/get x kolekcja/index) ale myślę że nadal byłobybduzo osób piszących GdyControllers()[2]=newController; i zastanawiających się dlaczego nie działa.
@zibizz1: Dobra, ale nawet jak unity to tak robi to nie znaczy, że to zgodne ze sztuką ;p. To API kłamie. Mówi - to jest property z arrayem materials, a tak naprawdę dostajesz kopię. Unity robi sporo rzeczy po swojemu, wbrew standardom c#. Z metodami to trochę inna kwestia, bo standardem jest, że zwrócony wynik jest czymś stworzonym przed chwilą, tymczasowym. Property co prawda jest tak naprawdę metodą, ale właśnie
@Yahoo_: no są ku temu powody, ale trzeba zrozumieć współpracę kodu zarządzanego z niezarzadzanym. Ale to do niczego nie potrzebne. Pewnie dużo ludzi co ponad 5lat codziennie w tym pracuje nie jest świadomych jak to działa.
Dlaczego ludzie dziękują zatrzymującym się samochodom na pasach, przecież to nie jest żaden akt łaski tylko gdyby nie ten obowiązek wprowadzony ileś tam lat temu to byłby dalej dziki zachód jak był kiedyś
10 lat programuje, a dopiero nie dawno miałem ten problem. #csharp #programowanie
list[i].item=value; to jest źle
var
controller
i controllers
Zazwyczaj jest jeden i można tam przypisać co się chce, ale controllers zwraca za każdym razem nowa tablicę więc
controllers[2]=newController; jest błędem i nie działa i to nie ma żadnego zabezpieczenia, każdy junior sie na tym wykłada.
GdyControllers()[2]=newController; i zastanawiających się dlaczego nie działa.
https://docs.unity3d.com/ScriptReference/Renderer-materials.html
Każde property zwracające taice tak się zachowuje więc można się przyzwyczaić. XD A ludzie czasem robią po 5 lat w tym i nadal nie da tego świadomi
Z metodami to trochę inna kwestia, bo standardem jest, że zwrócony wynik jest czymś stworzonym przed chwilą, tymczasowym.
Property co prawda jest tak naprawdę metodą, ale właśnie