hej, TheMethod anropar en typ callback metod som här är definierad med en anonym delegate, dvs callback koden är definierad i delegaten direkt utan att göra en klass metod. Metoden har två argument - Graphics och PointF. Tack för dit svar, callback(g,pos) anropar den funktion som har angets som MyCallBack argument till TheMethod (den anonyma delegaten i det här fallet). Det kan vara vilken metod som helst som har samma signatur som MyCallBack delegaten men bara en åt gången i det här fallet.Behöver hjälp med C# kod?
skulle någon kunna förklara följande C# kod? tack
vad hände med lastDataPointPos får det värdet pos eller något annat, egentilgen vet inte vilken anropas först och vilken kommer sist och vilka är parametrar och vilka får nytt värde ...
public void MyMethod(Graphics g, Color color, PointF[] graph)
{
TheMethod(g, color, graph, delegate(Graphics ge, PointF pos)
{
lastDataPointPos = pos;
isSingleDataPoint = graph.Length == 1;
});
}
Sv: Kan ni förklara denna C# kod?
Vad som händer med lastDataPointPos kan man inte riktigt se här, men när TheMethod (eller viken annan kod det nu är) anropar den anonyma metoden så tilldelas lastDataPointPos det värde som pos har. Detta kan göras ingen, en eller flera gånger.
Om du har deklarationen för TheMethod() kan man bättre förklara vad som händer.
/RubenSv: behöver hjälp med C# kod?
här är deklarationen för TheMethod()
frågan är, på raden callback(g, pos) anropar den vilken method som hälst som har samma signatur som delegate:n har??? !!! (den kan vara flera metoder eller hur?).
public void TheMothod(Graphics g, Color color, PointF[] MyPoints, MyCallBack callback)
{
Color col = Color.FromArgb(useColor ? 210 : 255, color);
if(MyPoints.Length > 1)
{
Pen MyPen= Factory.CreatePen(col, 1.7F);
}
else if(MyPoints.Length == 1)
{
AnotherMethod(g, MyPoints[0], col);
}
if(callback != null)
{
foreach(PointF pos in MyPoints)
{
callback(g, pos);
}
}
}Sv:behöver hjälp med C# kod?
Jag har lite svårt att förstå vad TheMethod gör, det verkar fattas en del, men callbacken anropas en gång för varje PointF i MyPoints arrayn. I det här fallet blir det alltså så att lastDataPointPos tilldelas den sista PointF:en i MyPoints arrayn och isSingleData blir true om PointF arrayn endast innehåller ett element. Inget av detta hade dock behövt göras i en callback eftersom all information redan finns innan TheMethod() anropas.
/Ruben