Heim  >  Artikel  >  Backend-Entwicklung  >  SUNWEN-Tutorial – C# für Fortgeschrittene (9)

SUNWEN-Tutorial – C# für Fortgeschrittene (9)

黄舟
黄舟Original
2016-12-19 10:25:341064Durchsuche

Was ich jetzt sagen möchte, sind benutzerdefinierte Konvertierungen (User-Defined Conversions) in C#, die das zuvor erwähnte Wissen über die Struktur nutzen. Haben Sie es vergessen? Okay, vergessen Sie es nicht. In den folgenden Lektionen können wir die Verwendung von Strukturen sehen (ich habe gerade noch über ihre Verwendung nachgedacht, haha). Was mit class deklariert wird, ist eine Klasse, und was mit struct deklariert wird, kann als Typ betrachtet werden. Ja, es ist wie C#. Es hat Typen wie int, short und long.

C# erlaubt uns, Strukturen (Strukturen) und Klassen (Klassen) zu konvertieren, sodass wir einige Konvertierungen darin definieren können. legt fest, dass alle Konvertierungsanweisungen zwischen explizit und implizit wählen müssen. Wenn wir beispielsweise diese Anweisung
int a=10;
System.Console.PRintln(a) verwenden:
Die implizite Konvertierung von int Wenn es sich um (String)a handelt, wird es als Anzeige bezeichnet. Daher liegt der Unterschied zwischen explizit und versteckt darin, ob es angezeigt wird. Ich werde es jetzt noch erklären Schreiben Sie das Beispiel auf und analysieren Sie es. Es ist Zeit, das Licht auszuschalten, also mache ich den ersten Schritt.


Oh~~~~~ Ich bin endlich aufgestanden, um 8:45 Uhr 5. Mai. Folgendes Beispiel: In diesem Beispiel wird ein Typ namens RomanNumeral deklariert und anschließend werden mehrere Konvertierungen darauf durchgeführt

000: // UserConversionsconversion.cs
001: using System;
002:
003: struct RomanNumeral
004: {
005: public RomanNumeral(int value)
006: {
007: this.value = value; : }
009: statischer öffentlicher impliziter Operator RomanNumeral(int value)
010: {
011: neues RomanNumeral(value) zurückgeben;
012: }
013: statischer öffentlicher expliziter Operator int (RomanNumeral roman)
014: {
015: return roman.value;
016: }
017: statische öffentliche implizite Operatorzeichenfolge(RomanNumeral roman)
018: {
019 : return( "Konvertierung noch nicht implementiert");
020: }
021: privater int-Wert;
022: }
023:
024: Klassentest
025: {
026: static public void Main()
027: {
028: RomanNumeral Ziffer;
029:
030: Ziffer = 10;
031:
032: / / explizite Konvertierung von Zahl zu int033: Console.WriteLine((int)numeral);
034:
035: // Implizite Konvertierung zu string036: Console.WriteLine(numeral);
037:
038: // Explizit in int konvertiert, dann explizit in short konvertiert040: short s = (short)numeral;
041:
042: Console.WriteLine(s);
043:
044: }
045: }
Die Ausgabe dieses Beispiels ist:

10

Konvertierung noch nicht implementiert
10
Beachten Sie die Operatoroperationen der Operatoren 009 und 013. Dies ist der Fall Ein statischer öffentlicher expliziter Operator int (RomanNumeral roman). Denken Sie an diese Form. Schauen Sie sich Zeile 033 noch einmal an, da die int-Konvertierung zuvor als explizit deklariert wurde. Sie müssen Klammern verwenden.

Ein Beispiel ist unten angegeben. Dieses Beispiel deklariert zwei Strukturen, RomanNumeral und BinaryNumeral, und konvertiert dann zwischen ihnen.

000: // UserConversionsstructconversion.cs

001 : using System;
002:
003: struct RomanNumeral
004: {
005: public RomanNumeral(int value) { this.value = value; }
006: statischer öffentlicher impliziter Operator RomanNumeral(int value)
007: {return new RomanNumeral(value);}
008: statischer öffentlicher impliziter Operator
009: RomanNumeral (BinaryNumeral binär)
010: {return new RomanNumeral((int )binary);}
011: statischer öffentlicher expliziter Operator int(RomanNumeral roman)
012: {return roman.value;}
013: statischer öffentlicher impliziter Operator string(RomanNumeral roman)
014: {return("Konvertierung noch nicht implementiert");}
015: privater int-Wert;
016: }
017:
018: struct BinaryNumeral
019: {
020: public BinaryNumeral(int value) {this.value = value;}
021:
022: statischer öffentlicher impliziter Operator BinaryNumeral(int value)
023: {return new BinaryNumeral(value);}
024: statischer öffentlicher impliziter Operator string(BinaryNumeral binär)
025: {return("Konvertierung noch nicht implementiert");}
026: statischer öffentlicher expliziter Operator int(BinaryNumeral binär)
027: {return( Binary.value); public void Main()
035: {
036: RomanNumeral roman;
037: roman = 10;
038: BinaryNumeral Binary;
039: Binary = (BinaryNumeral)(int)roman ;
040: roman = Binary;
041: Console.WriteLine((int)binary);
042: Console.WriteLine( Binary);
043: }
044: }
Die Ausgabe dieses Beispiels ist:

10
Konvertierung noch nicht implementiert
Beachten Sie, dass Zeile 039 nicht direkt von RomanNumeral in BinaryNumeral konvertiert wird, da keine direkte Konvertierung vorgesehen ist Konvertieren Sie zuerst RomanNumeral in int und dann in BinaryNumeral. Der Rest ist derselbe wie im obigen Beispiel (zumindest denke ich das). Das ist es Oben finden Sie den Inhalt des SUNWEN-Tutorials – C# Advanced (9). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn