C# 重写长if语句以更加一致
写这么长的if语句更好吗?唯一改变的是条件中的C# 重写长if语句以更加一致,c#,asp.net,C#,Asp.net,写这么长的if语句更好吗?唯一改变的是条件中的d=… <% if ( Request.Url.ToString().Contains("d=36423") || Request.Url.ToString().Contains("d=39252") || Request.Url.ToString().Contains("d=39280") || Request.Url.ToString().Contains("d=39251") || Request.Url.ToString().Conta
d=…
<%
if (
Request.Url.ToString().Contains("d=36423")
|| Request.Url.ToString().Contains("d=39252")
|| Request.Url.ToString().Contains("d=39280")
|| Request.Url.ToString().Contains("d=39251")
|| Request.Url.ToString().Contains("d=39246")
|| Request.Url.ToString().Contains("d=39245")
|| Request.Url.ToString().Contains("d=39244")
|| Request.Url.ToString().Contains("d=39243")
|| Request.Url.ToString().Contains("d=39242")
|| Request.Url.ToString().Contains("d=39241")
|| Request.Url.ToString().Contains("d=39240")
|| Request.Url.ToString().Contains("d=26009")
|| Request.Url.ToString().Contains("d=39239")
|| Request.Url.ToString().Contains("d=39238")
|| Request.Url.ToString().Contains("d=39237")
|| Request.Url.ToString().Contains("d=38816")
)
{%>
<div class="page-desktop-nav">
<%} else {%>
<div class="mobile-nav">
<%}%>
您应该使用Request.QueryString[“d”]
查找d
参数的值,然后检查它是否包含在数组或集合中。您可以将所有十进制值存储在一个数组中,并在for循环中写入d=arr[i]
它将删除您多次编写的同一行代码
谢谢。您可以将值存储在一个数组中,并使用如下方法:
<%
var arr = new string[]
{
"36423",
"39252",
"39280",
"39251",
"39246",
"39245",
"39244",
"39243",
"39242",
"39241",
"39240",
"26009",
"39239",
"39238",
"39237",
"38816"
};
string url = Request.Url.ToString();
if (arr.Any(s => url.Contains(string.Format("d={0}", s)))) {
%>
url.Contains(string.Format(“d={0}”,s))){
%>
可能会将这些扩展方法添加到您的库中:
static public class ExtensionMethods
{
static public bool ContainsAny(this string input, IEnumerable<string> searchFor)
{
return searchFor.Any( s => input.Contains(s) );
}
static public bool ContainsAny(this string input, params string[] searchFor)
{
return searchFor.Any( s => input.Contains(s) );
}
}
或
哈希集比数组更好。
Contains()
将是一个O(1)而不是O(n)。我在以下方面收到错误:编译器错误消息:CS1061:“System.array”不包含“Any”的定义,并且找不到接受“System.array”类型的第一个参数的扩展方法“Any”(您是否缺少using指令或程序集引用?Any()
是System.Linq
命名空间的扩展方法,您应该添加该命名空间才能工作。我可以这样做吗var arr=new string[]{“36423”、“39252”、“39280”、“39251”、“39246”、“39245”、“39244”、“39243”,“39242”、“39241”、“39240”、“26009”、“39239”、“39238”、“39237”、“38816”};
if (request.Url.ToString().ContainsAny("d=36423","d=39252","d=39280,"etc."))
{
}
var lookup = new[] {"d=36423","d=39252","d=39280","etc"};
if (request.Url.ToString().ContainsAny(lookup))
{
}