Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1048 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#.NET] Surcharger l'operateur " ++ " pour une hashtable, comment ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#.NET] Surcharger l'operateur " ++ " pour une hashtable, comment ?

n°1742636
ParadoX
Posté le 06-06-2008 à 17:27:18  profilanswer
 

Bonjour,
 
J'ai une hashtable qui contient des int, et j'aimerais pouvoir utiliser maTable["indice"] ++ au lieu d'un convert.ToInt32 moche et barbarre. J'ai donc essayé de surcharger l'operateur ++, mais je n'y parviens pas :sweat:  
 
Syntaxe trouvée:

Code :
  1. public static result-type operator unary-operator (op-type operand)


 
Mais ...
 
1 - Ou faut-il que je fasse ca ? Est-ce une modification de Int ou de Hashtable ?  
2 - Quel est le type de retour (s'il y en a un ?)
 
Toute aide est appréciée :jap:
 
 


Message édité par ParadoX le 06-06-2008 à 17:35:58

---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
mood
Publicité
Posté le 06-06-2008 à 17:27:18  profilanswer
 

n°1742642
ParadoX
Posté le 06-06-2008 à 17:37:36  profilanswer
 

En fait le probleme vient du fait que ni HashTable ni Int ne sont pas des classes que j'ai definies moi-meme. Ne sont-elles pas Sealed, les protegeant de toutes modifications ?


Message édité par ParadoX le 06-06-2008 à 17:46:03

---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1742647
masklinn
í dag viðrar vel til loftárása
Posté le 06-06-2008 à 17:44:37  profilanswer
 

wat?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1742648
ParadoX
Posté le 06-06-2008 à 17:47:31  profilanswer
 

Hm ? :??:  
 
Dans tous les examples que je trouve, ils overloadent " ++ ", mais seulement pour des types qu'ils ont crées eux-meme, style "Complex" ou "Vector":
 
http://www.blackwasp.co.uk/CSharpO [...] ading.aspx
http://www.dotnetjohn.com/articles.aspx?articleid=269
 
Alors que moi, je veux appliquer un ++ a une hashtable :sweat:  


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1742651
masklinn
í dag viðrar vel til loftárása
Posté le 06-06-2008 à 17:54:00  profilanswer
 

Oui mais non, tu pars de prémices complètement fuckées, ya aucune raison d'overloader "++" dans le cas qui t'intéresse, et l'overloader sur "Hashtable" ne t'apportera de toute façon strictement rien puisque ça ne résoudrait pas le problème.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1742661
ParadoX
Posté le 06-06-2008 à 18:35:07  profilanswer
 

comment j'incremente ma valeur dans maTable["indice"] alors ? [:spamafote]
Le ++ me simplifierait bcp la vie :jap:


Message édité par ParadoX le 06-06-2008 à 18:35:28

---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1742679
masklinn
í dag viðrar vel til loftárása
Posté le 06-06-2008 à 20:02:58  profilanswer
 

Tu es en .Net 2.0 ou supérieur?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1742686
Taz
bisounours-codeur
Posté le 06-06-2008 à 20:12:54  profilanswer
 

c'est pas spécifique à ton Dictionary<Key, Value>. La property Item retourne un Value. S'il a un ++ c'est bien sauf que si c'est un valuetype ou un truc boxé qui t'es renvoyé, bah tu inc sur une copie.

n°1742687
ParadoX
Posté le 06-06-2008 à 20:13:29  profilanswer
 

2.0 :jap:

 

Sinon, jai pensé a faire une fonction a qui je donne une hashtable et une clef, et elle m'augmente la valeur associée [:spamafote]

Message cité 1 fois
Message édité par ParadoX le 06-06-2008 à 20:15:47

---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1742688
Taz
bisounours-codeur
Posté le 06-06-2008 à 20:18:49  profilanswer
 

donne nous un exemple quoi.

mood
Publicité
Posté le 06-06-2008 à 20:18:49  profilanswer
 

n°1742689
Taz
bisounours-codeur
Posté le 06-06-2008 à 20:25:26  profilanswer
 

ParadoX a écrit :

2.0 :jap:
 
Sinon, jai pensé a faire une fonction a qui je donne une hashtable et une clef, et elle m'augmente la valeur associée [:spamafote]


T'es avec des object et tout ?

n°1742690
masklinn
í dag viðrar vel til loftárása
Posté le 06-06-2008 à 20:25:46  profilanswer
 

Taz a écrit :

c'est pas spécifique à ton Dictionary<Key, Value>. La property Item retourne un Value. S'il a un ++ c'est bien sauf que si c'est un valuetype ou un truc boxé qui t'es renvoyé, bah tu inc sur une copie.


Il parle d'une hashtable, donc je présume qu'il utilise le conteneur HashTable non typé de Collections, au lieu du Dictionary de Collections.Generics


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1742691
ParadoX
Posté le 06-06-2008 à 20:25:55  profilanswer
 

C'est tout con. J'ai une hashtable qui contient plusieurs ints, qui font office de compteurs. 17 en tout. Donc avant j'avais une table de int, mais "maTable[8]" n'est pas tres parlant quant a son contenu. Alors je me suis dit que je vais passer a une hashtable, de cette maniere j'aurais des indices parlants, et j'aurais plus trop besoin de me soucier de l'ordre et du nom des indices.

 

Alors je passe de int[] maTable de 0 a 16 a une Hashtable avec "unIndice", [...], "unAutreIndice". Avant, pour incrementer un compteur, un maTable[i]++ suffisait, chose qui ne marche plus avec une Hashtable, auquel cas je dois faire

 

maTable["unIndice"] =  = Convert.ToInt32(maTable["unIndice"]) + 1;

 

ce qui est absolument lourd et moche. Tu vois ce que je veux dire ?

 



Message édité par ParadoX le 06-06-2008 à 20:26:54

---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1742694
Taz
bisounours-codeur
Posté le 06-06-2008 à 20:33:09  profilanswer
 

ok. Avec les generics, quand tu fais un h[key]++, en fait ça fait un get_Item(), ensuite ça l'incrémente, et ça termine par un set_Item.

 

En 1.0, t'as que des object. D'ou ton Convert ignoble et inutile. Donc tu peux pas. T'es obligé de toi même: déboxer l'int avec un cast, faire ton ++, et reboxer implicitement en h[key] = ton_int. C'est chiant, mais ça restera toujours plus performant que ton convert.


Message édité par Taz le 06-06-2008 à 20:34:32
n°1742695
ParadoX
Posté le 06-06-2008 à 20:35:00  profilanswer
 

Bon du coup j'ai fait une fonction static ailleurs qui prends comme parametre une hashtable en reference ainsi qu'une clef, et ca incremente sa valeur [:spamafote]


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1742698
masklinn
í dag viðrar vel til loftárása
Posté le 06-06-2008 à 20:39:46  profilanswer
 

Remplace ton Collections.HashTable par un Collections.Generic.Dictionary, et renseigne toi sur les generics, s'il te plait [:pingouino]
 
Sauf à être en 1.x, il n'y a aucune raison valable d'utiliser Collections plutôt que Collections.Generic

Message cité 1 fois
Message édité par masklinn le 06-06-2008 à 20:41:24

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1742701
Taz
bisounours-codeur
Posté le 06-06-2008 à 20:42:10  profilanswer
 

ParadoX a écrit :

Bon du coup j'ai fait une fonction static ailleurs qui prends comme parametre une hashtable en reference ainsi qu'une clef, et ca incremente sa valeur [:spamafote]


Pourquoi ref ? c'est déjà un objet ton Dictionary.

n°1742719
ParadoX
Posté le 06-06-2008 à 21:11:34  profilanswer
 

masklinn a écrit :

Remplace ton Collections.HashTable par un Collections.Generic.Dictionary, et renseigne toi sur les generics, s'il te plait [:pingouino]
 
Sauf à être en 1.x, il n'y a aucune raison valable d'utiliser Collections plutôt que Collections.Generic


 
:jap:
 
Et pour les arraylists ?
 

Taz a écrit :


Pourquoi ref ? c'est déjà un objet ton Dictionary.


 
Histoire de pas le passer en copie [:spamafote]


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1742745
Taz
bisounours-codeur
Posté le 06-06-2008 à 21:23:34  profilanswer
 

ParadoX a écrit :


 
:jap:
 
Et pour les arraylists ?
 


 
Bah List / IList
 

ParadoX a écrit :


 
Histoire de pas le passer en copie [:spamafote]


Tu passes une copie d'une "référence".

n°1742750
ParadoX
Posté le 06-06-2008 à 21:28:03  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#.NET] Surcharger l'operateur " ++ " pour une hashtable, comment ?

 

Sujets relatifs
Traitement d'image en C++Un contrôle .NET dans la veine de la liste du QuickWatch ?
[C] signal et exec* , association???[ C ] Besoin d'aide pour afficher l'heure en temps réel
[C#] IDataReader vide après un ExecuteReader()Acquisition d'un signal RC5 sur une cart µC
[C] les limites de la fonction rename !?C# Exercice Enum
[C#/SQL Server] Problème de modification de la base[ASP.NET] Accéder aux objets du Global.asax à partir d'un codefile ?
Plus de sujets relatifs à : [C#.NET] Surcharger l'operateur " ++ " pour une hashtable, comment ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR