Provengo da uno sfondo prevalentemente C/C++ prima di iniziare a usare C#. Una delle cose che ho fatto con il mio primo progetto in C# è stato fare una classe come questaPerché i tipi di CLR non firmati sono così difficili da utilizzare in C#?
class Element{
public uint Size;
public ulong BigThing;
}
Sono stato poi mortificata dal fatto che questo richiede casting:
int x=MyElement.Size;
come fa
int x=5;
uint total=MyElement.Size+x;
Perché i progettisti di linguaggi hanno deciso di rendere i tipi di interi senza segno e firmati non implicitamente concettabili? E perché i tipi non firmati non vengono più utilizzati in tutta la libreria .Net? Ad esempio, String.Length
non può mai essere negativo, ma è un intero con segno.
Anche in C++ un cast da unsigned a signed o back provoca un avviso. –
@Seva a seconda del compilatore: P .. Mi rendo conto che il mio primo caso è debole, ma il mio secondo caso è davvero più quello che intendo perché non vi è alcuna possibilità di perdita dei dati lì a meno che 'x' è negativo – Earlz
Sul secondo conteggio , vedi la mia risposta in basso ... –