1

ネストされたクラスを認識しています。ネストされたクラスの親クラスの外で、子クラスをプライベートにしたいので、インスタンスの作成などのネストされたクラスに誰もアクセスできないように、ネストされたクラスを設計するにはどうすればよいですか。子クラスのプロパティを公開したいのですが、親クラスのプロパティまたはメソッドですべてをメソッド化します。そのような種類のネストされたクラスのコードを書くように私を導いてください。ありがとう

public class Person
{
private string _firstName;
private string _lastName;
private DateTime _birthday;

//...

public class FirstNameComparer : IComparer<Person>
{
    public int Compare(Person x, Person y)
    {
        return x._firstName.CompareTo(y._lastName);
    }
}

}
4

3 に答える 3

7

内部クラスをのprivate代わりにマークしpublicます。

public class Person
{
    private string _firstName;
    private string _lastName;
    private DateTime _birthday;

    private FirstNameComparer firstNameComparer = new FirstNameComparer();

    public int CompareFirstNames(Person x, Person y)
    {
       return firstNameComparer.Compare(x, y);
    }

    //...

    private class FirstNameComparer : IComparer<Person>
    {
        public int Compare(Person x, Person y)
        {
            return x._firstName.CompareTo(y._lastName);
        }
    }
}
于 2012-05-02T09:56:48.157 に答える
2

ネストされたクラスを作成できますprivate。メインクラスは、ネストされたクラスインスタンスの作成を担当します。

于 2012-05-02T09:57:56.433 に答える
1

ネストされたクラスにはプライベートアクセサーを使用できます。そのプロパティの一部を公開したい場合は、次のようにメインクラスの新しいプロパティを作成できます。

private FirstNameComparer _FirstNameComparer = new FirstNameComparer();
public int Compare(Person x, Person y)
    {
        return _FirstNameComparer.Compare(Person x, Person y); 
    }
于 2012-05-02T10:01:01.307 に答える