Exemple ( notez le cas ):
ssortingng s = "Hello world!"; Ssortingng s = "Hello world!";
Quelles sont les lignes direcsortingces pour l’utilisation de chacun? Et quelles sont les différences ?
ssortingng
est un alias en C # pour System.Ssortingng
.
Donc techniquement, il n’y a pas de différence. C’est comme int
contre System.Int32
.
En ce qui concerne les lignes direcsortingces, il est généralement recommandé d’utiliser des ssortingng
chaque fois que vous parlez d’un object.
par exemple
ssortingng place = "world";
De même, je pense qu’il est généralement recommandé d’utiliser Ssortingng
si vous devez vous référer spécifiquement à la classe.
par exemple
ssortingng greet = Ssortingng.Format("Hello {0}!", place);
Il semble que le guidage dans cette zone ait changé, car StyleCop impose désormais l’utilisation des alias spécifiques à C #.
Pour des raisons d’exhaustivité, voici une page d’informations sur le cerveau …
Comme d’autres l’ont noté, ssortingng
est un alias pour System.Ssortingng
. Ils comstacknt dans le même code, donc au moment de l’exécution, il n’y a aucune différence. Ceci est juste l’un des alias en C #. La liste complète est la suivante:
object: System.Object ssortingng: System.Ssortingng bool: System.Boolean byte: System.Byte sbyte: System.SByte short: System.Int16 ushort: System.UInt16 int: System.Int32 uint: System.UInt32 long: System.Int64 ulong: System.UInt64 float: System.Single double: System.Double decimal: System.Decimal char: System.Char
Outre les ssortingng
et les object
, les alias sont tous des types de valeur. decimal
est un type de valeur, mais pas un type primitif dans le CLR. Le seul type primitif qui n’a pas d’alias est System.IntPtr
.
Dans la spécification, les alias de type valeur sont appelés “types simples”. Les littéraux peuvent être utilisés pour des valeurs constantes de chaque type simple; aucun autre type de valeur ne dispose de formes littérales. (Comparez cela avec VB, qui autorise les littéraux DateTime
, et possède un alias pour cela.)
Il y a une circonstance dans laquelle vous devez utiliser les alias: lorsque vous spécifiez explicitement le type sous-jacent d’un enum. Par exemple:
public enum Foo : UInt32 {} // Invalid public enum Bar : uint {} // Valid
C’est juste une question de la façon dont la spécification définit les déclarations enum – la partie après les deux points doit être la production de type intégral , qui est un jeton de sbyte
, byte
, short
, ushort
, int
, uint
, long
, ulong
, char
. .. par opposition à une production de type utilisée par exemple par les déclarations de variables. Cela n’indique aucune autre différence.
Enfin, quand il s’agit d’utiliser: personnellement, j’utilise les alias partout pour l’implémentation, mais le type CLR pour toutes les API. Ce que vous utilisez en termes de mise en œuvre n’a pas vraiment d’importance – la cohérence de votre équipe est agréable, mais personne d’autre ne s’en souciera. D’un autre côté, il est vraiment important que si vous faites référence à un type dans une API, vous le faites de manière neutre. Une méthode appelée ReadInt32
est sans ambiguïté, alors qu’une méthode appelée ReadInt
nécessite une interprétation. L’appelant pourrait utiliser un langage qui définit un alias int
pour Int16
, par exemple. Les concepteurs du framework .NET ont suivi ce modèle, les bons exemples étant dans les BitConverter
, BinaryReader
et Convert
.
Ssortingng
signifie System.Ssortingng
et il s’agit d’un type .NET Framework. ssortingng
est un alias dans le langage C # pour System.Ssortingng
. Les deux sont compilés dans System.Ssortingng
dans IL (Intermediate Language), donc il n’y a pas de différence. Choisissez ce que vous aimez et utilisez-le. Si vous codez en C #, je préférerais que ssortingng
est un alias de type C # et bien connu des programmeurs C #.
Je peux dire la même chose à propos de ( int
, System.Int32
) etc.
La meilleure réponse que j’ai jamais entendu à propos de l’utilisation des alias de type fournis dans C # provient de Jeffrey Richter dans son livre CLR Via C # . Voici ses 3 raisons:
- J’ai vu un certain nombre de développeurs confus, ne sachant pas s’il fallait utiliser ssortingng ou Ssortingng dans leur code. Parce que dans C # la chaîne (un mot-clé) correspond exactement à System.Ssortingng (un type FCL), il n’y a pas de différence et chacun peut être utilisé.
- En C #, les mappages longs à System.Int64 , mais dans un langage de programmation différent, peuvent être mappés sur Int16 ou Int32 . En fait, C ++ / CLI traite en fait long comme un Int32 . Quelqu’un qui lit le code source dans une langue peut facilement interpréter l’intention du code s’il était habitué à programmer dans un autre langage de programmation. En fait, la plupart des langages ne traitent même pas long comme un mot clé et ne comstackront pas le code qui l’utilise.
- Le FCL a beaucoup de méthodes qui ont des noms de types dans leurs noms de méthodes. Par exemple, le type BinaryReader propose des méthodes telles que ReadBoolean , ReadInt32 , ReadSingle , etc., et le type System.Convert propose des méthodes telles que ToBoolean , ToInt32 , ToSingle , etc. Bien qu’il soit légal d’écrire le code suivant, la ligne avec float ne me semble pas naturelle et il n’est pas évident que la ligne soit correcte:
BinaryReader br = new BinaryReader(...); float val = br.ReadSingle(); // OK, but feels unnatural Single val = br.ReadSingle(); // OK and feels good
Alors voilà Je pense que ce sont tous de très bons points. Cependant, je ne trouve pas que j’utilise les conseils de Jeffrey dans mon propre code. Peut-être que je suis trop coincé dans mon monde C # mais je finis par essayer de faire ressembler mon code au code du framework.
ssortingng
est un mot réservé, mais Ssortingng
est juste un nom de classe. Cela signifie que cette ssortingng
ne peut pas être utilisée comme nom de variable par elle-même.
Si pour une raison quelconque vous vouliez une variable appelée ssortingng , vous ne verriez que la première de ces compilations:
SsortingngBuilder Ssortingng = new SsortingngBuilder(); // comstacks SsortingngBuilder ssortingng = new SsortingngBuilder(); // doesn't comstack
Si vous voulez vraiment un nom de variable appelé ssortingng, vous pouvez utiliser @
comme préfixe:
SsortingngBuilder @ssortingng = new SsortingngBuilder();
Une autre différence critique: Stack Overflow les met en évidence différemment.
Il y a une différence : vous ne pouvez pas utiliser Ssortingng
sans using System;
préalablement.
C’est couvert ci-dessus; Cependant, vous ne pouvez pas utiliser de ssortingng
en reflection; vous devez utiliser Ssortingng
.
System.Ssortingng
est la classe de chaîne .NET – dans la ssortingng
C # est un alias pour System.Ssortingng
– ils sont donc identiques.
En ce qui concerne les lignes direcsortingces, je ne m’embourberais pas trop et je me contenterais d’utiliser ce que vous voudriez: il y a des choses plus importantes dans la vie et le code sera le même de toute façon.
Si vous vous trouvez en train de construire des systèmes où il est nécessaire de spécifier la taille des entiers que vous utilisez et qui ont donc tendance à utiliser Int16
, Int32
, UInt16
, UInt32
etc., il peut sembler plus naturel d’utiliser Ssortingng
– .net langues cela pourrait rendre les choses plus compréhensibles – sinon j’utiliserais ssortingng et int.
Je préfère les types .NET
majuscules (plutôt que les alias) pour des raisons de formatage. Les types .NET
sont colorés de la même manière que les autres types d’object (les types de valeur sont des objects corrects, après tout).
Les mots clés conditionnels et de contrôle (comme if
, switch
et return
) sont en minuscules et colorés en bleu foncé (par défaut). Et je préférerais que le désaccord ne soit pas utilisé et formaté.
Considérer:
Ssortingng someSsortingng; ssortingng anotherSsortingng;
ssortingng
et Ssortingng
sont identiques à tous égards (sauf le “S” majuscule). Il n’y a pas d’implication de performance de toute façon.
La ssortingng
minuscule est préférée dans la plupart des projets en raison de la coloration syntaxique
C # est un langage utilisé avec le CLR.
ssortingng
est un type en C #.
System.Ssortingng
est un type dans le CLR.
Lorsque vous utilisez C # avec la ssortingng
CLR, celle-ci sera mappée sur System.Ssortingng
.
Théoriquement, vous pouvez implémenter un compilateur C # qui génère le bytecode Java. Une implémentation judicieuse de ce compilateur serait probablement mapper ssortingng
à java.lang.Ssortingng
pour interagir avec la bibliothèque d’exécution Java.
Cette vidéo YouTube montre comment ils diffèrent.
Mais maintenant, pour une longue réponse textuelle.
Lorsque nous parlons de .NET
il y a deux choses différentes: le .NET
et les langages ( C#
, VB.NET
etc.) qui utilisent ce framework.
” System.Ssortingng
” aka “Ssortingng” (majuscule “S”) est un type de données .NET
Framework alors que “ssortingng” est un type de données C#
.
En bref “Ssortingng” est un alias (la même chose appelée avec des noms différents) de “ssortingng”. Donc, techniquement, les deux déclarations de code ci-dessous donneront la même sortie.
Ssortingng s = "I am Ssortingng";
ou
ssortingng s = "I am Ssortingng";
De la même manière, il existe des alias pour d’autres types de données c #, comme indiqué ci-dessous: –
object: System.Object
, chaîne: System.Ssortingng
, bool: System.Boolean
, octet: System.Byte
, sbyte: System.SByte
, short: System.Int16
et ainsi de suite
Maintenant, la question à un million de dollars du sharepoint vue du programmeur Alors, quand utiliser “Ssortingng” et “ssortingng”?
La première chose à éviter pour éviter la confusion est d’utiliser l’un d’entre eux de manière cohérente. Mais du sharepoint vue des meilleures pratiques, lorsque vous faites une déclaration de variable, il est bon d’utiliser “ssortingng” (petit “s”) et lorsque vous l’utilisez comme nom de classe, “Ssortingng” (majuscule “S”) est préférable.
Dans le code ci-dessous, le côté gauche est une déclaration de variable et il a déclaré en utilisant “ssortingng”. Sur le côté droit, nous appelons une méthode afin que “Ssortingng” soit plus sensible.
ssortingng s = Ssortingng.ToUpper() ;
ssortingng
est juste un alias pour System.Ssortingng
. Le compilateur les traitera de manière identique.
La seule différence pratique est la coloration syntaxique que vous mentionnez et que vous devez écrire en using System
si vous utilisez Ssortingng
.
La ssortingng
minuscule est un alias pour System.Ssortingng
. Ils sont les mêmes en C#
.
On se demande si vous devez utiliser les types System ( System.Int32
, System.Ssortingng
, etc.) ou les C# aliases
( int
, ssortingng
, etc.). Personnellement, je pense que vous devriez utiliser les C# aliases
, mais ce n’est que ma préférence personnelle.
Les deux sont identiques. Mais du sharepoint vue des directives de codage, il est préférable d’utiliser ssortingng
plutôt que Ssortingng
. C’est ce que les développeurs utilisent généralement. Par exemple, au lieu d’utiliser Int32
nous utilisons int
comme int
est un alias pour Int32
FYI “La chaîne de mots-clés est simplement un alias pour la classe prédéfinie System.Ssortingng
.” – Spécification du langage C # 4.2.3 http://msdn2.microsoft.com/En-US/library/aa691153.aspx
Comme les autres le disent, ils sont les mêmes. Les règles StyleCop, par défaut, vous obligeront à utiliser ssortingng
comme une meilleure pratique de style de code C #, sauf lors du référencement de fonctions statiques System.Ssortingng
, telles que Ssortingng.Format
, Ssortingng.Join
, Ssortingng.Concat
, etc …
L’utilisation de types de système facilite le portage entre C # et VB.Net, si vous êtes dans ce genre de chose.
Contrairement à ce qui semble être une pratique courante chez les autres programmeurs, je préfère Ssortingng
à la ssortingng
, juste pour souligner le fait que Ssortingng
est un type de référence, comme Jon Skeet l’a mentionné.
ssortingng
est un alias (ou un raccourci) de System.Ssortingng
. Cela signifie que, en tapant ssortingng
nous voulions dire System.Ssortingng
. Vous pouvez en lire plus dans think link: ‘ssortingng’ est un alias / raccourci de System.Ssortingng.
Ssortingng ( System.Ssortingng
) est une classe de la bibliothèque de classes de base. ssortingng (minuscule) est un travail réservé dans C # qui est un alias pour System.Ssortingng. Int32 vs int est une situation similaire à Boolean vs. bool
. Ces mots-clés spécifiques au langage C # vous permettent de déclarer des primitives dans un style similaire à C.
Ssortingng
n’est pas un mot-clé et peut être utilisé comme identifiant alors que ssortingng
est un mot-clé et ne peut pas être utilisé comme identifiant. Et, du sharepoint vue fonctionnel, les deux sont identiques.
En retard à la fête: j’utilise les types de CLR 100% du temps (enfin, sauf si je suis obligé d’utiliser le type C #, mais je ne me souviens plus de la dernière fois).
J’ai commencé à le faire il y a plusieurs années, conformément aux livres de CLR de Ritchie. Il était logique pour moi que tous les langages CLR soient finalement capables de prendre en charge l’ensemble des types de CLR. L’utilisation des types de CLR vous a donc fourni un code plus clair et éventuellement plus “réutilisable”.
Maintenant que je le fais depuis des années, c’est une habitude et j’aime la coloration que VS montre pour les types CLR.
Le seul véritable inconvénient est que l’auto-complétion utilise le type C #, donc je finis par retaper les types générés automatiquement pour spécifier le type CLR à la place.
Aussi, maintenant, quand je vois “int” ou “ssortingng”, cela me semble vraiment faux, comme si je regardais le code C des années 1970.
Je voudrais juste append ceci à la réponse de lfousts, du livre de Ritchers:
La spécification du langage C # stipule que «l’utilisation du mot-clé est favorisée par rapport à l’utilisation du nom complet du type de système.» Je ne suis pas d’accord avec la spécification du langage. Je préfère utiliser les noms de type FCL et éviter complètement les noms de type primitifs. En fait, je souhaite que les compilateurs n’offrent même pas les noms de type primitifs et obligent les développeurs à utiliser les noms de type FCL à la place. Voici mes raisons:
Je n’ai pas eu son avis avant de lire le paragraphe complet.
C’est vraiment une question de convention. “ssortingng” ressemble plus à un style C / C ++. La convention générale est d’utiliser les raccourcis fournis par votre langue (int / Int pour Int32). Cela vaut également pour “object” et “décimal”.
Théoriquement, cela pourrait aider à porter le code dans une future norme 64 bits dans laquelle “int” pourrait signifier Int64, mais ce n’est pas le cas, et je m’attendrais à ce que tout assistant de mise à niveau fais attention.
Il n’y a pas de différence.
La ssortingng
mots-clés C # correspond au type .NET System.Ssortingng
– c’est un alias qui respecte les conventions de dénomination du langage.
De même, int
correspond à System.Int32
.
New answer after 6 years and 5 months (procrastination).
While ssortingng
is a reserved C# keyword that always has a fixed meaning, Ssortingng
is just an ordinary identifier which could refer to anything. Depending on members of the current type, the current namespace and the applied using
directives and their placement, Ssortingng
could be a value or a type distinct from global::System.Ssortingng
.
I shall provide two examples where using
directives will not help .
First, when Ssortingng
is a value of the current type (or a local variable):
class MySequence { public IEnumerable Ssortingng { get; set; } void Example() { var test = Ssortingng.Format("Hello {0}.", DateTime.Today.DayOfWeek); } }
The above will not comstack because IEnumerable<>
does not have a non-static member called Format
, and no extension methods apply. In the above case, it may still be possible to use Ssortingng
in other contexts where a type is the only possibility syntactically. For example Ssortingng local = "Hi mum!";
could be OK (depending on namespace and using
directives).
Worse: Saying Ssortingng.Concat(someSequence)
will likely (depending on using
s) go to the Linq extension method Enumerable.Concat
. It will not go to the static method ssortingng.Concat
.
Secondly, when Ssortingng
is another type , nested inside the current type:
class MyPiano { protected class Ssortingng { } void Example() { var test1 = Ssortingng.Format("Hello {0}.", DateTime.Today.DayOfWeek); Ssortingng test2 = "Goodbye"; } }
Neither statement in the Example
method comstacks. Here Ssortingng
is always a piano ssortingng , MyPiano.Ssortingng
. No member ( static
or not) Format
exists on it (or is inherited from its base class). And the value "Goodbye"
cannot be converted into it.
There’s a quote on this issue from Daniel Solis’ book .
All the predefined types are mapped directly to underlying .NET types. The C# type names (ssortingng) are simply aliases for the .NET types (Ssortingng or System.Ssortingng), so using the .NET names works fine syntactically, although this is discouraged. Within a C# program, you should use the C# names rather than the .NET names.
ssortingng is a keyword, and you can’t use ssortingng as an identifier.
Ssortingng is not a keyword, and you can use it as an identifier:
Exemple
ssortingng Ssortingng = "I am a ssortingng";
The keyword ssortingng
is an alias for System.Ssortingng
aside from the keyword issue, the two are exactly equivalent.
typeof(ssortingng) == typeof(Ssortingng) == typeof(System.Ssortingng)
Yes, that’s no difference between them, just like the bool
and Boolean
.
There is no difference between the two – ssortingng
, however, appears to be the preferred option when considering other developers’ source code.