我对 C# 和 ASP.NET 还很陌生,所以请耐心听我讲这一点。我正在设置一个从 url 接收查询字符串的页面。然后它将这些字符串传递给另一个方法(实际上是在另一个类中),该方法根据查询字符串的值继续执行许多操作。
一般结构看起来像这样,其中 DoSomething()
实际上是另一个类的一部分,该类将被许多不同的页面使用:
pretected void Page_Load (object sender, EventArgs e)
{
DoSomething (Request.QueryString["name"]);
}
public void DoSomething (string UrlVariable)
{
// if UrlVariable isn't set, initialize it to some value
// do stuff with UrlVariable
}
这就是我想知道的:
- 如果 url 中未定义查询字符串“name”,Request.QueryString 将返回什么?空字符串?
空
? - 如果它返回
null
,如果我尝试将null
传递给需要字符串的方法,会发生什么情况?整个程序会崩溃吗?或者我可以在 DoSomething() 方法中检查null
吗(收到空字符串后)?
“名称”是可选的,因此如果用户没有设置它,我想检测它并将其初始化为某个默认值。不过,如果可能的话,我想将任何验证放在 DoSomething() 中,而不是在请求字符串的每个页面上进行检查。
提前致谢!
最佳答案
如果查询字符串中没有定义“name”,它确实会返回 null
。如果您尝试将 null 传递给方法(例如 string.Format
),您通常会得到 ArgumentNullException
。处理此问题的一个好方法是在将值传递到 DoSomething
时使用空合并运算符。例如:
DoSomething (Request.QueryString["name"] ?? "MyDefaultString");
自 DoSomething
虽然是您的,但您可以选择将此逻辑放在那里(取决于它是否被重用),以保持代码干燥。
关于c# - 我应该如何处理可选查询字符串的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4089724/