Gå til innhold

Anbefalte innlegg

Heisan

Fant ikke dette i MSDN (mulig jeg ikek søkte på rett sted da jeg søkte på ?)

 

Noen metoder blir definert med ? etter datatypen. Som slik: MinMetode(int? pParm)

 

Hva betyr dette? Det kan jo ikke være Optional fordi dette ikke er støttet i C#, så hva kan det være da? Kan det være en slags VAR datatype som i utgangspunktet forventer en INT? Høres jo rart ut, men det er det nærmeste jeg klarer å gjette og da er det godt jeg har dere gutta vettu ;-)

 

Ole

Lenke til kommentar
Videoannonse
Annonse

type? betyr egentlig bare nullable<type>.

 

Dette betyr bare at de kan være NULL. Int som er en value type kan egentlig ikke være det, men med å wrappe dem i nullable<> så får de lov til å være NULL.

 

int? Tall = null;

er egentlig:

nullable<int> Tall = null;

 

 

så... det har ikke noe med "prototype" å gjøre i det heletatt....

Endret av jorn79
Lenke til kommentar
Emnetittelen i denne tråden er lite beskrivende for trådens innhold og det er derfor ingen god emnetittel. Jo bedre og mer beskrivende emnetittelen er, jo lettere er det for andre å skjønne trådens innhold og det vil være lettere å treffe den riktige forumbrukeren med det rette svaret. Ber deg derfor om å endre emnetittel slik at du unngår at en moderator stenger tråden. Vennligst forsøk å tenk på dette neste gang du starter en tråd, og orienter deg om hva vår nettikette sier om dårlig bruk av emnetitler.

Bruk p_edit.gif-knappen i første post for å endre emnetittelen.

 

Tråden bryter også med tre-ords-regelen.

 

(Dette innlegget vil bli fjernet ved endring av emnetittel. Ikke kommenter dette innlegget, men ta gjerne og p_report.gif dette innlegget når tittelen er endret, så vil det bli fjernet.)

 

 

???

 

Er det BOTTER som driver og sender disse meldingene eller?? Hvis ikke så får moderator ta seg sammen !!!

Lenke til kommentar
Er det BOTTER som driver og sender disse meldingene eller?? Hvis ikke så får moderator ta seg sammen !!!

 

:!:

 

Aha. Betyr det at jeg kan droppe parameteret eller må jeg sende inn NULL?

 

Du må nok sende med null ja.

Ja påkker heller! Dette er andre gang dette skjer. Forrige gang stillte jeg et spørsmål som omhandlet Choose kommandoen ? som velger ett av to alternativer på bakgrunn av et uttrykk. Bare fordi emnetittelen har ? i stedet for teksten SPØRSMÅLSTEGN. Det er for dumt, og håper derfor at modereringen er gjort av en BOT.

 

men hvis moderator synes dette er en dårlig emnetittel, bare fordi programmering er et ukjent tema så får mod. bare stenge tråden. Jeg har fått svar på spørsmålet jeg ;-)

Endret av HDSoftware
Lenke til kommentar
Dette er faktisk en vanlig måte å omgå regelen på. For folk som ikke kan programmering er det sikkert ikke så greit å ta det ut av kontekst, og da går det kanskje litt fort. :)

Skjønner det, men er det ikek et poeng at moderatoren bør være en person som har innsikt i forumets tema? Jeg mener, C# er ganske spesifikt, og da bør moderator(ene) være C# programmerer. I det minste bør personen ha grunnleggende kunnskap i programmering. Nesten alle karakterene man treffer med SHIFT og TALL gir mening i C# og burde derfor ikek bli moderert, med mindre selve meldingen bryter med retningslinjene.

Lenke til kommentar
Litt OT her, men vi har globale moderatorer. Med over 200 kategorier. Vi kan ikke ha over 200 moderatorer, ei heller finne moderatorer som har kunnskap innen hvert bidige felt.

 

En ærlig feil, som ga noen av oss en liten latter :)

Ok. Skal ikke dra dette så mye lenger og ser poenget ditt. Bare det at dette minner så veldig om auto moderering, nettop fordi moderator ikke leser innlegget i det hele tatt. Synes moderator bør ta seg tid til å lese meldingen før moderering. I dette tilfellet var selve meldingen rimelig selvforklarende, og en som ikek har programmeringskunnskap ville uten problemer sett at emnetittelen hadde mening.

 

