Training
Modul
Einfache Zeichenfolgenformatierung in C# - Training
Kombinieren Sie Literal- und Variablentextdaten, die Sonderzeichen, Formatierungen und Unicode-Zeichen enthalten, zu aussagekräftigen Nachrichten für den Endbenutzer.
Dieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.
Die Eigenschaft IgnoreCase bestimmt, ob beim Vergleich von name
mit den Namen der Ressourcen zwischen Groß- und Kleinschreibung unterschieden wird (Standardeinstellung) oder nicht.
Hinweis
Die GetString Methoden können mehr Ausnahmen auslösen, als aufgelistet sind. Ein Grund hierfür kann sein, wenn eine Methode, die von dieser Methode aufgerufen wird, eine Ausnahme auslöst. Eine FileLoadException-Ausnahme könnte beispielsweise ausgelöst werden, wenn ein Fehler bei der Bereitstellung oder Installation einer Satellitenassembly aufgetreten ist, oder eine SerializationException-Ausnahme könnte ausgelöst werden, wenn ein benutzerdefinierter Typ eine benutzerdefinierte Ausnahme auslöst, wenn der Typ deserialisiert wird.
Bei Desktop-Apps wird die zurückgegebene Ressource auf die Benutzeroberflächenkultur des aktuellen Threads lokalisiert, wie durch die CultureInfo.CurrentUICulture-Eigenschaft definiert. Wenn die Ressource für diese Kultur nicht lokalisiert wurde, sucht der Ressourcen-Manager nach einer Ressource, indem er die im Abschnitt „Ressourcenfallbackprozess“ des Artikels „Packen und Bereitstellen von Ressourcen“ beschriebenen Schritte ausführt. Wenn keine verwendbare Gruppe lokalisierter Ressourcen gefunden wird, greift der Ressourcen-Manager auf die Ressourcen der Standardkultur zurück. Wenn der Ressourcenmanager den Ressourcensatz der Standardkultur nicht laden kann, löst die Methode eine MissingManifestResourceException-Ausnahme aus oder, wenn der Ressourcensatz in einer Satellitenassembly erwartet wird, eine MissingSatelliteAssemblyException-Ausnahme. Wenn der Ressourcen-Manager einen geeigneten Ressourcensatz laden kann, aber keine Ressource mit dem Namen name
finden kann, gibt die Methode zurück null
.
Wichtig
Obwohl die ResourceManager Klasse in Windows 8.x-Apps unterstützt wird, wird die Verwendung nicht empfohlen. Verwenden Sie diese Klasse nur, wenn Sie portable Klassenbibliotheksprojekte entwickeln, die mit Windows 8.x-Apps verwendet werden können. Um Ressourcen aus Windows 8.x-Apps abzurufen, verwenden Sie stattdessen die Windows.ApplicationModel.Resources.ResourceLoader-Klasse .
In Windows 8.x-Apps gibt die GetString(String) Methode den Wert der name
Zeichenfolgenressource zurück, lokalisiert für die aktuellen Benutzeroberflächenkultureinstellungen des Aufrufers. Die Liste der Kulturen wird von der bevorzugten Benutzeroberflächensprachenliste des Betriebssystems abgeleitet. Wenn der Ressourcen-Manager nicht mit name
übereinstimmen kann, gibt die Methode null
zurück.
Im folgenden Beispiel wird die GetString Methode zum Abrufen kulturspezifischer Ressourcen verwendet. Es besteht aus Ressourcen, die aus .txt Dateien für die Kulturen Englisch (en), Französisch (Frankreich) (fr-FR) und Russisch (Russland) (ru-RU) kompiliert wurden. Das Beispiel ändert die aktuelle Kultur und die aktuelle Kultur der Benutzeroberfläche in Englisch (Vereinigte Staaten), Französisch (Frankreich), Russisch (Russland) und Schwedisch (Schweden). Anschließend wird die GetString Methode aufgerufen, um die lokalisierte Zeichenfolge abzurufen, die zusammen mit dem aktuellen Tag und dem aktuellen Monat angezeigt wird. Beachten Sie, dass die Ausgabe die entsprechende lokalisierte Zeichenfolge anzeigt, außer wenn die aktuelle UI-Kultur schwedisch (Schweden) ist. Da schwedische Sprachressourcen nicht verfügbar sind, verwendet die App stattdessen die Ressourcen der Standardkultur, die Englisch ist. Für das Beispiel sind die textbasierten Ressourcendateien erforderlich, die in der folgenden Tabelle aufgeführt sind. Jede verfügt über eine einzelne Zeichenfolgenressource mit dem Namen DateStart
.
Kultur | Dateiname | Ressourcenname | Ressourcenwert |
---|---|---|---|
en-US | DateStrings.txt | DateStart |
Heute ist |
fr-FR | DateStrings.fr-FR.txt | DateStart |
Aujourd'hui, c'est le |
ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
Sie können die folgende Batchdatei verwenden, um das C#-Beispiel zu kompilieren. Ändern Sie für Visual Basic csc
zu vbc
, und ändern Sie die Erweiterung der Quellcodedatei von .cs
zu .vb
.
resgen DateStrings.txt
csc showdate.cs /resource:DateStrings.resources
md fr-FR
resgen DateStrings.fr-FR.txt
al /out:fr-FR\Showdate.resources.dll /culture:fr-FR /embed:DateStrings.fr-FR.resources
md ru-RU
resgen DateStrings.ru-RU.txt
al /out:ru-RU\Showdate.resources.dll /culture:ru-RU /embed:DateStrings.ru-RU.resources
Hier sehen Sie den Quellcode für das Beispiel (ShowDate.vb für die Visual Basic-Version oder ShowDate.cs für die C#-Version).
using System;
using System.Globalization;
using System.Resources;
using System.Threading;
public class Example
{
public static void Main()
{
string[] cultureNames = [ "en-US", "fr-FR", "ru-RU", "sv-SE" ];
ResourceManager rm = new ResourceManager("DateStrings",
typeof(Example).Assembly);
foreach (var cultureName in cultureNames) {
CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
Console.WriteLine($"Current UI Culture: {CultureInfo.CurrentUICulture.Name}");
string dateString = rm.GetString("DateStart");
Console.WriteLine($"{dateString} {DateTime.Now:M}.\n");
}
}
}
// The example displays output similar to the following:
// Current UI Culture: en-US
// Today is February 03.
//
// Current UI Culture: fr-FR
// Aujourd'hui, c'est le 3 février
//
// Current UI Culture: ru-RU
// Сегодня февраля 03.
//
// Current UI Culture: sv-SE
// Today is den 3 februari.
Imports System.Globalization
Imports System.Resources
Imports System.Threading
<Assembly:NeutralResourcesLanguage("en")>
Module Example
Public Sub Main()
Dim cultureNames() As String = { "en-US", "fr-FR", "ru-RU", "sv-SE" }
Dim rm As New ResourceManager("DateStrings",
GetType(Example).Assembly)
For Each cultureName In cultureNames
Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture(cultureName)
Thread.CurrentThread.CurrentCulture = culture
Thread.CurrentThread.CurrentUICulture = culture
Console.WriteLine("Current UI Culture: {0}",
CultureInfo.CurrentUICulture.Name)
Dim dateString As String = rm.GetString("DateStart")
Console.WriteLine("{0} {1:M}.", dateString, Date.Now)
Console.WriteLine()
Next
End Sub
End Module
' The example displays output similar to the following:
' Current UI Culture: en-US
' Today is February 03.
'
' Current UI Culture: fr-FR
' Aujourd'hui, c'est le 3 février
'
' Current UI Culture: ru-RU
' Сегодня февраля 03.
'
' Current UI Culture: sv-SE
' Today is den 3 februari.
In Desktop-Apps, wenn culture
null
ist, verwendet die GetString(String, CultureInfo)-Methode die aktuelle UI-Kultur, die von der CultureInfo.CurrentUICulture-Eigenschaft abgerufen wird.
Die zurückgegebene Ressource wird für die vom culture
Parameter angegebene Kultur lokalisiert. Wenn die Ressource nicht für culture
lokalisiert wurde, sucht der Ressourcen-Manager nach einer Ressource, indem er die im Abschnitt "Ressourcenfallbackprozess" des Themas "Packen und Bereitstellen von Ressourcen" beschriebenen Schritte ausführt. Wenn keine verwendbare Gruppe von Ressourcen gefunden wird, greift der Ressourcen-Manager auf die Ressourcen der Standardkultur zurück. Wenn der Ressourcenmanager den Ressourcensatz der Standardkultur nicht laden kann, löst die Methode eine Ausnahme vom Typ MissingManifestResourceException aus oder, wenn der Ressourcensatz in einer Satellitenassembly erwartet wird, eine Ausnahme vom Typ MissingSatelliteAssemblyException. Wenn der Ressourcen-Manager einen geeigneten Ressourcensatz laden kann, aber keine Ressource mit dem Namen name
finden kann, gibt die Methode zurück null
.
Wichtig
Obwohl die ResourceManager Klasse in Windows 8.x-Apps unterstützt wird, wird die Verwendung nicht empfohlen. Verwenden Sie diese Klasse nur, wenn Sie portable Klassenbibliotheksprojekte entwickeln, die mit Windows 8.x-Apps verwendet werden können. Um Ressourcen aus Windows 8.x-Apps abzurufen, verwenden Sie stattdessen die Windows.ApplicationModel.Resources.ResourceLoader-Klasse .
In Windows 8.x-Apps gibt die GetString(String, CultureInfo) Methode den Wert der name
Zeichenfolgenressource zurück, die für die vom culture
Parameter angegebene Kultur lokalisiert wird. Wenn die Ressource nicht für die culture
Kultur lokalisiert ist, verwendet die Suche die gesamte Fallbackliste für Windows 8-Sprachen und endet bei der Standardsprache. Wenn der Ressourcenmanager name
nicht finden kann, gibt die Methode null
zurück.
Im folgenden Beispiel wird die GetString(String, CultureInfo) Methode zum Abrufen kulturspezifischer Ressourcen verwendet. Die Standardkultur des Beispiels ist Englisch (en), und es enthält Satellitenassemblies für die Kulturen Französisch (Frankreich) (fr-FR) und Russisch (Russland) (ru-RU). Das Beispiel ändert die aktuelle Kultur und die aktuelle UI-Kultur auf Russisch (Russland), bevor es GetString(String, CultureInfo)aufruft. Anschließend ruft sie die GetString Methode und die DateTime.ToString(String, IFormatProvider) Methode auf und übergibt CultureInfo Objekte, die die Kulturen Französisch (Frankreich) und Schwedisch (Schweden) an jede Methode darstellen. In der Ausgabe werden der Monat und der Tag des Monats sowie die Zeichenfolge, die ihnen vorausgeht, in Französisch angezeigt, da die GetString Methode die Französisch-Sprachressource abrufen kann. Wenn jedoch die schwedische Kultur (Schweden) verwendet wird, wird der Monat und der Tag des Monats in Schwedisch angezeigt, obwohl die Zeichenfolge, die ihnen vorausgeht, in Englisch ist. Dies liegt daran, dass der Ressourcenmanager lokalisierte schwedische Sprachressourcen nicht finden kann. Daher wird stattdessen eine Ressource für die englische Standardkultur zurückgegeben.
Für das Beispiel sind die textbasierten Ressourcendateien erforderlich, die in der folgenden Tabelle aufgeführt sind. Jede verfügt über eine einzelne Zeichenfolgenressource mit dem Namen DateStart
.
Kultur | Dateiname | Ressourcenname | Ressourcenwert |
---|---|---|---|
en-US | DateStrings.txt | DateStart |
Heute ist |
fr-FR | DateStrings.fr-FR.txt | DateStart |
Aujourd'hui, c'est le |
ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
Sie können die folgende Batchdatei verwenden, um das Visual Basic-Beispiel zu kompilieren. Wenn Sie in C# kompilieren möchten, ändern Sie vbc
zu csc
und ändern Sie die Erweiterung der Quellcodedatei von .vb
zu .cs
.
resgen DateStrings.txt
vbc showdate.vb /resource:DateStrings.resources
md fr-FR
resgen DateStrings.fr-FR.txt
al /out:fr-FR\Showdate.resources.dll /culture:fr-FR /embed:DateStrings.fr-FR.resources
md ru-RU
resgen DateStrings.ru-RU.txt
al /out:ru-RU\Showdate.resources.dll /culture:ru-RU /embed:DateStrings.ru-RU.resources
Hier sehen Sie den Quellcode für das Beispiel (ShowDate.vb für die Visual Basic-Version oder ShowDate.cs für die C#-Version).
using System;
using System.Globalization;
using System.Resources;
using System.Threading;
public class Example2
{
public static void Main()
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU");
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU");
string[] cultureNames = [ "fr-FR", "sv-SE" ];
ResourceManager rm = new ResourceManager("DateStrings",
typeof(Example).Assembly);
foreach (var cultureName in cultureNames)
{
CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
string dateString = rm.GetString("DateStart", culture);
Console.WriteLine($"{culture.DisplayName}: {dateString} {DateTime.Now.ToString("M", culture)}.");
Console.WriteLine();
}
}
}
// The example displays output similar to the following:
// French (France): Aujourd'hui, c'est le 7 février.
//
// Swedish (Sweden): Today is den 7 februari.
Imports System.Globalization
Imports System.Resources
Imports System.Threading
Module Example2
Public Sub Main()
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU")
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU")
Dim cultureNames() As String = {"fr-FR", "sv-SE"}
Dim rm As New ResourceManager("DateStrings",
GetType(Example).Assembly)
For Each cultureName In cultureNames
Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture(cultureName)
Dim dateString As String = rm.GetString("DateStart", culture)
Console.WriteLine("{0}: {1} {2}.", culture.DisplayName, dateString,
Date.Now.ToString("M", culture))
Console.WriteLine()
Next
End Sub
End Module
' The example displays output similar to the following:
' French (France): Aujourd'hui, c'est le 7 février.
'
' Swedish (Sweden): Today is den 7 februari.
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Training
Modul
Einfache Zeichenfolgenformatierung in C# - Training
Kombinieren Sie Literal- und Variablentextdaten, die Sonderzeichen, Formatierungen und Unicode-Zeichen enthalten, zu aussagekräftigen Nachrichten für den Endbenutzer.