Co oznacza {0}, gdy znajduje się w ciągu w C #?

85

W słowniku takim jak ten:

Dictionary<string, string> openWith = new Dictionary<string, string>();

openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");

Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);

Wynik to:

Dla Key = "rtf" wartość = wordpad.exe

Co to {0}oznacza?

Ricardo
źródło

Odpowiedzi:

180

Drukujesz sformatowany ciąg. {0} oznacza wstawienie pierwszego parametru po ciągu formatu; w tym przypadku wartość skojarzona z kluczem „rtf”.

Dla String.Format, który jest podobny, gdybyś miał coś takiego jak

//            Format string                    {0}           {1}
String.Format("This {0}.  The value is {1}.",  "is a test",  42 ) 

utworzyłbyś ciąg „To jest test . Wartość to 42 ”.

Możesz także używać wyrażeń i wielokrotnie drukować wartości:

//            Format string              {0} {1}  {2}
String.Format("Fib: {0}, {0}, {1}, {2}", 1,  1+1, 1+2) 

dając „Fib: 1 , 1 , 2 , 3

Więcej informacji można znaleźć pod adresem http://msdn.microsoft.com/en-us/library/txafckwd.aspx , który mówi o formatowaniu kompozytowym.

Daniel LeCheminant
źródło
25

To symbol zastępczy w ciągu.

Na przykład,

string b = "world.";

Console.WriteLine("Hello {0}", b);

wygeneruje następujący wynik:

Hello world.

Możesz też mieć dowolną liczbę symboli zastępczych. Działa to również na String.Format:

string b = "world.";
string a = String.Format("Hello {0}", b);

Console.WriteLine(a);

I nadal uzyskasz ten sam wynik.

Steven DeWitt
źródło
11

Oprócz wartości, którą chcesz wydrukować {0} {1}, itp. Możesz określić format. Na przykład {0,4}będzie to wartość dopełniana do czterech spacji.

Istnieje wiele wbudowanych specyfikatorów formatu, a ponadto możesz tworzyć własne. Aby uzyskać przyzwoity samouczek / listę, zobacz formatowanie ciągów w języku C # . Ponadto, nie jest FAQ tutaj .

Muad'Dib
źródło
6

Na przyszłość w programie Visual Studio możesz spróbować umieścić kursor w nazwie metody (na przykład WriteLine) i nacisnąć, F1aby wyświetlić pomoc dotyczącą tego kontekstu. Poszperanie powinno wtedy znaleźć cię String.Format()w tym przypadku, z mnóstwem pomocnych informacji.

Zwróć uwagę, że podświetlenie zaznaczenia (na przykład dwukrotne kliknięcie lub przeciągnięcie i zaznaczenie) i naciśnięcie F1powoduje tylko niekontekstowe wyszukiwanie ciągu (co zwykle jest do dupy w znalezieniu czegoś pomocnego), więc upewnij się, że umieściłeś kursor w dowolnym miejscu słowo bez podświetlania go.

Jest to również przydatne w przypadku dokumentacji klas i innych typów.

Rob Parker
źródło
5

Jest to symbol zastępczy dla pierwszego parametru, który w twoim przypadku przyjmuje postać „wordpad.exe”.

Gdybyś miał dodatkowy parametr, użyłbyś {1}itp.

Bravax
źródło
4

Jest to symbol zastępczy parametru, podobnie jak specyfikator %sformatu, który działa wewnątrz printf.

Możesz zacząć dodawać tam dodatkowe rzeczy, aby określić format, chociaż ma to większy sens w przypadku zmiennej numerycznej ( przykłady tutaj ).

Mata
źródło
0

To właśnie nazwaliśmy formatowaniem złożonym w .NET Framework, aby przekonwertować wartość obiektu na jego reprezentację tekstową i osadzić tę reprezentację w ciągu. Wynikowy ciąg jest zapisywany w strumieniu wyjściowym.

Przeciążona metoda Console.WriteLine (String, Object) Zapisuje tekstową reprezentację określonego obiektu, po której następuje bieżący terminator wiersza, do standardowego strumienia wyjściowego przy użyciu określonych informacji o formacie.

sujith karivelil
źródło