Alias de types

Signaler
Messages postés
3
Date d'inscription
vendredi 25 juillet 2003
Statut
Membre
Dernière intervention
4 mars 2004
-
Messages postés
43
Date d'inscription
dimanche 2 novembre 2003
Statut
Membre
Dernière intervention
6 septembre 2011
-
Je débute sous dotnet avec C# et je bute sur un problème tout con :

Je voudrai donner un alias a un type de base pour réutiliser ce type dans mon source, genre avec une méthode :

TypeAlias MaMethode(...)
{
// mon code
}

Ou et comment faut'il déclarer "TypeAlias" pour que ce soit un équivalent de "uint" par exemple.

Je viens du monde de dephi et j'ai beaucoup de mal a le quitter, ce serait dommage d'abandonner le c# juste pour un détail de ce genre.

Merci pour vos réponses.

8 réponses

Messages postés
656
Date d'inscription
mercredi 22 août 2001
Statut
Membre
Dernière intervention
11 mars 2005
13
Si tu veux parler de l'équivalent c/c++ de #typedef, cela n'existe pas en c#.

[Membre du Labo .NET]
Messages postés
3
Date d'inscription
vendredi 25 juillet 2003
Statut
Membre
Dernière intervention
4 mars 2004

Merci pour ta réponse,

Je trouve que c'est bien dommage pour l'organisation du code de ne pas avoir d'équivalent, reste à inclure dans le nom des variables ce qu'elle représentent précisément.
Messages postés
412
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
13 août 2007

Disons que ça n'existe pas, parce que tout simplement ça sert à rien lol... Ou du moins ils n'en ont pas trouvé l'utilité..

Pourtant si tu viens tu delphi tu devrais connaître le notion de classe-objets non? Pour faire ton propre type, crée une classe ;-) Malheureusement tu ne peux pas sous-classer les type de base (Genre int) mais tu peux les intégrer dans une nouvelle classe, ce qui rend la chose tout aussi intéressante que puissante. Je sais ça veux rien dire lol
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Je sais pas si G bien compris ce que tu veux faire mais bon je met quand même ^^ :
using TypeAlias = System.UInt32;


avec ça TypeAlias cool = 1; sera un Uint32

Cocoricoooooooo !!!!
Messages postés
3
Date d'inscription
vendredi 25 juillet 2003
Statut
Membre
Dernière intervention
4 mars 2004

@bucher : Effectivement il serais possible d'utiliser uniquement des classes, étant accros a la POO depuis que je programme sous delphi, tout mon code est intégrés dans des objets, même ce qui ne sera instancier qu'une quele fois. Mon problème est que je tente actuellement de faire migrés un projet delphi vers c# qui accéde a l'API winsock et plus particulièrement a la dll "MSWSOCK" qui gére les extensions microsoft pour des applications réseau hautes performances (avec IOCP) ce que ne permet pas les classes defini dans le namespace System.Net.Sockets. Je tente donc d'interfacer l'API winsock (avec du code unsafe donc) et pour des question de lisibilités de code de souhaite définir des équivalences de type de base, plus particuliérement pour les handle de sockets, en delphi j'écrivais par exemple :

var
ClientHandle : TSocket;
ServerHandle : TSocket;

sans alias de type, sous C#, pour que mon code soit un minnimum lisible il faudrai que j'écrive :

uint ClientSocketHandle;
uint ServerSocketHandle;

la ou je souhaiterais écrire :

SocketHandle Client;
SocketHandle Server;

@coq :Tu a tout a fait compris mon probléme, je viens d'essayer ce que tu propose mais pour les types de base cela ne peut être utiliser. Je me demande alors, si je déclare une methode extern, unsafe.. etc pour la fonction :

CloseSocket(uint SocketHandle)

Le type alias SocketHandle dérivé de uint32 sera t'il valide pour l'appel de la function ?

Si vous avait un petit élément de réponse, des critiques (je doit surement dire des tas de bétises) n'hésiter surtout pas
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
ben en fait le "type de base" (mot clé) correspond à un type du framework (C juste un alias koi)
uint => System.UInt32
int => System.Int32
string => System.String

Cocoricoooooooo !!!!
Messages postés
412
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
13 août 2007

pour t'amuser avec les type y a un mot clé spécial pour les déclarer justement "unsafe" et qu'il t'emmerde plus avec.. cherche un peu tu dois trouver qqch dans la doc
Messages postés
43
Date d'inscription
dimanche 2 novembre 2003
Statut
Membre
Dernière intervention
6 septembre 2011

Hello, je ne sais pas si j'ai bien compris mais si tu veux pouvoir définir tes propres types, rien de + simple:

public struct couleur
{
public int rouge,vert,bleu;
}
public couleur[] c=new couleur[1000];

En fait, c juste en utilisant les structures ^^

(info: c un code tout droit tiré d'une de mes sources alors adaptez ^^)

++