为什么在ConfigurationManager.AppSettings [key]上调用.ToString()?

Ele*_*ley 3 .net c# asp.net tostring appsettings

我不确定这是否会归结为意见问题,但我一直看到代码中的模式,我不明白.

在所有C#应用程序中,我一直看到表达式:

System.Configuration.ConfigurationManager.AppSettings["key"].ToString()
Run Code Online (Sandbox Code Playgroud)

很长一段时间以来,我认为这只是我工作的一个怪癖,但我搜索了它,看起来它不仅仅是一些一次性的事情.人们做了相当多的事情,但据我所知,并没有真正谈到它.

例如,这个博客确保调用.ToString()AppSettings,这个博客也是如此

此外,所有关于此问题的程序员都要确保调用.ToString()AppSettings集合.

为了确保我不会发疯,我在Visual Studio中翻转了该方法,这确保了,是的,AppSettings[key]强类型字符串,并且在调用时"没有执行实际的转换" .ToString().

在我看来,唯一真正的区别是AppSettings[key]和AppSettings[key].ToString()抛出NullReferenceException的可能性.

所以我的问题是:

这样做是否有任何技术原因,或者出于某种原因它是广泛推荐的C#最佳实践,还是仅仅是一个没有实际意义的奇怪怪癖?

Pat*_*man 6

这样做是否有任何技术原因,或者出于某种原因它是广泛推荐的C#最佳实践,还是仅仅是一个没有实际意义的奇怪怪癖?

后者.打电话没用ToString.它只能造成伤害.

ConfigurationManager.AppSettings是类型NameValueCollection,访问者从中返回一个字符串.通话ToString只会导致NullReferenceException.它没有积极的影响.


Dam*_*ver 5

我建议这样的原因可能代码存在是它可能是原来写一个强有力的理由1之前ConfigurationManager在.NET 2中引入的.

以前,可以使用返回的属性访问Configuration该类.遗憾的是,有一个索引器返回而不是.AppSettingsAppSettingsSectionobjectstring

在将代码升级到.NET 2时,他们会看到使用的建议,ConfigurationManager并且将执行最少量的编辑以使其代码使用此类.并没有考虑/考虑删除ToString()现在多余的尾随.


1正如评论中所讨论的那样,它很可能是很久以前编写的,很久以前就已经升级了.但是这种代码将被复制和粘贴很多,因此几乎可以通过病毒式传播.