インターフェース定義にパラメータ名が必要なのはなぜですか? 実装中に新しいパラメータ名を選択できます。質問する

インターフェース定義にパラメータ名が必要なのはなぜですか? 実装中に新しいパラメータ名を選択できます。質問する

これは馬鹿げた質問かどうか分かりませんが、私はこれに気づきました:

public interface IActivityDao : IDao<Activity>
{
    IList<Activity> GetAllSinceSequence(long sequence, int count);
}

public class ActivityDao : AbstractNHibernateDao<Core.Domain.Activity>, IActivityDao
{        
    public IList<Activity> GetAllSinceSequence(long sequence, int maxRecords)
    {

    }
}

私の実装では、2 番目のパラメータを「maxRecords」と呼んでいます。しかし、インターフェイスでは「count」と定義されています。コンパイラはインターフェイスが実装されていると見なしますが、これは良いことですが、多少の曖昧さが生じる可能性があります。明らかに、パラメータの 1 つを他のパラメータと一致するように名前変更する必要があります。

名前を変更する前に少しいじってみたところ、興味深いことに気づきました。インターフェースを次のように宣言することはできません。

public interface IActivityDao : IDao<Activity>
{
    IList<Activity> GetAllSinceSequence(long, int);
}

これは単にコンパイラが C# の構文に対して過剰に保護しているだけなのでしょうか? インターフェイスのメソッドのパラメータ名は、コードを読みやすくする以外にどのような目的があるのでしょうか? パラメータ名が実装時に強制されないと、あいまいさを招くように思われます。

ベストアンサー1

パラメータ名は、実装の明確化と参照のためにインターフェース宣言に必要です。誰かがインターフェースを使用する場合、メソッドパラメータの名前は自己文書化されるもので、インターフェースの消費者はメソッドに何を渡すかを理解できます(たとえば、IntelliSense でメソッドの説明を表示する場合)。

はい、インターフェースを実装するときに、パラメータに任意の名前を付けることができます。

おすすめ記事