Ik zit met een probleempje bij het omzetten van wat code van VB.net naar C#.
Ik heb nu het volgende stukje code:
Ik krijg hier nu bij de vet onderdrukte code de volgende errors:
The best overloaded method match for '....' has some invalid arguments.
Dit komt doordat objA en objB van de klasse AbstractParticle zijn en de verschillende testmethodes (testOBBvsCircle etc) die je ziet een object van het type CircleParticle of RectangleParticle verwachten. Deze twee klassen CircleParticle en RectangleParticle erven de klasse AbstractParticle over dus eigenlijk zou de compiler moeten herkennen dat dit geen problemen zou moeten opleveren. Echter in C# is dit niet het geval terwijl het in VB.net gewoon allemaal goed werkte.
Heeft iemand een idee hoe ik dit weer goed werkend krijg. Dien ik het type object expliciet te vermelden? En waarom is er wat dit betreft een verschil tussen Vb.net en C#?
Ik hoop dat het probleem zo duidelijk is.
Ik heb nu het volgende stukje code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| public static void test(AbstractParticle objA, AbstractParticle objB) { if (objA.getFixed() && objB.getFixed()) { return; return; } //// rectangle to rectangle if (objA is RectangleParticle & objB is RectangleParticle) { [u]testOBBvsOBB(objA, objB);[/u]; //// circle to circle } else if (objA is CircleParticle & objB is CircleParticle) { [u]testCirclevsCircle(objA, objB);[/u]; //// rectangle to circle - two ways } else if (objA is RectangleParticle & objB is CircleParticle) { [u]testOBBvsCircle(objA, objB)[/u]); } else if (objA is CircleParticle & objB is RectangleParticle) { [u]testOBBvsCircle(objB, objA);[/u]; } //testOBBvsOBB(DirectCast(objA, RectangleParticle), DirectCast(objB, RectangleParticle)) } |
Ik krijg hier nu bij de vet onderdrukte code de volgende errors:
The best overloaded method match for '....' has some invalid arguments.
Dit komt doordat objA en objB van de klasse AbstractParticle zijn en de verschillende testmethodes (testOBBvsCircle etc) die je ziet een object van het type CircleParticle of RectangleParticle verwachten. Deze twee klassen CircleParticle en RectangleParticle erven de klasse AbstractParticle over dus eigenlijk zou de compiler moeten herkennen dat dit geen problemen zou moeten opleveren. Echter in C# is dit niet het geval terwijl het in VB.net gewoon allemaal goed werkte.
Heeft iemand een idee hoe ik dit weer goed werkend krijg. Dien ik het type object expliciet te vermelden? En waarom is er wat dit betreft een verschil tussen Vb.net en C#?
Ik hoop dat het probleem zo duidelijk is.