8
votes

Y a-t-il un moyen de passer un argument à un setter

Y a-t-il un moyen de passer un argument à un setter? Comment passerai une chaîne dans le setter ci-dessous? Comment puis-je appeler le Setter avec la nouvelle chaîne Param? XXX

Merci beaucoup

c#

0 commentaires

6 Réponses :


4
votes

Vous pouvez l'affecter comme si vous pouvez attribuer une valeur à une variable:

It = "My String";


0 commentaires

10
votes

Le Setter obtient valeur comme son propre "argument", en fonction de la valeur que vous attribuez à la propriété: xxx

si vous souhaitez utiliser un paramètre supplémentaire , vous avez besoin d'un indexeur : xxx

vous l'accédez alors comme xxx

Vous ne pouvez pas donner des noms d'indexeurs en C # ou utiliser des indexeurs nommés à partir d'autres langues par nom (sauf dans le cas de COM, à partir de C # 4).

Edit: Comme indiqué par Colin, vous devez utiliser Indexeurs avec soin ... Ne les utilisez pas simplement comme moyen d'obtenir un paramètre supplémentaire uniquement pour le setter, que vous ignorez ensuite dans le getter, par exemple. Quelque chose comme ça serait terrible: xxx


3 commentaires

Juste pour ajouter à cela. Sauf si la chose que vous définissez a une sorte de sémantique indexable, n'utilisez pas d'indexeur, car toute personne qui maintient le code va se demander ce qui se passe sur la Terre.


Cela ne devrait pas être de retournom complet; dans le getter au lieu de retourner prénom; Pour qu'il retourne "Jon Skeet", le code actuel reviendrait "bar"?


@John: Oui, c'était l'intention. Doh! Fixé.



0
votes

Généralement, pour toute propriété directement, nous pouvons affecter la valeur I.E., it = "";


0 commentaires

-1
votes

C'est la base de la base des propriétés C #:

Propriétés (Guide de programmation C #)

permet de créer un objet bla qui a cette propriété: xxx

L'idée des propriétés consiste à envelopper les appels aux variables locales avec une logique plus logique (et des cachettes). Donc, la syntaxe est similaire à la recherche d'une variable de classe locale


0 commentaires

4
votes

Propriétés n'admettez pas d'arguments en C #.

Si vous avez vraiment besoin d'informations appropriées pour que SE IT correctement, la solution recommandée consiste à implémenter le réglage comme méthode: xxx


0 commentaires

0
votes

Complimenter ce que tout le monde a dit dans ce fil d'âge ...

Peut-être une meilleure méthode serait de définir un struct code> pour contenir les informations supplémentaires que vous souhaitez passer, puis transmettre le données de cette façon. Par exemple: P>

struct PersonName {

    public string Forename { get; set; }
    public string Surname { get; set; }

    public PersonName(string fn, string sn) {
        Forename = fn;
        Surname = sn;
    }

}

class MyPerson {

    public string Forename { get; set; }
    public string Surname { get; set; }
    public DateTime dob { get; set; }

    ...

    public PersonName Fullname {
        get { return Forename + " " + Surname; }
        set {
            Forename = value.Forename;
            Surname = value.Surname;
        }
    }
}

...

    public void main() {
        MyPerson aPerson = new MyPerson;
        aPerson.Fullname = new PersonName("Fred", "Bloggs");
    }


0 commentaires