0

プリプロセッサを使用してCで可能なような別のエイリアスを作成する同様の方法を探していました(この質問は少し似ていますが、そこで役立つものは何も見つかりませんでした)。

これが問題です。配列を受け取るメソッドがありますが、配列の各位置には、特定の名前を持つさまざまなパラメーターのように、特定の意味があります。私がやりたいのは、これらの特定の名前を使用してコードを読みやすく (および書きやすく) することですが、一方で、別のメソッド呼び出し (例 1 のように) を作成したり、配列を割り当てたりしたくありません。パフォーマンスが重要であるため、新しい変数に配置します (例 2)。

例 1:

    void OriginalMethodSignature(Type[] values)
    {
        SimplifiedMethod(values[0], values[1], ... values[n]);
    }

    void SimplifiedMethod(Type specificName1, Type specificName2, ... Type specificNameN)
    {
        // simple implementation using specific names instead of values[n]
    }

例 2:

    void OriginalMethodSignature(Type[] values)
    {
        Type specificName1 = values[0];
        Type specificName2 = values[1];
        ...
        Type specificNameN = values[n];
        // simple implementation using specific names instead of values[n]
    }

デリゲートで使用されているため、メソッドのシグネチャを変更できませんType。修正されています。

次の例はもう少し良いですが、まだ最適ではありません:

    void OriginalMethodSignature(Type[] values)
    {
        // implementation using values[specificName1] ... values [specificNameN]
    }
    const int specificName1 = 0;
    const int specificName2 = 1;
    ...
    const int specificNameN = n-1;

この目的のためにスニペットを作成する方法はありますか? はいの場合、それはどのようになりますか?

4

2 に答える 2

2

専用のclassorstructを作成し、配列をそれに解析します。

public class MyClassOfStuff
{
    Type SpecificName1 {get;set;}

    Type SpecificName2 {get;set;}

    public static MyClassOfStuff Parse(Type[] value)
    {
        Type specificName1 = values[0];
        Type specificName2 = values[1];
        ...
        Type specificNameN = values[n];
    }
}

 void OriginalMethodSignature(Type[] values)
{
    var mystuff = MyClassOfStuff.Parse(values);
}
于 2013-08-30T17:54:57.547 に答える