2015-06-08 11 views
5

Ecco un elenco di alias in C# (complimenti del What is the difference between String and string in C#?):Perché gli alias per stringa e oggetto sono in minuscolo?

object: System.Object 
string: System.String 
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 

vedo bool attraverso char essere alias minuscole, perché sono tipi primitivi.

Perché l'oggetto e la stringa non sono maiuscoli, poiché sono tipi complessi? Questa è una svista degli sviluppatori, o c'è una ragione necessaria per essere minuscole? O questa è una domanda supponente?

Si finisce con cose come string.Format() invece di String.Format(), che sembrano funky e mi fanno pensare che string è una variabile.

+3

per essere più simile al C++? gli adottanti potrebbero continuare ad usare C# come sono stati abituati a farlo nelle lingue precedenti? – ps2goat

+0

Si * può * scrivere ancora 'String.Format()', assumendo che si abbia un 'using System;'. – crashmstr

+1

Anche C# ha disegnato molte convenzioni e approcci molto simili a Java, che ha una struttura molto simile. Può essere un po 'di confusione quando si ha a che fare con il boxing/unboxing, perché a volte le persone hanno l'impressione di essere in box e uno è unbox, ma non è così. – AaronLS

risposta

4

In C# non ci sono "tipi primitivi" e "tipi complessi". Ci sono classes and structs, (tipi di riferimento e tipi di valore, rispettivamente) tra gli altri. Entrambi possono includere metodi (ad esempio char.IsDigit('a')). Quindi le tue obiezioni non sono veramente valide. Ma c'è ancora la domanda: perché?

Non sono sicuro che ci sia una buona fonte per questo, ma penso che gli alias minuscoli siano fatti per corrispondere allo other C# keywords, che sono modellati su parole chiave C/C++.

11

Perché tutti gli keywords (identificatori riservati) sono in minuscolo.

+0

Anche se questo potrebbe non essere il motivo "originale" (forse @EricLippert) vede/sa questo, penso che l'argomento "per coerenza" non sia il peggiore. (Si potrebbe chiedere però: perché tutte le parole chiave sono minuscole :-). –

+0

@ Christian.K, poiché C# deriva gran parte della sua sintassi da Java, che derivava gran parte della sua sintassi da C, che utilizzano entrambi parole chiave in lettere minuscole. –

+0

@DavidArno: Grazie, ma lo sapevo. Stavo solo cercando di spingere la busta per quelli che non lo fanno :-) –

-1

La risposta è semplice. Se vuoi usarlo come una classe usa String, se vuoi usarlo come una parola chiave usa string. Gli sviluppatori volevano farci sentire come se usassimo un tipo primitivo. Perché in C# nulla è primitivo.

2

Per quanto riguarda il tuo ultimo commento:

si finisce con le cose come string.Format() invece di String.Format(), che basta guardare funky e mi fanno pensare stringa è una variabile.

Con C# 6, questo diventa un punto controverso come si può fare:

using static System.String; 

... 
var x = Format(...); 

o andare oltre, si può fare a meno del tutto e utilizzare string.Format$ invece.

+0

@roryap ben individuato, grazie. –

Problemi correlati