Tun "type-safe" und "stark typisiert" das gleiche bedeuten?
Tun "type-safe" und "stark typisiert" das gleiche bedeuten?
- Sollte dies nicht sein community-wiki?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tun "type-safe" und "stark typisiert" das gleiche bedeuten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, nicht unbedingt - obwohl es hängt von Ihrer definition der Begriffe, und es gibt keine klar definierten und weithin akzeptierten Definitionen.
Beispielsweise dynamische Programmiersprachen sind oft Typ sicher, aber nicht stark typisiert. In anderen Worten, es gibt keine compile-time-type-information zu bestimmen, was Sie tun und nicht tun können, die mit einem Typ, aber bei der Ausführung die Laufzeitumgebung stellt sicher, dass Sie nicht eine Art, als wäre es ein anderes.
Beispielsweise in C# 4.0 können Sie tun:
Der letzten Zeile ist der Schlüssel zu geben-sicher ist: es gibt keine sichere Konvertierung von einer int-array zu einem
FileStream
, so schlägt die operation fehl - statt Behandlung der bytes des array-Objekts als wenn Sie waren einFileStream
.EDIT: C# ist normalerweise "stark typisiert" (als Sprache) und geben sicher: der compiler nicht zulassen, Sie versuchen, beliebige Anrufe auf ein Objekt, und die Laufzeit wird nicht lassen Sie unangemessenes Konvertierungen.
Ich bin mir nicht ganz sicher, wo unsicherer code passt - ich weiß nicht genug darüber zu kommentieren, ich habe Angst.
Dynamische Typisierung in C# 4 ermöglicht schwach typisiert, aber noch type-safe-code, wie oben gezeigt.
Beachten Sie, dass
foreach
führt eine implizite Konvertierung, so dass es eine Art hybrid:Dies kompiliert (es war eine andere Frage auf diese Zeit) aber nicht bei der Ausführung. Ironischerweise, denn Sie sind versuchen werden stark typisiert mit Bezug auf die
stream
variable, was bedeutet, dass Sie durchführen müssen, einen Zauber auf das Ergebnis der iterator.ArrayList
, dass cast fehlschlagen kann. Es wird ein Fehler in einer relativ sicheren Weg, sondern der Akt des "get string value " aus der Liste" ist noch riskanter, als wäre es mit einemList<string>
.Gute Frage. Lesen diese wikipedia-Eintrag, hier ein Auszug:
"Type-Safe" bedeutet, dass es keine casting beteiligt und kein run-time-Typ-Fehler auftreten.
Einige Leute argumentieren, dass "Stark Typisiert" bedeuten, nichts, oder "es ist gut", oder "ich bin zufrieden mit ihm".
Sowieso, "Type-Safe" bezieht sich nur auf einen Teil des Codes oder der API, wenn "Stark Typisiert" bezieht sich auf eine ganze Sprache oder Plattform.
ype sichere Mittel gegen Programme, die den Zugriff auf den Speicher außerhalb der Grenzen des Objekts öffentlichen Eigenschaften. Wenn der code nicht Typ-sicher, unerwünschte Nebenwirkungen auftreten können. Typ-Sicherheit ist wichtig für die Montage der isolation und Sicherheit eingerichtet. Wenn der code typsicher, die common language runtime kann vollständig isolieren Baugruppen voneinander
Sind Sie im Grunde gleich, es ist nur eine Frage der interpretation:
Aus der wikipedia: