C# 优化此代码并使其更具动态性
是否有一种方法可以优化此代码并在web.config设置上进行此扩展,以便我可以从中进行阅读,并且将来如果需要添加或删除,我应该能够轻松地进行C# 优化此代码并使其更具动态性,c#,asp.net,optimization,C#,Asp.net,Optimization,是否有一种方法可以优化此代码并在web.config设置上进行此扩展,以便我可以从中进行阅读,并且将来如果需要添加或删除,我应该能够轻松地进行 if (fileExt.ToLower() == ".rtf" || fileExt.ToLower() == ".xls" || fileExt.ToLower() == ".doc" || fileExt.ToLower(
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")
{
您可以使用列表:
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
}
您可以使用列表:
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
}
如果您想使用web.config,我建议您使用自定义配置部分。通过这种方式,您可以枚举返回的强类型结果。下面的链接 您可以使用哈希表存储值,只需在其中进行搜索,它将比数组或列表更快。代码看起来像这样 在下面的伪E代码中,您必须检查变量是否在哈希表中
Hashtable fileExtsions = new Hashtable();
if (fileExtensions[extensionOfFileInquestion])
{
do some code
}
因此,您所要做的就是检查文件的扩展名是否在哈希表中。这将限制if语句,并且比数组更快。您可以使用自定义配置节enumerable填充哈希表
缺点是哈希表比数组字符串占用更多内存,但最终您可能会更高兴
如果您想使用web.config,我建议您使用自定义配置部分。通过这种方式,您可以枚举返回的强类型结果。下面的链接 您可以使用哈希表存储值,只需在其中进行搜索,它将比数组或列表更快。代码看起来像这样 在下面的伪E代码中,您必须检查变量是否在哈希表中
Hashtable fileExtsions = new Hashtable();
if (fileExtensions[extensionOfFileInquestion])
{
do some code
}
因此,您所要做的就是检查文件的扩展名是否在哈希表中。这将限制if语句,并且比数组更快。您可以使用自定义配置节enumerable填充哈希表
缺点是哈希表比数组字符串占用更多内存,但最终您可能会更高兴
所有IEnumerable
都有扩展方法包含(字符串值)
。在我的示例中,您可以使用任意IEnumerable
而不是string[]
所有IEnumerable
都有扩展方法包含(字符串值)
。在我的示例中,您可以使用任意IEnumerable
而不是string[]
。在web.config中
<appSettings>
<add key="ValidExtensions" value="rtf,xls,doc,png,gif,txt,jpg,pdf" />
</appSettings>
在您的web.config中
<appSettings>
<add key="ValidExtensions" value="rtf,xls,doc,png,gif,txt,jpg,pdf" />
</appSettings>
Contains
是一个Linq
扩展。如果性能是一个问题,您可以使用字典及其ContainsKey
,它将执行哈希查找而不是迭代
Contains
是一个Linq
扩展。如果性能是一个问题,你可以使用字典及其ContainsKey
,它将进行哈希查找而不是迭代。你能自己做这些吗?是的,我能做,只是想看看别人有什么想法。你能自己做吗?是的,我能做,只是想看看别人有什么想法你是说“数组”,不是“名单”,对吗?我看不到任何列表。你的意思是“数组”,而不是“列表”,对吗?我在这里没有看到任何列表。哇,StackOverflow在VB.NET上的语法突出显示做得很好,你不觉得吗?没什么大不了的,但你可能想使用不同的分隔符;在文件名中不是有效字符的字符,如“|”。以防某个疯子真的想要一个带逗号的文件扩展名
(我想,除非你是在Mono上运行,否则所有的赌注都没有!)如果有问题的文件是由用户上传的,那么在Windows下非法的文件名就会成为一个值得关注的问题。我的ASP.NET代码崩溃了,因为一个Mac用户上传了一个名称中带有冒号的文件,我试图将该文件保存到同一个文件名。哇,StackOverflow在VB.NET上的语法高亮显示做得很好,你不觉得吗?没什么大不了的,但你可能想使用不同的分隔符;在文件名中不是有效字符的字符,如“|”。以防某个疯子真的想要一个带逗号的文件扩展名
(我想,除非你是在Mono上运行,否则所有的赌注都没有!)如果有问题的文件是由用户上传的,那么在Windows下非法的文件名就会成为一个值得关注的问题。我的ASP.NET代码崩溃是因为一个Mac用户上传了一个名称中带有冒号的文件,我试图将该文件保存到相同的文件名。