C# 我应该如何处理可选查询字符串的值?
我对C#和ASP.NET还很陌生,所以请在这一点上耐心听我说。我正在设置一个从url接收查询字符串的页面。然后它将这些字符串传递给另一个方法(实际上是在另一个类中),该方法根据查询字符串的值执行许多操作 一般结构如下所示,其中C# 我应该如何处理可选查询字符串的值?,c#,asp.net,null,request.querystring,C#,Asp.net,Null,Request.querystring,我对C#和ASP.NET还很陌生,所以请在这一点上耐心听我说。我正在设置一个从url接收查询字符串的页面。然后它将这些字符串传递给另一个方法(实际上是在另一个类中),该方法根据查询字符串的值执行许多操作 一般结构如下所示,其中DoSomething()实际上是另一个类的一部分,将由许多不同的页面使用: pretected void Page_Load (object sender, EventArgs e) { DoSomething (Request.QueryString["name
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
}
我想知道的是:
null
,如果我尝试将null
传递给一个需要字符串的方法,会发生什么?整个程序是否崩溃,或者我是否可以在DoSomething()方法中检查null
(在接收到null字符串后)null。如果试图将null传递给方法(例如string.Format
),通常会得到ArgumentNullException
。处理此问题的一个好方法是在将值传递到DoSomething
时使用空合并运算符,例如:
DoSomething (Request.QueryString["name"] ?? "MyDefaultString");
既然DoSomething
是你的,你可以选择把这个逻辑放在那里(取决于它是否被重用),以保持你的代码干燥。你可以试试看:)如果我不确定某个东西会如何运行,我会打开一个快速测试网站进行测试。在过去,我将类似的东西包装在属性中,这对我来说很好。这取决于您如何使用它,以及您可能希望将值存储在get访问器中的temp变量中的频率。实际上,尝试它不会有什么坏处——我现在正在进行这一过程。不过,因为C#不完全是我的专长,我有点担心我会忽略一些可能最终破坏整个事情的东西。因此,我正在询问专家