C# 需要一种更有效的id比较方法吗
所以我一直在尝试使用switch语句来创建不同的ID。我只是想知道是否有另一种有效的方法,因为身份证的数量可能会增加,我不需要太多的案例陈述 这是我目前的代码C# 需要一种更有效的id比较方法吗,c#,.net,asp.net-mvc,C#,.net,Asp.net Mvc,所以我一直在尝试使用switch语句来创建不同的ID。我只是想知道是否有另一种有效的方法,因为身份证的数量可能会增加,我不需要太多的案例陈述 这是我目前的代码 foreach (var rl in invalidItemsLogModel) switch(rl.ErrorCategoryType) { case 1: rl.ErrorDescriptio
foreach (var rl in invalidItemsLogModel)
switch(rl.ErrorCategoryType)
{
case 1:
rl.ErrorDescription = Resources.Misc.InvalidItemGridText.ErrorMandatoryField;
break;
case 2:
rl.ErrorDescription = Resources.Misc.InvalidItemGridText.AKACountryCodeApplied;
break;
case 3:
rl.ErrorDescription = Resources.Misc.InvalidItemGridText.ErrorFutureIssueDate;
break;
default: break;
}
是否有其他方法可以循环使用id,而不必为每个id创建新的case语句?使用数组作为错误文本
string[] errors = new { null, ErrorMandatoryField,
AKACountryCodeApplied,ErrorFutureIssueDate};
foreach (var rl in invalidItemsLogModel)
if (rl.ErrorCategoryType < errors.Length)
rl.ErrorDescription = error[rl.ErrorCategoryType];
如果错误代码是非连续的,则开关已经是最佳的。它将自行决定是使用表还是字典进行查找。在这种情况下,性能增益是最小的,我认为根本没有,因为switch的作用与我的代码片段完全相同。使用数组作为错误文本
string[] errors = new { null, ErrorMandatoryField,
AKACountryCodeApplied,ErrorFutureIssueDate};
foreach (var rl in invalidItemsLogModel)
if (rl.ErrorCategoryType < errors.Length)
rl.ErrorDescription = error[rl.ErrorCategoryType];
如果错误代码是非连续的,则开关已经是最佳的。它将自行决定是使用表还是字典进行查找。在这种情况下,性能增益是最小的,我认为根本没有,因为switch的作用与我的代码片段完全相同。您可以使用字典
var errorMessages = new Dictionary<int, String>(){
{1, Resources.Misc.InvalidItemGridText.ErrorMandatoryField},
... etc
}
rl.ErrorDescription = errorMessages[ErrorCategoryType];
你可以用字典
var errorMessages = new Dictionary<int, String>(){
{1, Resources.Misc.InvalidItemGridText.ErrorMandatoryField},
... etc
}
rl.ErrorDescription = errorMessages[ErrorCategoryType];
这个代码到底有什么问题?如果您必须在每个元素的categorytype之间有所不同,那么您当然需要通过循环每个元素的categoyr。当然,您可以使用一些LINQ,但是这只会隐藏复杂性。在幕后,同样的事情也会发生。你可以使用一种设计模式,比如责任链:你对这段代码到底有什么问题?如果您必须在每个元素的categorytype之间有所不同,那么您当然需要通过循环每个元素的categoyr。当然,您可以使用一些LINQ,但是这只会隐藏复杂性。在幕后,同样的事情也会发生。你可以使用一种设计模式,例如:责任链:谢谢!我已经申请了这本词典,现在看起来好多了。谢谢!我已经应用了字典,现在看起来好多了。谢谢,我会尝试用这种方式实现,看看它是如何工作的。谢谢,我会尝试用这种方式实现,看看它是如何工作的。