我需要在整个应用程序的许多地方使用一个字符串,它是它的变体。例如:
String myString = "The Quick Brown Fox";
string someLowerCaseString = myString.ToLower();
string someUpperCaseString = myString.ToUpper();
string someOtherNewString = myString.Replace(' ','+');
我将此字符串放在我在整个应用程序中引用的
Constants.cs
文件中。我尝试了两种不同的方法:
public const String myString = "The Quick Brown Fox";
public static readonly String myString = "The Quick Brown Fox";
但是,当我尝试“操作”字符串以在
switch
→ case
语句中使用时,我无法让它工作:
switch(some_value){
case Constants.myString.ToLower():
case Constants.myString.ToUpper():
case Constants.myString.Replace(' ','+'):
}
我收到错误:
CS0426: The type name 'myString' does not exist in the type 'Constants'
我什至尝试过这个:
String localString = Constants.myString.ToLower();
String localString = Constants.myString.ToUpper();
String localString = Constants.myString.Replace(' ','+');
const String localString = Constants.myString.ToLower();
const String localString = Constants.myString.ToUpper();
const String localString = Constants.myString.Replace(' ','+');
switch(some_value){
case localString:
}
那也行不通。我收到错误:
CS9135: A constant value of type 'string' is expected
我不能使用这个:
switch(value.ToLower()){
// ...
}
有时我需要第一个字母大写,有时我需要所有字母大写/小写。
Microsoft C# 官方文档说这些修改方法返回字符串的副本,所以我不认为我实际上是在操作 String 常量。
大小写标签必须是常量,但您可以使用:
if (some_value.Equals(myString, StringComparison.CurrentCultureIgnoreCase) ||
some_value.Equals(myString.Replace(' ', '+'), StringComparison.CurrentCultureIgnoreCase)) {
// ...
}
其中
StringComparison
也可以是 StringComparison.OrdinalIgnoreCase
或 StringComparison.InvariantCultureIgnoreCase
,具体取决于您的需要。
此方法不仅适用于小写或大写字母,还适用于混合大小写。
如果将
myString
设为全部小写字符的常量,并添加第二个带有 +
符号的常量,则可以使 switch 语句起作用:
const String myString = "the quick brown fox";
const String myStringPlus = "the+quick+brown+fox";
switch (some_value.ToLower()) {
case myString:
case myStringPlus:
// ...
break;
// ...
}