12

これが私の方法です:

public void SomeQuery(string email = "", Guid userId = Guid.Empty)
{
   // do some query
}

userIdコンパイル時の定数である必要があるため、エラーが発生します。これは理解しています。しかし、const を宣言する場合でも:

private const emptyGuid = Guid.Empty;

次に、メソッドのシグネチャを次のように変更します。

public void SomeQuery(string email = "", Guid userId = emptyGuid)
{
   // do some query
}

まだ愛がない。

私は何が欠けていますか?

4

3 に答える 3

20

Guidalaの新しいインスタンスに設定してみましたか:

public void SomeQuery(string email = "", Guid userId = new Guid())
{
   // do some query
}

トリックを行う必要があります。

于 2010-08-04T00:43:36.323 に答える
2

Guid を必要としないバージョンでメソッドをオーバーロードすることは、より良い解決策ではないでしょうか? これは問題を解決し、私の意見ではより良い設計になるでしょう. もちろん、この設計が必要であることに気付いていない他の制約があるかもしれません。

于 2010-08-04T00:43:23.657 に答える
2

たぶんそれが役立つでしょう(演算子 ?? と Guid の null 許容型を使用)

public void some_method(string name, Guid? guid = null)
{
        _name = name;
        _guid = guid ?? Guid.NewGuid();
}
于 2012-07-25T08:24:43.190 に答える