2

私は 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
}

これが私が疑問に思っていることです:

  1. クエリ文字列「名前」が URL で定義されていない場合、Request.QueryString は何を返しますか? 空文字列?null?
  2. を返す場合、文字列を期待するメソッドnullに渡そうとするとどうなりますか? nullプログラム全体がばらばらになっていますか、それともnullDoSomething() メソッドの内部を確認できますか (ヌル文字列を受け取った後)?

「名前」はオプションなので、ユーザーが設定しない場合は、それを検出してデフォルト値に初期化したいと思います。ただし、可能であれば、文字列を要求するすべてのページでチェックを行うのではなく、DoSomething() 内に検証を配置したいと考えています。

前もって感謝します!

4

2 に答える 2

4

「name」がクエリ文字列で定義されていない場合、実際に が返されnullます。メソッドに null を渡そうとすると (string.Formatたとえば)、通常はArgumentNullException. これを処理する良い方法は、値を渡すときに null 合体演算子を使用することDoSomethingです。たとえば、次のようになります。

DoSomething (Request.QueryString["name"] ?? "MyDefaultString");

DoSomethingただし、これはあなたのものなので、コードを DRY に保つために、このロジックを (再利用するかどうかに応じて) そこに配置することを選択できます。

于 2010-11-03T17:25:06.447 に答える
1

1.) null を返す必要があります。2.) 文字列は null 可能であるため、これで問題ありません。あなたが指摘したように、関数の最初からnullであることを確認したいと言われています

于 2010-11-03T17:25:00.030 に答える