Avatar billede repsak Nybegynder
22. december 2003 - 22:46 Der er 15 kommentarer og
1 løsning

brug af kant-parentes

Hej, jeg støder ofte på brugen af [ ] i C#, og kan ikke finde ud af hvad de betyder (her tænkes ikke på arraysammanhæng).
Hvad betyder f.eks. følgende?

public static string FormatPercent(object Expression, [Optional][DefaultValue(-1)] int NumDigitsAfterDecimal, [Optional][DefaultValue(TriState.UseDefault)] TriState IncludeLeadingDigit, ...
Avatar billede arne_v Ekspert
22. december 2003 - 23:16 #1
Betydningen er vel åbenlys: optional parameter med default værdi.

Men virker det i nuværende C# ?

Jeg har altid læst at C# ikke understøttede optional arguments.

Hvor har du set den ?
Avatar billede arne_v Ekspert
22. december 2003 - 23:18 #2
Jeg ved at du har styr på array index, indexers og normale attributter
til pakning af structs og den slags.
Avatar billede repsak Nybegynder
22. december 2003 - 23:22 #3
jeg læser lidt rundt i .NET sourcen:
[MonoTODO]
public static string[] Split(string Expression,
            [Optional]
            [DefaultValue(" ")]
            string Delimiter,
            [Optional]
            [DefaultValue(-1)]
Avatar billede arne_v Ekspert
22. december 2003 - 23:43 #5
Hm.

Det her compiler ikke:

using System;
using System.ComponentModel;
using System.Runtime.InteropServices;

class MainClass
{
    public static void test(int a, [Optional][DefaultValue(-1)] int b)
    {
        Console.WriteLine(a + " " + b);
    }
    public static void Main(string[] args)
    {
        test(1);
        test(1, 2);
    }
}
Avatar billede repsak Nybegynder
22. december 2003 - 23:48 #6
nej jeg har også prøvet (derfor mit spørgsmål :-)
Man kan åbenbart ikke umiddelbart lave det på samme måde som i C++
Avatar billede arne_v Ekspert
22. december 2003 - 23:51 #7
Nope.

C++ og VB.NET kan - C# påståes ikke at kunne
Avatar billede repsak Nybegynder
23. december 2003 - 00:04 #8
ærgeligt at der af .NET-koden ikke fremgår hvordan man kalder det. Jeg har læst lidt rundt på nettet og kan kun bekræfte din påstand. Men alligevel... hvorfor skulle de kode det sådan hvis det ikke kan bruges?
Avatar billede mufoxe Nybegynder
23. december 2003 - 09:17 #9
Hvis du vil bruge en optional param kodet i VB.NET fra C#, kan du kalde den med null som værdi.
Avatar billede repsak Nybegynder
23. december 2003 - 13:54 #10
mufoxe -> er det sådan her du mener? (det virker ikke)

class Test{
    static void Main(){
        PrintName(null);
    }
   
    public static void PrintName([Optional][DefaultValue("Kasper")] string name){
        Console.WriteLine("Your name is: "+name);
    }
}
Avatar billede repsak Nybegynder
30. december 2003 - 17:38 #11
mufoxe -> kan du uddybe? :-)
Avatar billede stefan_v Nybegynder
05. januar 2004 - 14:55 #12
Prøv at kigge på følgende MSDN-side... Det omfatter brugen af params keyword. Det er muligt i C# at angive at en metode skal have n argumenter, fx en metode: void person(string fornavn, params string[] efternavne){...} Man kan altså vælge at indsætte kun fornavn eller fornavn + et-flere efternavne...
Husk dog at params keyword SKAL være sidst i parameter listen...

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfParams.asp

Jeg tror det er det du leder efter... But who knows...
Avatar billede repsak Nybegynder
05. januar 2004 - 15:10 #13
stefan_v -> nej, jeg kender godt til params, men der kan du ikke bruge default værdier :-)
Arnes inglæg 22/12-2003 23:43:51 beskriver meget godt idéen i hvad jeg ønsker.
Avatar billede repsak Nybegynder
25. januar 2005 - 10:48 #14
Ok, men er lige blevet et år mere erfaren... hehe.
Tak for indlæg - og beklager ventetiden...

Points?
Avatar billede stefan_v Nybegynder
25. januar 2005 - 10:55 #15
Kan slet ikke huske det her spørgsmål :) Ligner noget System.Reflection.Attribute...

Nu må du godt lukke det ned :)
Avatar billede repsak Nybegynder
25. januar 2005 - 23:07 #16
luk
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