Wann sind C # -Schlüsselwörter nicht reserviert?

8

Ich habe mich gerade zerstreut gefunden, indem ich from als Identifikator benutzt habe.

Mir ist klar, dass es möglich ist, @ zu verwenden, um Bezeichnernamen zu entgehen und reservierte Wörter zu verwenden, aber ich verstehe nicht, warum ich in diesem Fall keine Warnung oder einen Fehler erhalten habe.

Ich möchte keine reservierten Wörter für etwas anderes als ihren beabsichtigten Zweck verwenden, aber ich möchte nicht noch einmal einen ähnlichen Fehler machen und würde gerne die Gründe dafür kennen, Sprachschlüsselwörter zu haben, die unter bestimmten Umständen nicht reserviert sind / p>     

PeterT 02.12.2010, 19:00
quelle

6 Antworten

13

Einige Schlüsselwörter sind nur in bestimmten Kontexten reserviert, z. B. partial in partial class .

Siehe "Kontextbezogene Keywords" unter dieses Thema auf MSDN .

    
Stephen Cleary 02.12.2010, 19:02
quelle
4

Das C # -Team versucht speziell, neue reservierte Schlüsselwörter in der Sprache zu vermeiden. Wenn ein neues Schlüsselwort hinzugefügt wird, wird der vorhandene Code, der dieses Schlüsselwort verwendet hat, automatisch als Bezeichner verwendet. Daher verwendet C #, wann immer möglich, ein kontextabhängiges Schlüsselwort, um die Möglichkeit zu minimieren oder zu beseitigen, vorhandenen Code zu brechen.

Ein kontextuelles Schlüsselwort ist eines, das nur dann ein Schlüsselwort ist, wenn es in einem bestimmten Kontext wie from , partial , var usw. verwendet wird. Dieser Kontext enthält keine Bezeichner:)

Ich glaube nicht, dass seit C # 2.0 ein neues Keyword hinzugefügt wurde (nicht einmal sicher, dass 2.0 hinzugefügt wurde)

    
JaredPar 02.12.2010 19:03
quelle
3

von ist ein kontextabhängiges Schlüsselwort. Viele von ihnen in C #, sie verhalten sich nur wie ein Schlüsselwort, wenn sie in einem bestimmten Kontext verwendet werden. Der große Vorteil besteht darin, dass das Hinzufügen eines solchen Kontextschlüssels zur Sprache den vorhandenen Code nicht unterbricht.

Sie finden sie in der zweiten Tabelle auf dieser MSDN-Seite . Ja, von ist da.

    
Hans Passant 02.12.2010 19:04
quelle
2

Sie sind nicht reserviert , wenn sie kontextuell sind ( MSDN-Verbindung ):

  

Ein kontextabhängiges Schlüsselwort wird verwendet   eine bestimmte Bedeutung in der   Code, aber es ist kein reserviertes Wort in   C #. Einige kontextbezogene Schlüsselwörter, wie z   teilweise und wo, haben spezielle   Bedeutungen in zwei oder mehr Kontexten.

    
Ahmad Mageed 02.12.2010 19:03
quelle
1
___ qstntxt ___

Ich habe mich gerade zerstreut gefunden, indem ich add als Identifikator benutzt habe.

Mir ist klar, dass es möglich ist, remove zu verwenden, um Bezeichnernamen zu entgehen und reservierte Wörter zu verwenden, aber ich verstehe nicht, warum ich in diesem Fall keine Warnung oder einen Fehler erhalten habe.

Ich möchte keine reservierten Wörter für etwas anderes als ihren beabsichtigten Zweck verwenden, aber ich möchte nicht noch einmal einen ähnlichen Fehler machen und würde gerne die Gründe dafür kennen, Sprachschlüsselwörter zu haben, die unter bestimmten Umständen nicht reserviert sind / p>     

___ answer4338748 ___

Einige Schlüsselwörter sind nur in bestimmten Kontexten reserviert, z. B. get in set .

Siehe "Kontextbezogene Keywords" unter dieses Thema auf MSDN .

    
___ qstnhdr ___ Wann sind C # -Schlüsselwörter nicht reserviert? ___ answer4338759 ___

Sie sind nicht reserviert , wenn sie kontextuell sind ( MSDN-Verbindung ):

  

