デリゲートを宣言するときに識別子が必要なのはなぜですか?

マニッシュデュベイ

C#でデリゲートを作成するとき、明確な署名(パラメーターセット)を持つ関数を指すために、各タイプにも識別子を指定するように求められます。

public delegate void myDelegate(int x, int y);  

このプロトタイプ宣言を次のように書き込もうとすると、次のようになります。

public delegate void myDelegate(int, int)

コンパイル時エラーが表示されますidentifier expected

しかし、私によれば、メソッドのプロトタイプを指定するだけの場合、署名が異なる2つのメソッドを区別するためにコンパイラーが識別子を必要とするのはなぜですか。

public delegate void firstDelegate(int);

そして

public delegate void secondDelegate(int, int);

それらを区別するための十分かつ明確な宣言です。私はそう思う

私はあなたの人々が私を手に入れたと思いますか?

ジョンスキート

呼び出しの時点で違いを生む可能性があります。例えば:

using System;

class Test
{
    delegate void Foo(int x, int y);

    static void Main()
    {
        Foo foo = (x, y) => Console.WriteLine("x={0}, y={1}", x, y);
        foo(x: 5, y: 10);
        foo(y: 10, x: 5);
    }
}

x=5, y=10引数は位置ではなく名前を使用するため、出力は両方の行に対応します。C#はC#4で名前付き引数を取得しただけですが、VB.NETはずっと長い間それらを持っていました

今、もちろんそうではありませんでした持っていることのようであることを。可能性があり、デリゲートが最初の場所で名前付きパラメータを持っていなかったのでように設計されています-しかし、すべて時に、他のあなたのinvoke指名したパラメータは、なぜあなたはデリゲートが異なるようにしたいでしょうか?

ちなみに、インターフェースメソッドと抽象メソッドについても同じことを提案しますか?繰り返しになりますが、パラメーターは単なる署名であるため、宣言内のパラメーターを直接使用することはありません。

パラメータ名は読みやすさの点で役立ち、パラメータをより簡単に文書化できることに注意してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Apple SDK内にIBOutletsがないのに、デリゲートにIBOutlet識別子を追加する必要があるのはなぜですか?

分類Dev

データソース/デリゲートを2回宣言する必要があるのはなぜですか

分類Dev

typedef識別子を複数回宣言できるのはなぜですか?

分類Dev

iOS:NSRangeが常に「宣言されていない識別子の使用」というエラーをスローするのはなぜですか?

分類Dev

識別子TodoItemRowでセルをデキューできない-識別子のペン先またはクラスを登録するか、ストーリーボードのプロトタイプセルを接続する必要があります。

分類Dev

文字列を識別子としてプロパティを宣言できるのはなぜですか?それをするとき、ボンネットの下には何がありますか?

分類Dev

組み込みライブラリ関数を識別子名として宣言することが合法なのはなぜですか?

分類Dev

Firebaseが親と子の間にランダムな識別子を作成するのはなぜですか?

分類Dev

最終識別子が必要なのはなぜですか?

分類Dev

「識別子...はすでに宣言されています」というエラーが表示されるのはなぜですか?

分類Dev

Swiftでこのコードを書くときに、「未解決の識別子の使用」エラーが発生するのはなぜですか?

分類Dev

Swiftが識別子Cellを持つセルをデキューできない-識別子のペン先またはクラスを登録するか、ストーリーボードにプロトタイプセルを接続する必要があります

分類Dev

TableViewセルに再利用識別子が必要なのはなぜですか?

分類Dev

TableViewセルに再利用識別子が必要なのはなぜですか?

分類Dev

tryブロック内で関数識別子を再宣言するとSyntaxErrorがスローされるのはなぜですか?

分類Dev

宣言を飛び越えるとき、なぜ些細なデストラクタが必要なのですか?

分類Dev

デリゲートメソッドをSwiftで公開する必要があるのはなぜですか?

分類Dev

makefile内の別のターゲットに必要なターゲットを作成するルールがないのはなぜですか

分類Dev

デリゲートを渡すことができないのはなぜですか?

分類Dev

Cがタグと識別子に別々の名前空間を持っているのはなぜですか?

分類Dev

vCenterサーバーを操作するときにvmware-cmdにターゲットホストが必要なのはなぜですか?

分類Dev

変数型を定義するときに二重宣言が必要なのはなぜですか?

分類Dev

Entity Frameworkがビューモデルの識別子列を作成するのはなぜですか?

分類Dev

WebpackでBootstrapを使用するときに、jQueryに特別な「ハック」が必要なのはなぜですか

分類Dev

なぜ宣言されていない識別子を使用するのですか?

分類Dev

識別子を使用してセルをデキューできない場合は、識別子のペン先またはクラスを登録するか、ストーリーボードでプロトタイプセルを接続する必要があります

分類Dev

識別子に#を使用できないのはなぜですか?

分類Dev

Scalaでリストを作成するときにNilが必要なのはなぜですか?

分類Dev

ファイルが空のときにubuntuが拡張子ベースのデフォルトアプリを無視するのはなぜですか?

Related 関連記事

  1. 1

    Apple SDK内にIBOutletsがないのに、デリゲートにIBOutlet識別子を追加する必要があるのはなぜですか?

  2. 2

    データソース/デリゲートを2回宣言する必要があるのはなぜですか

  3. 3

    typedef識別子を複数回宣言できるのはなぜですか?

  4. 4

    iOS:NSRangeが常に「宣言されていない識別子の使用」というエラーをスローするのはなぜですか?

  5. 5

    識別子TodoItemRowでセルをデキューできない-識別子のペン先またはクラスを登録するか、ストーリーボードのプロトタイプセルを接続する必要があります。

  6. 6

    文字列を識別子としてプロパティを宣言できるのはなぜですか?それをするとき、ボンネットの下には何がありますか?

  7. 7

    組み込みライブラリ関数を識別子名として宣言することが合法なのはなぜですか?

  8. 8

    Firebaseが親と子の間にランダムな識別子を作成するのはなぜですか?

  9. 9

    最終識別子が必要なのはなぜですか?

  10. 10

    「識別子...はすでに宣言されています」というエラーが表示されるのはなぜですか?

  11. 11

    Swiftでこのコードを書くときに、「未解決の識別子の使用」エラーが発生するのはなぜですか?

  12. 12

    Swiftが識別子Cellを持つセルをデキューできない-識別子のペン先またはクラスを登録するか、ストーリーボードにプロトタイプセルを接続する必要があります

  13. 13

    TableViewセルに再利用識別子が必要なのはなぜですか?

  14. 14

    TableViewセルに再利用識別子が必要なのはなぜですか?

  15. 15

    tryブロック内で関数識別子を再宣言するとSyntaxErrorがスローされるのはなぜですか?

  16. 16

    宣言を飛び越えるとき、なぜ些細なデストラクタが必要なのですか?

  17. 17

    デリゲートメソッドをSwiftで公開する必要があるのはなぜですか?

  18. 18

    makefile内の別のターゲットに必要なターゲットを作成するルールがないのはなぜですか

  19. 19

    デリゲートを渡すことができないのはなぜですか?

  20. 20

    Cがタグと識別子に別々の名前空間を持っているのはなぜですか?

  21. 21

    vCenterサーバーを操作するときにvmware-cmdにターゲットホストが必要なのはなぜですか?

  22. 22

    変数型を定義するときに二重宣言が必要なのはなぜですか?

  23. 23

    Entity Frameworkがビューモデルの識別子列を作成するのはなぜですか?

  24. 24

    WebpackでBootstrapを使用するときに、jQueryに特別な「ハック」が必要なのはなぜですか

  25. 25

    なぜ宣言されていない識別子を使用するのですか?

  26. 26

    識別子を使用してセルをデキューできない場合は、識別子のペン先またはクラスを登録するか、ストーリーボードでプロトタイプセルを接続する必要があります

  27. 27

    識別子に#を使用できないのはなぜですか?

  28. 28

    Scalaでリストを作成するときにNilが必要なのはなぜですか?

  29. 29

    ファイルが空のときにubuntuが拡張子ベースのデフォルトアプリを無視するのはなぜですか?

ホットタグ

アーカイブ