[c#] Nadpisanie wartości w tablicy


(Anddezr+Dobreprogramy Pl) #1

Witam,

Ze zwykłą zmienną mogę zrobić tak

int liczba=5;

liczba=8;

a jak to samo zrobić z tablicą, np. punktów.

PointF[] myPoints = { new Point(x, y), new Point(x+22, y+12), new Point(x+22, y+32) };

//kod rysowania

Chcę użyć tej samej nazwy, ale wpisać inne wartości do tablicy. np.

myPoints = { new Point(x+33, y+33), new Point(x+42, y+52), new Point(x+32, y+62) };

// kod rysowania

W php można tak, a jak w c#

$num = array(5,3);

$num = array(2,2);

(Ryan) #2
myPoints[0] = new Point(x+33, y+33);

myPoints[1] = new Point(x+42, y+52);

myPoints[2] = new Point(x+32, y+62);

Ewentualnie możesz zmieniać wartość myPoints[0].X itp. - mniej śmieci GC wygeneruje. Albo użyj kolekcji zamiast tablicy, czyść i dodawaj nowe elementy.


(Anddezr+Dobreprogramy Pl) #3

Dzięki za odpowiedź. Teraz jest ok.

A czy jest inny sposób zapisania tego, żeby wszystko wpisać za jednym razem, czy jedyna możliwość to tak jak napisałeś, każdy element oddzielnie?


(Ryan) #4

Na upartego można w dwóch liniach albo stworzyć funkcję pomocniczą, tylko po co? :slight_smile:

PointF[] myPoints2 = { new Point(x, y), new Point(x + 1, y + 1), new Point(x + 2, y + 3) };

myPoints2.CopyTo(myPoints, 0);

//edyta Jednak można:

myPoints = new Point[3] { new Point(x, y), new Point(x + 1, y + 1), new Point(x + 2, y + 3) };

Ale to czasem zły pomysł - takie stosowanie tablic powoduje generowanie śmieci w GC.


(Anddezr+Dobreprogramy Pl) #5

To rozwiązanie pierwsze wydaje się najlepsze. Dzięki.


(Ryan) #6

Zedytowałem poprzednią wiadomość z rozwiązaniem które pewnie Ci będzie odpowiadało. Tak z ciekawości: co piszesz? I drugie pytanie: dlaczego do tablicy PointF[] wpisujesz wartości Point()?


(Anddezr+Dobreprogramy Pl) #7

Na razie sprawdzam możliwości gdi+ (piszę pracę na temat tej biblioteki). W c# jestem zupełnie początkujący, więc różnicy między Point a PointF nie widziałem na razie (kod działał :P).

Ale dobrze, że zapytałeś, teraz wiem, że Point w tak prostym rysowaniu by mi wystarczyło.