Avatar billede heloo Nybegynder
23. august 2004 - 13:54 Der er 9 kommentarer og
2 løsninger

optional værdier i metrode parametre

hvordan laver man optional værdier i metode parametre i C#, som man kan i vb ?
Avatar billede bennytordrup Nybegynder
23. august 2004 - 13:56 #1
Det kan du ikke. Du er nødt til at lave overloading.

public void EnMetode(string enParameter) {
  et eller andet;
}
public void EnMetode() {
  EnMetode("Default string");
}
Avatar billede finger Nybegynder
23. august 2004 - 14:00 #2
nogle bruger et "hack" med at give fx et array med som argument der indeholder "argumenter" ikke kønt men det kan virke.

Jeg vil anbefale overloading som benny foreslår.
Avatar billede snepnet Nybegynder
23. august 2004 - 14:00 #3
eksempel fra docs

// cs_params.cs
using System;
public class MyClass
{

  public static void UseParams(params int[] list)
  {
      for ( int i = 0 ; i < list.Length ; i++ )
        Console.WriteLine(list[i]);
      Console.WriteLine();
  }

  public static void UseParams2(params object[] list)
  {
      for ( int i = 0 ; i < list.Length ; i++ )
        Console.WriteLine(list[i]);
      Console.WriteLine();
  }

  public static void Main()
  {
      UseParams(1, 2, 3);
      UseParams2(1, 'a', "test");

      int[] myarray = new int[3] {10,11,12};
      UseParams(myarray);
  }
}
Avatar billede snepnet Nybegynder
23. august 2004 - 14:01 #4
finger.... hvorfor synes du det er et hack ?
det er sådan metoder som
String.Format("hej {0}","finger");
kan komme til at fungere...
Avatar billede finger Nybegynder
23. august 2004 - 14:05 #5
jooo... det kan da virke, men kodemæssigt ynes jeg det er grimt. man misser jo alt det check af koden som kompileren leverer ved kompilering.
Hvis en udeforstående skal kalde din kode og man hmmm "ikke har dokumenteret" så meget har man jo ingen chance for at vide hvad der skal puttes i arrayet.
det virker, men kønt er det ikke :-)
Avatar billede snepnet Nybegynder
23. august 2004 - 14:16 #6
det synes jeg er lidt spidst at sige, hvis jeg må være så fri (det er slet ikke for at vøre ubehøvlet eller noget :o).
men... hvis man koder mod et framework, hvor den type af metoder eksisterer synes jeg man må anderkende det som praksis.

det er jo netop i situationer, hvor du laver en generisk funktionalitet som ikke forudsætter bestemte typer (eller et bestemt antal af dem), at du ville bruge sådan noget som :
params object[] list.

Så man kan jo sige, at man ikke har en jordisk chance for at fortælle nogle hvad der skal ind i arrayet - da det er op til udvikleren selv.

Jeg synes hverken det er kønt eller "ikke kønt"... og jeg vil give dig fuldstændig ret i, at det nok er de færreste udviklingsopgaver som fordrer den slags kode.

Men hvis nu heloo er ved at lave sit eget framework, hvor han gerne vil implementere en metode der kan oplyse ham om det samlede memmoryforbrug af udvalgte objekter, synes jeg da at det kan give rigtig god mening bruge den slags.

med absolut venlig hilsen
Avatar billede finger Nybegynder
23. august 2004 - 14:27 #7
fornuftigt og godt argumenteret :).
Men jeg ville selv kun bruge det som du foreslår internt i mit eget framework hvor jeg kun selv skulle kalde det.

ud af til ville jeg lave overloadede metoder.

Men det er jo sikkert en smags sag. (eller et religions spørgsmål :-D)
Avatar billede snepnet Nybegynder
30. august 2004 - 00:09 #8
hihi - ja der er sjovt nok en hel del relegion i software ;o)
jeg smider et svar her heloo, hvis du kunne bruge noget af det jeg skrev til noget.
mvh
Avatar billede heloo Nybegynder
30. august 2004 - 11:03 #9
det er ok, tak
Avatar billede heloo Nybegynder
30. august 2004 - 11:04 #10
når jeg accepterer sker der ikke en skid ???
Avatar billede heloo Nybegynder
30. august 2004 - 11:05 #11
oki det var f40, zez ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester