在给定多个值的情况下表示相同值的btter方法(C#3.0)
我有一个情况,我正在寻找一个更优雅的解决方案 考虑以下情况在给定多个值的情况下表示相同值的btter方法(C#3.0),c#,c#-3.0,C#,C# 3.0,我有一个情况,我正在寻找一个更优雅的解决方案 考虑以下情况 "BKP","bkp","book-to-price" (will represent) BOOK-TO-PRICE "aop","aspect oriented program" (will represent) ASPECT-ORIENTED-PROGRAM i、 e.如果用户输入BKP或BKP或book to price,程序应将其视为book to price。第二个例子(面向方面的程序)也是如此 我有以下解决方案: 解决方
"BKP","bkp","book-to-price" (will represent) BOOK-TO-PRICE
"aop","aspect oriented program" (will represent) ASPECT-ORIENTED-PROGRAM
i、 e.如果用户输入BKP或BKP或book to price,程序应将其视为book to price。第二个例子(面向方面的程序)也是如此
我有以下解决方案:
解决方案:
if (str == "BKP" || str == "bkp" || str == "book-to-price" ) return "BOOK-TO-PRICE".
但我认为还有很多其他更好的解决方案
你们能给我一些建议吗?(最好举个例子)
我使用C 3和dotnet框架3.5
我会考虑使用<代码>字典<代码>,可能从配置文件或数据库表中填充,别名与规范名称关系。使用不区分大小写的密钥比较器。比如说,var map = new Dictionary<string,string>( StringComparer.OrdinalIgnoreCase );
map.Add( "bkp", "BOOK-TO-PRICE" );
map.Add( "book-to-price", "BOOK-TO-PRICE" );
map.Add( "aop", "ASPECT-ORIENTED-PROGRAM" );
map.Add( "aspect oriented program", "ASPECT-ORIENTED-PROGRAM" );
这正是我的建议。是的,这里也一样;因为字符串是不可变的,所以没有像C中那样的存储开销(与其他方法相比,即使字符串很大)。
var name = map["bkp"];