74 Stimmen

c#: Unterschied zwischen "System.Object" und "object"

Gibt es in C# einen Unterschied zwischen der Verwendung von System.Object im Code statt nur object , oder System.String よりも string und so weiter? Oder ist es nur eine Frage des Stils?

Gibt es einen Grund, warum die eine Form der anderen vorzuziehen ist?

5 Stimmen

Ich mache es folgendermaßen: Ich verwende int oder string im Kontext einer primitiven Variablen (z.B. int x = 0) und verwende Int32 und String usw. im Kontext von Klassen (z.B. Int32.Parse oder String.Empty) - macht aber keinen Unterschied, am Ende wird es zum gleichen CLR-Typ kompiliert.

2 Stimmen

Warum veröffentlichen Sie das nicht als Antwort?

1 Stimmen

Dies ist eine ähnliche Frage wie diese. stackoverflow.com/questions/981434/

0voto

abatishchev Punkte 94886

Es gibt keinen Unterschied. Es gibt eine Reihe von Typen, genannt Primitive Datentypen die vom Compiler in dem von Ihnen erwähnten Stil ausgegeben werden.

Die Großschreibung der Namen entspricht der ISO-Namensregel. Sie ist allgemeiner, allgemeiner; erzwingt die gleichen Benennungsregeln für alle Objekte in der Quelle ohne Ausnahmen wie C#-Compiler hat.

1 Stimmen

Der Artikel ist schlecht geschrieben, wenn man das Wort "primitiv" dort verwendet. Wenn Sie sich die Dokumente für Type.IsPrimitive ansehen, werden Sie sehen: "Die primitiven Typen sind Boolean, Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64, IntPtr, UIntPtr, Char, Double, und Single." Beachten Sie, dass dies nicht umfassen String, Decimal und Object, aber tut umfassen IntPtr und UIntPtr.

1 Stimmen

(Außerdem wird das Wort "Objekt" in einer ziemlich schnellen und lockeren Weise verwendet. Es ist ein allgemein schlecht geschriebener Artikel, IMO.)

0 Stimmen

Vielleicht wäre ein besserer Begriff "Schlüsselwort-Datentypen"?

0voto

Omar Abid Punkte 15276

Soweit ich weiß, weiß ich, dass es eine Abkürzung ist, es ist einfacher, String zu verwenden, anstatt System.string.

Aber Vorsicht, es gibt einen Unterschied zwischen String und String (c# unterscheidet Groß- und Kleinschreibung)

2 Stimmen

Worin besteht der Unterschied zwischen ihnen?

3 Stimmen

Versuchen Sie, "String" ohne eine "using System;"-Anweisung zu verwenden :)

0 Stimmen

@Jon was bevorzugen Sie?

0voto

Quarkly Punkte 3499

Objekt , int , lang et bool wurden bereitgestellt als Stützräder für Ingenieure, die Schwierigkeiten hatten, sich an den Gedanken zu gewöhnen, dass die Datentypen nicht ein fester Bestandteil der Sprache sind. Im Gegensatz zu den Vorgängersprachen gibt es in C# keine Begrenzung für die Anzahl der Datentypen, die Sie hinzufügen können. Die 'System'-Bibliothek bietet ein Starterkit mit so nützlichen Typen wie System.Int32 , System.Boolean , System.Double , System.DateTime usw., aber die Ingenieure werden ermutigt, ihre eigenen hinzuzufügen. Da Microsoft an einer schnellen Akzeptanz seiner neuen Sprache interessiert war, hat es Aliase bereitgestellt, die den Anschein erwecken, als sei die Sprache eher "C"-ähnlich, aber diese Aliase sind eine völlig überflüssige Funktion (C# wäre eine ebenso gute Sprache, wenn man alle eingebauten Aliase entfernen würde, wahrscheinlich sogar besser).

StyleCop erzwingt zwar die Verwendung von Aliasen im alten C-Stil, aber das ist ein Makel in einem ansonsten logischen Regelwerk. Bis jetzt habe ich noch keine einzige Rechtfertigung für diese Regel (SA1121) gehört, die nicht auf einem Dogma beruht. Wenn Sie SA1121 für logisch halten, warum gibt es dann keinen buildin type für datetime ?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X