Je veux utiliser c # je voudrais faire p> ainsi que garder toutes les conversions, les opérateurs, point code> comme type de référence (c'est une structure). J'ai pensé avoir une classe cpoint code>, qui contiendrait un membre point code>. Y a-t-il un moyen de soulever les membres du point code> code> pour agir en tant que membres du cpoint code>. J'essaie d'éviter vide code>, etc.
Peut-il facilement être fait? P> p>
3 Réponses :
Je pense que le seul moyen est de réécrire et de transmettre toutes les propriétés, opérateurs et méthodes, comme ceci: (le changement de nom de classe est destiné; Cpoint code> n'est pas très expressif.) P> p>
Bien sûr, n'utilisez pas un point code> du tout, mais mettez-le tout en œuvre vous-même.
S'il vous plaît laissez dehors le setter. Un type de référence mutable code> est si effrayant.
@Codeinchanos: une structure mutable struct i> est effrayante (et à mon avis dans la plupart des cas une mauvaise conception). Un type de référence mutable, en revanche, est correct. L'exemple peut être votre emplacement i> ou la position de la souris i>.
@Codesinchaos - S'il n'était pas mutable, il serait inutile de le faire un type de référence. La principale raison (seulement?) De faire une enveloppe de référence pour un type de valeur, c'est que vous pouvez transmettre une identité dont le contenu peut être modifié (toutes les autres références reçoivent la valeur modifiée).
Quelque chose comme ça? EDIT: Si vous souhaitez que cela soit converti automatiquement en / de points, implémentez des conversions implicites conformément au dessus. Notez que je n'ai pas testé ceux-ci, mais ils devraient travailler. Plus d'infos ici: http://msdn.microsoft.com/en-us/library /z5z9kes2.aspx p> p>
Oui, sauf que cela devient très fatigant de le faire pour chaque opérateur et conversion et ...
Voir les conversions implicites ajoutées
Si vous en avez besoin pour agir comme un type de référence, utilisez le ref A> Mot-clé. Cela vous permettra de passer par référence. Avec cela, vous obtiendrez tous les avantages de la performance d'être une structure, ainsi que de savoir spécifiquement lorsque vous vous attendez à ce que cela agisse comme une référence. Vous pouvez également utiliser le out mot-clé pour renvoyer un paramètre par référence.
Si vous en avez besoin pour pouvoir représenter NULL, utilisez un Nullable p>
si vous souhaitez simplement accéder, c'est comme foo.mypoint.x code> puis déclarez-le comme un champ comme: p>
Je suis programmée en C # car il a été créé pour la première fois et je ne savais jamais que vous pourriez le faire (utilisez "REF" avec un type de valeur)! Cependant, cela a ses limites: impossible de stocker cette "référence" comme élément d'une collection.
Pourquoi voulez-vous / besoin d'une telle enveloppe?
@ Xint0 comme je l'ai dit, de l'utiliser comme type de référence.
@Barunch: Avant de le faire, considérons que Il y a une raison B> pourquoi ce type de types simples a été défini comme un
structs code>. L'un d'entre eux est questruct code> est très rapide dans l'allocation etPoint Code> STRIT utilisé dans les méthodes de dessin, où la vitesse d'attribution et de libération peut être cruciale.@Tigran qui est vrai. Je n'utilise pas cela pour dessiner, cependant. J'utilise aussi (et taille aussi) comme propriétés de ma classe, non utilisée dans le dessin. Je veux être capable de faire
myclass.pos.x = 10 code> et des choses similaires.@Barunch: Donc, si vous avez besoin d'un
espace réservé code> Créez une classe simple et ne pas s'enraciner. Peut-être même, si vous avez besoin, pour une transformation facilevers / depuis code> la struct de la structure de point définit également les opérateurs de coulée implicites.@baruch - J'ai édité ma réponse basée sur votre commentaire à propos de l'accès via myClass.pos.x = 10