Question

Pourquoi est-il possible d'utiliser un initialiseur d'objet pour définir une propriété auto d'ensemble privé, lorsque l'initialiseur est appelé depuis la classe qui possède la propriété auto ?J'ai inclus deux classes à titre d'exemple.

public class MyClass
{
    public string myName { get; private set; }
    public string myId { get; set; }

    public static MyClass GetSampleObject()
    {
        MyClass mc = new MyClass
        {
            myName = "Whatever", // <- works
            myId = "1234"
        };
        return mc;
    }


}

public class MyOtherClass
{
    public static MyClass GetSampleObject()
    {
        MyClass mc = new MyClass
        {
            myName = "Whatever", // <- fails
            myId = "1234"
        };
        return mc;
    }
}
Était-ce utile?

La solution

Le private le modificateur sur un setter signifie - privé au type englobant.

Autrement dit, la propriété peut être définie uniquement par le type conteneur.

Si ce n'était pas le cas, vous ne pourriez jamais définir la propriété et elle serait effectivement en lecture seule.

Depuis MSDN - privé (référence C#):

Les membres privés ne sont accessibles que dans le corps de la classe ou dans la structure dans laquelle ils sont déclarés.

Autres conseils

Parce que privé signifie accessible dans la classe qui possède une propriété.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top