これは馬鹿げた質問かどうか分かりませんが、私はこれに気づきました:
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 でメソッドの説明を表示する場合)。
はい、インターフェースを実装するときに、パラメータに任意の名前を付けることができます。