OVH Cloud OVH Cloud

const array

3 réponses
Avatar
patrice
Bonjour =E0 tous,

je continue ma d=E9couverte de c#. Me voila devant un=20
probl=E8me que mes recherches ne m'ont pas permis de=20
r=E9gler...
Probl=E8me idiot :

comment d=E9finir un tableau constant que j'initialise au=20
moment de la d=E9claration :

class toto {

const long[] test =3D { 123456676778888L, 182989389893L ...}
//....

}
le compilateur me renvoie l'erreur :
<error>Array initializers can only be used in a variable=20
or field initializer. Try using a new expression=20
instead.</error>

Mais si j'utilise un new, ce n'est plus vraiment un const,=20
correct ?

Merci d'avance !

patrice

3 réponses

Avatar
Eric Mittelette[MS\)
Bonjour,
Pour créer un tableau constant tu peut utiliser la syntaxe suivante :
private static readonly long[] test = { 123456676778888L, 182989389893L};

HTH

Eric

"patrice" a écrit dans le message de
news: 105301c4b58c$d8cdc770$
Bonjour à tous,

je continue ma découverte de c#. Me voila devant un
problème que mes recherches ne m'ont pas permis de
régler...
Problème idiot :

comment définir un tableau constant que j'initialise au
moment de la déclaration :

class toto {

const long[] test = { 123456676778888L, 182989389893L ...}
//....

}
le compilateur me renvoie l'erreur :
<error>Array initializers can only be used in a variable
or field initializer. Try using a new expression
instead.</error>

Mais si j'utilise un new, ce n'est plus vraiment un const,
correct ?

Merci d'avance !

patrice
Avatar
Vincent Lascaux
> Bonjour,
Pour créer un tableau constant tu peut utiliser la syntaxe suivante :
private static readonly long[] test = { 123456676778888L, 182989389893L};



Il me semble qu'apres ca, on ne peut pas faire test = new long[5]; par
exemple (je veux dire changer la référence test), mais on peut faire test[0]
= 12;
C# et Java ont viré des mots clé comme const en copiant le C++ (et friend
aussi il me semble non ?). Probablement que les développeur en C++ sont
bêtes et avaient introduit des mots clés qui servaient à rien

--
Vincent
Avatar
Zazar
Bonsoir,

> Pour créer un tableau constant tu peut utiliser la syntaxe suivante :
> private static readonly long[] test = { 123456676778888L,


182989389893L};

Il me semble qu'apres ca, on ne peut pas faire test = new long[5]; par
exemple (je veux dire changer la référence test), mais on peut faire


test[0]
= 12;



Effectivement. On peut éviter ce problème en créant une classe possédant une
variable interne de type long[] et un accesseur en lecture seule pour
accéder aux éléments de ce tableau: on a ainsi un wrapper readonly du
tableau.

C# et Java ont viré des mots clé comme const en copiant le C++ (et friend
aussi il me semble non ?).



const et internal existent mais n'ont peut-être pas la même signification
qu'en C++.

Probablement que les développeur en C++ sont
bêtes et avaient introduit des mots clés qui servaient à rien.



Ca & peut-être à voir avec le fait que le C# n'a pas pour vocation d'être du
C++.

--
Zazar