Hej! Om jag minns rätt så tillåter MSIL detta i teorin, men inga av de vanliga programspråken (VB.Net, C#) tillåter detta. En funktions signatur består alltså endast av funktionsnamnet plus argumenten, och denna signatur måste vara unik. I ramverket (t ex Convert-klassen) så har man ju löst det genom att döpa funktionerna till ToXXX() där XXX är datatypen. T ex ToInt32, ToString o s v... Tomas, Hej, Johan, He he, Tanken var att göra en generell funktion som tar in ett objekt från en databas och sen castar det till lämplig typ och på så sätt få alla konverteringar på samma ställe. Jag förstår inte hur du skall använda det du returnerar när funktionen är generell och du inte vet vad den kommer att returnera för typ. Då måste du iaf slänga in returvärdet i en object iaf och då kan du skriva funktionen att returnera object från början. Jo, det kan jag väl göra =) Instämmer med Björn - ett exempel på hur du vill att det ska fungera hade varit trevligt. =) Tomas, Du kan överlagra en metod som returnerar olika datatyper ifall parametrarna är olika. Ifall du till exempel skickar in en parameter med den datatyp du vill ha ut så kan du skilja överlagringarna åt. Det blir ju lite krystat, dock. Det skulle ju kännas naturligare att helt enkelt döpa metoderna olika istället. Nä det var inget kom på att det inte gick eftersom man inte kan ändra på den typen heller...Returtyp
Jag är lite osäker på en sak...
Är det möjligt att göra en function som har olika returtyper (tror inte det är möjligt, i varje fall inte med option strict on)
Jag vill ha en function som returnerar antingen en integer eller en string beroende på vad ett visst objekt innehåller.
/TomasSv: Returtyp
Sv:Returtyp
Sv: Returtyp
Måste säga att det låter som ett designfel.. om du beskriver lite mer vad du gör så kanske vi kan hitta en lämpligare design på din kod.Sv:Returtyp
Jag tycker det snarare låter som om det handlar om överlagring. Nu har jag inte kommit igång så långt på .Net plattformen så jag vet hur man gör överlagring där, men jag kan förklara det i klassisk C++ (men det har du nog ingen nytta av). Så antingen kolla upp överlagring i hjälpen eller webben, alternativt så be någon komma med ett .Net exempel.
En snikvariant annars är att skicka data som Variant... (nu kommer jag få många hatmejl).
// JohanSv: Returtyp
Du kan inte överlagra på returvärde + att tomas vill villkorsbaserat returnera olika saker. Och Variant är en VBScript sak, i VB.NET heter det Object ;)Sv:Returtyp
Nu skulle man kunna tro att jag skulle krypa in i hörnan och skmmas....nä nä, jag kryper villigt fram och erkänner att jag tänkte lite väl snabbt och inte tillräckligt noga så det blev visst ett par snabba vurpor där...sorry!
// JohanSv: Returtyp
/TomasSv:Returtyp
Kan du skriva ett litet exempel på hur du skulle vilja att det såg ut när du kallar på funktionen?Sv: Returtyp
<code>
dim text as string
text = MinFunktion(ds.Tables(0).Rows(0).Item("namn"))
dim id as integer
id = MinFunktion(ds.Tables(0).Rows(0).Item("id"))
</code>
Eller nåt i den stilen...
/TomasSv: Returtyp
Sv:Returtyp
Nepp går tyvärr inte. Då får du returnera object men kommer ändå inte bort från en typkonvertering.Sv:Returtyp
string MinFunktion(object source, string destType) { ... }
int MinFunktion(object source, int destType) { ... }
string text;
int id;
text = MinFunktion(ds.Tables(0).Rows(0).Item("namn"), string.Empty);
id = MinFunktion(ds.Tables(0).Rows(0).Item("id"), int.MinValue);
Sv:Returtyp