【发布时间】:2018-07-08 07:37:41
【问题描述】:
我不确定这是否会归结为意见问题,但我一直在代码中看到我不理解的模式。
在所有 C# 应用程序中,我一直看到这样的表达:
System.Configuration.ConfigurationManager.AppSettings["key"].ToString()
很长一段时间以来,我认为这只是我工作的一个怪癖,但我搜索了一下,它似乎不仅仅是一些一次性的东西。人们这样做了很多,但据我所知,它并没有真正被谈论过。
例如,这个blog 确保在AppSettings 上调用.ToString(),this blog 也是如此
此外,all the programmers on this question 确保在 AppSettings 集合上调用 .ToString()。
为了确保我不会发疯,我在 Visual Studio 中翻转了该方法,这向我保证,是的,AppSettings[key] 被强输入为字符串,并且在调用 @ 时“没有执行实际转换” 987654328@.
在我看来,AppSettings[key] 和 AppSettings[key].ToString() 之间唯一真正的区别是抛出 NullReferenceException 的可能性。
所以我的问题是:
这样做是否有任何技术原因,还是出于某种原因,它是被广泛推荐的 C# 最佳实践,还是只是一个没有实际意义的怪癖?
【问题讨论】:
-
你会在糟糕的代码中看到很多这种模式。一般来说,如果我在除 StringBuilder 之外的任何地方看到
.ToString(),我就会怀疑。这是一种代码气味。我已经更新了您链接到的那些答案,以便它们不再调用 .ToString()。如果您在其他任何地方看到它,请随时留下答案,呼吁他们! -
鉴于
AppSettings["key"]返回一个字符串,下面的ToString()充其量根本没有用,最坏的情况是AppSettings["key"]返回null会导致异常 -
@mason 会的,谢谢!
-
@EleanorHolley 我最初说的是“留下一个答案把他们叫出来”。应该说“评论”而不是“答案”。只有当您直接解决所提出的问题时,您才应该留下答案。只是想确保我没有把你引向错误的方向。我发誓,这一切都在我的脑海里!
标签: c# asp.net .net tostring appsettings