Yahoo_
  • Najlepsze
  • Wszystkie komentarze
Yahoo_
Yahoo_ Autor
1
@Saly: wiesz, nie po to w c# jest tyle rodzajów kolekcji, żeby wszystkie działały tak samo :p
Yahoo_
Yahoo_ Autor
1
@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 :)

Saly
Saly
0
@Yahoo_: jak ja lubię taką niekonsekwencję w językach, bez tego nie byłoby czego pytać na rozmowach
zibizz1
zibizz1
@Yahoo_: to takie zabezpieczenie które pojawiło się w ostatnich latach w kompilatorze chyba.

list[i].item=value; to jest źle

var
zibizz1
zibizz1
@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_
Yahoo_ Autor
0
@zibizz1: Tak po prawdzie to raczej nie powinieneś zwracać arraya, ale ienumerable albo ireadonlycollection, ale rozumiem, że to zadanko :p
zibizz1
zibizz1
@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.
Yahoo_
Yahoo_ Autor
0
@zibizz1: O jakiej bibliotece mowa z ciekawości?
zibizz1
zibizz1
@Yahoo_:

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
Yahoo_
Yahoo_ Autor
0
@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_
Yahoo_ Autor
0
@zibizz1: W sumie teraz czytam, że u nich to standard, więc może mają ku temu dobre powody.
zibizz1
zibizz1
@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.