Ein kontextabhängiges Schlüsselwort wird verwendet   eine bestimmte Bedeutung in der   Code, aber es ist kein reserviertes Wort in   C #. Einige kontextbezogene Schlüsselwörter, wie z   teilweise und wo, haben spezielle   Bedeutungen in zwei oder mehr Kontexten.

    
___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ antwort4338795 ___

Um die zugrunde liegende Frage zu beantworten:

Alle nach C # 1 hinzugefügten Schlüsselwörter sind kontextabhängig. Dadurch werden Änderungen vermieden.

Fast alle C # 1-Schlüsselwörter sind reserviert, mit Ausnahme der Accessor-Schlüsselwörter ( %code% , %code% , %code% und %code% ).

    
___ tag123syntax ___ Syntax bezieht sich auf die eigentlichen Sprachelemente und Symbole selbst. Fragen sollten als Syntax gekennzeichnet werden, wenn sich die Frage spezifisch und fast vollständig auf die Syntax bezieht. Dieses Tag sollte mit einem bestimmten Sprach-Tag verwendet werden ___ answer4338767 ___

Die meisten C # -Schlüsselwörter sind immer reserviert. Einige, wie Sie herausgefunden haben, sind nur in einigen Kontexten reserviert. Sie werden kontextbezogene Schlüsselwörter genannt. Ich glaube, das ist ein Weg, Rückwärtskompatibilität besser zu gewährleisten.

Der Grund dafür ist, dass %code% in C # 2 ein vollkommen akzeptabler Variablenname war. C # 3 fügte LINQ hinzu und sie benötigten Schlüsselwörter dafür. Um maximale Kompatibilität zu gewährleisten, wurde %code% als kontextabhängiges Schlüsselwort hinzugefügt.

    
___ tag123reservedwords ___ reservierte Wörter sind spezifische Wörter in jeder Sprache, die von den Autoren aufgrund ihrer besonderen Bedeutung in der Sprache nicht verwendet werden dürfen. ___ answer4338761 ___

Das C # -Team versucht speziell, neue reservierte Schlüsselwörter in der Sprache zu vermeiden. Wenn ein neues Schlüsselwort hinzugefügt wird, wird der vorhandene Code, der dieses Schlüsselwort verwendet hat, automatisch als Bezeichner verwendet. Daher verwendet C #, wann immer möglich, ein kontextabhängiges Schlüsselwort, um die Möglichkeit zu minimieren oder zu beseitigen, vorhandenen Code zu brechen.

Ein kontextuelles Schlüsselwort ist eines, das nur dann ein Schlüsselwort ist, wenn es in einem bestimmten Kontext wie %code% , %code% , %code% usw. verwendet wird. Dieser Kontext enthält keine Bezeichner:)

Ich glaube nicht, dass seit C # 2.0 ein neues Keyword hinzugefügt wurde (nicht einmal sicher, dass 2.0 hinzugefügt wurde)

    
___ answer4338765 ___

von ist ein kontextabhängiges Schlüsselwort. Viele von ihnen in C #, sie verhalten sich nur wie ein Schlüsselwort, wenn sie in einem bestimmten Kontext verwendet werden. Der große Vorteil besteht darin, dass das Hinzufügen eines solchen Kontextschlüssels zur Sprache den vorhandenen Code nicht unterbricht.

Sie finden sie in der zweiten Tabelle auf dieser MSDN-Seite . Ja, von ist da.

    
___
SLaks 02.12.2010 19:07
quelle
0

Die meisten C # -Schlüsselwörter sind immer reserviert. Einige, wie Sie herausgefunden haben, sind nur in einigen Kontexten reserviert. Sie werden kontextbezogene Schlüsselwörter genannt. Ich glaube, das ist ein Weg, Rückwärtskompatibilität besser zu gewährleisten.

Der Grund dafür ist, dass from in C # 2 ein vollkommen akzeptabler Variablenname war. C # 3 fügte LINQ hinzu und sie benötigten Schlüsselwörter dafür. Um maximale Kompatibilität zu gewährleisten, wurde from als kontextabhängiges Schlüsselwort hinzugefügt.

    
driis 02.12.2010 19:04
quelle

Tags und Links