Og du - Å finne en eller flere moderatorer for hver kanal burde ikke være noe stort problem. Mange frekventerer kanalene titt og ofte, ja noen ser til og med ut til å bo i dem ;-) Mye bedre å ha fag kompetente moderatorer en noen som bare svinger innom for å se om det er noen meldinger de kan stoppe. Det minner litt for mye om norske myndigheter ;-)

Lenke til kommentar
  • 3 uker senere...

forøvrig mulig og ha optional parametere ved å bruke params keyword:

 

void Metode(params int[] param)

{

//Do something

}

-------------------------------

Metode(1,2,3,4,5);

Metode();

-------------------------------

 

Det er noen limits med dette, men det fungerer sånn ca ok.

Lenke til kommentar

En ganske dårlig løsning, egentlig. Da denne kun kan ta en type, med mindre du bruker object[] params, som blir en litt VEL grisete måte å gjøre det på.

 

Men jeg savner den muligheten bl.a. C++ har til default-verdier på parametre... Har irritert meg grønn over at det ikke går i C# flere ganger.

Lenke til kommentar
En ganske dårlig løsning, egentlig. Da denne kun kan ta en type, med mindre du bruker object[] params, som blir en litt VEL grisete måte å gjøre det på.

 

Men jeg savner den muligheten bl.a. C++ har til default-verdier på parametre... Har irritert meg grønn over at det ikke går i C# flere ganger.

Jeg er også vandt til å kunne prototype med default parametere i Clarion

Der kunne jeg prototype slik:

 

MinProc PROCEDURE(long EnlangEn, <string EnStreng>, byte EnByte = 5)

 

den midterste er rett og slett omittable som defaulter til NULL og den siste er default verdi. Så kunne jeg i koden sjekke med OMITTED() funksjonen slik:

if OMITTED(2)
  ! Andre parameter er omittet
End!If

if Omitted(EnByte)
  ! EnByte parameteret er omitted
End!if

Men når dette er sagt, så er jo C# måten egentlig ganske grei da. dA HAR MAN FAKTISK VELDIG GOD KONTROLL PÅ NÅR TING SKJER OG MAN (påkkers capslock) kan håndtere alle situasjoner på en veldig bra måte

Lenke til kommentar

Standard måten å ha metoder med "defaultverdier" er å bruker method overloading.

 

Slik

void MinProc(long enLangEn, string enStreng, byte enByte) {...}

void MinProc(long enLangEn, byte enByte {
 MinProc(enLangEn, "default", enByte);
}

 

Man kan og bruke nullable typer men da krever det at den som skal bruke metodene må enten bruke nullable typer eller caste de når metoden kalles.

Endret av wallatu
Lenke til kommentar
Standard måten å ha metoder med "defaultverdier" er å bruker method overloading.

 

Slik

void MinProc(long enLangEn, string enStreng, byte enByte) {...}

void MinProc(long enLangEn, byte enByte {
 MinProc(enLangEn, "default", enByte);
}

 

Man kan og bruke nullable typer men da krever det at den som skal bruke metodene må enten bruke nullable typer eller caste de når metoden kalles.

Jada. Vet om overloading og slikt. Jeg blei vel litt interresert i den varianten med variabelt antall parametere av en og samme type. Har jo sett dette tidligere i et C++ program jeg har tuklet litt i

Lenke til kommentar

Hadde vi ikke visst om method overloading ville kanskje spørsmålet vårt vært litt annet?

 

Og som HDSoftware sier, så kan man sette default-verdier i C++ og slikt..

 

Jeg har løst det i en funksjon som dette:

 

public string myFunc(string tekst, int? var)
{
  int myVar = var ?? 240;
}

Lenke til kommentar
Hadde vi ikke visst om method overloading ville kanskje spørsmålet vårt vært litt annet?
Det er mulig, jeg bare påpekte at et av problemene med å bruke nullable verdier er at man legger en føring på bruken av funksjonen. Når du lager en funksjon som tar int? bare fordi den skal ha en defaultverdi krever du at når du skal bruke den funksjoen må du enten bruke int? typen selv, caste til int? eller skrive inn en null som ikke har noen funksjon.

 

Personlig synes jeg at method overloading i de fleste tilfeller gir et mye renere grensesnitt og utfører akkurat det samme.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...