1

C# で 2 つのパラメーターを持つ関数を定義したいのですが、それらには次のような既定値があります。

    public T AccessEntity(string Id = null, string File = null)
    {
        return (from e in ServiceContext.CreateQuery<T>(TableName)
                where e.RowKey == Id || e.File == File
                select e).FirstOrDefault();
    }

この関数を使用すると、ユーザーはファイルまたは ID でレコードを検索できますが、ユーザーがファイルでレコードを検索しようとすると、最初の引数としてダミー値を渡さずに、最初の引数を 2 番目の仮パラメーターにマップする方法がわかりません。

これいらない : invokingobj.AccessEntity(null, "name of file");

これは可能ですか?

4

6 に答える 6

5

名前付き引数を使用できます:

invokingobj.AccessEntity(File: "name of file")

ただし、通常の .NET 命名規則に準拠するために、パラメーターの名前を に変更する必要があることに注意してください(「パラメーター名にはキャメル ケーシングを使用してください」)。file

余談ですが、MSDN を含むほぼ全員が、ここでの 2 つの既定値の名前について混乱しています。これらはオプションのパラメーター(デフォルト値で装飾されたパラメーター) ですが、名前付き引数です(パラメーターには常に名前がありました。C# 4 で名前を指定できるのは引数です)。

于 2012-07-23T16:16:12.103 に答える
3

名前付きパラメーター引数を使用してメソッドを呼び出すことができます。

invokingobj.AccessEntity(File: "name of file");

名前付き引数とオプションのパラメーターの使用に関する詳細は、次の場所にあります。

名前付き引数と省略可能な引数 (C# プログラミング ガイド)

于 2012-07-23T16:16:04.227 に答える
1

これいらない :invokingobj.AccessEntity(null, "name of file");

あなたがする必要はありません - あなたがすることができます:

invokingobj.AccessEntity(File:"name of file");

名前付きパラメーター機能を使用して、関数を呼び出すときに設定するパラメーターを定義できます。

于 2012-07-23T16:16:12.917 に答える
1

名前付きパラメータを使用する:

invokingObj.AccessEntity(file: "name of file");
于 2012-07-23T16:17:17.673 に答える
0

はい、これを試してください:

 invokingobj.AccessEntity(File: "name of file");

この言語機能は「名前付きパラメーター」と呼ばれ、よく知られている「オプションのパラメーター」を拡張したものです。

于 2012-07-23T16:17:02.317 に答える
0

1 つのオプションは、いくつかの異なるメソッドを作成することです。(パラメーターの型が異なる場合は、異なるオーバーロードを持つことができますが、それらは両方であるため、stringできません。)

public T AccessEntityById(string Id)
{
    return AccessEntity(Id, null);
}

public T AccessEntityByFile(string file)
{
    return AccessEntity(null, file);
}
于 2012-07-23T16:18:00.453 に答える