Finnes det en enklere måte å passere en gruppe variabler som en matrise

stemmer
3

Det jeg prøver å gjøre er å skrive en egen metode for min Stream eksempel, i stedet for å gjøre bruk av den på tilfeldige punkter i programmet. Dette lokaliserer de stedene der klassen kalles, så er det noen bugs med den nåværende måten det er gjort.

Her er hva jeg har i øyeblikket:

public static void Write(string[] stringsToWrite) {

    writer = new StreamWriter(stream);

    writer.Write(hello);

    foreach (string stringToWrite in stringsToWrite) {
        writer.Write(  + stringToWrite +  );
    }

    writer.Flush();
}

Merk: strøm er en forekomst av en TcpClient

Med dette er jeg i stand til å passere en rekke variabler for å skrive, men jeg kan ikke bruke samme metode samtaler som med den eksisterende metoden:

writer.WriteLine(hello {0} {1} {2}, variable1, variable2, variable 3);
writer.Flush();

Det ville være flott om jeg var i stand til å passere x antall variabler til metoden og for loopen til å skrive hver av dem på denne måten, men valgfrie parametere i .NET ikke kommer till v4.0 som fortsatt er i beta.

Noen ideer?

Publisert på 19/10/2009 klokken 11:18
kilden bruker
På andre språk...                            


5 svar

stemmer
8

Du kan ta en titt på params søkeord :

public static void Write(params string[] stringsToWrite) {
    ...    

    foreach (string stringToWrite in stringsToWrite) {
        writer.Write(" " + stringToWrite + " ");
    }

    ...
}

Bruk ville være akkurat det du vil, da.

Svarte 19/10/2009 kl. 11:20
kilden bruker

stemmer
2

Bruk params:

public static void Write(params string[] stringsToWrite) {
    ... // your code here
}

Ring så Write(a, b, c), noe som ville være tilsvarende Write(new string[] {a, b, c}).

Svarte 19/10/2009 kl. 11:21
kilden bruker

stemmer
1

Bruk en param rekke!

public void Write(params string[] oStrings)
{
}
Svarte 19/10/2009 kl. 11:21
kilden bruker

stemmer
3

Bruk params søkeordet på metoden:

public static void Write(params string[] stringsToWrite) {

Deretter kan du si

Write("Hello", "There")

Du kan fortsatt passere i en vanlig array, så mye som WriteLineville akseptere en.

Svarte 19/10/2009 kl. 11:21
kilden bruker

stemmer
3

params(Allerede nevnt) er den åpenbare svaret i de fleste tilfeller. Merk at du kanskje også vurdere alternativer, for eksempel:

static void Main() {
    string s = Format("You are {age} years old and your last name is {name} ",
        new {age = 18, name = "Foo"});
}

Som vist her og diskutert mer her .

Svarte 19/10/2009 kl. 11:25
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more