是否有一种方法可以优化此代码并在web.config设置上进行此扩展,以便我可以从那里阅读,以后如果我需要添加或删除我应该能够轻松完成?
if (fileExt.ToLower() == ".rtf" ||
fileExt.ToLower() == ".xls" ||
fileExt.ToLower() == ".doc" ||
fileExt.ToLower() == ".png" ||
fileExt.ToLower() == ".gif" ||
fileExt.ToLower() == ".txt" ||
fileExt.ToLower() == ".jpg" ||
fileExt.ToLower() == ".pdf" ||
fileExt.ToLower() == ".htm" ||
fileExt.ToLower() == ".html" ||
fileExt.ToLower() == ".rar" ||
fileExt.ToLower() == ".zip")
{
答案 0 :(得分:1)
如果您想使用web.config,我建议您使用自定义配置部分。通过这种方式,您可以枚举返回的强类型结果。链接如下
您可以使用哈希表来存储值,只需在其中进行搜索,它将比数组或列表更快。代码看起来像这样
下面的伪代码,你必须检查变量是否在哈希表中。
Hashtable fileExtsions = new Hashtable();
if (fileExtensions[extensionOfFileInquestion])
{
do some code
}
所以你要做的就是检查文件的扩展名是否在哈希表中。这将限制你的if语句,并且比数组更快。您可以使用可枚举的自定义配置部分填充哈希表。
缺点是散列表会占用更多内存然后是数组字符串,但最后你可能会更开心
答案 1 :(得分:0)
您可以使用list:
string[] yourarray = { ".rtf", ".xls",".doc",".png",".gif",".txt",
".jpg",".pdf",".htm",".html",".rar",".zip" };
var foundedString = Array.Find(yourarray, str => str.ToLower().Equals(fileExt));
if (foundedString == null)
{
//Not Found
}
else
{
//Code here
}
答案 2 :(得分:0)
string[] extensions = { ".rtf", ".xls", ".doc", ".png", ".gif", ".txt",
".jpg", ".pdf", ".htm", ".html", ".rar", ".zip" };
if (extensions.Contains(fileExt.ToLower())){
}
所有IEnumerable<string>
都有扩展方法Contains(string value)
。您可以在我的示例中使用任何IEnumerable<string>
代替string[]
。
答案 3 :(得分:0)
在你的web.config中......
<appSettings>
<add key="ValidExtensions" value="rtf,xls,doc,png,gif,txt,jpg,pdf" />
</appSettings>
在你的代码隐藏......
fileExt = fileExt.ToLower().TrimStart(".")
Dim ConfigSetting As String = ConfigurationManager.AppSettings("ValidExtensions")
Dim Extensions As String() = ConfigSetting.Split(",")
Dim IsValid As Boolean = (Array.IndexOf(Extensions, fileExt) >= 0)
If IsValid Then
'Yada, yada, yada
Else
'Error
End If
答案 4 :(得分:0)
string[] yourarray = { ".rtf", ".xls",".doc",".png",".gif",".txt",
".jpg",".pdf",".htm",".html",".rar",".zip" };
if(yourarray.Contains(fileExt, StringComparer.OrdinalIgnoreCase))
{
//
}
Contains
是Linq
扩展名。如果性能受到关注,您可以使用Dictionary
及其ContainsKey
,它将执行哈希查找而不是迭代。