Nach der vorherigen Untersuchung der grundlegenden Datentypen in C# haben wir sie fast eingeführt. Lassen Sie uns etwas über die gegenseitige Konvertierung zwischen Typen lernen, die in zwei Kategorien unterteilt werden kann: implizite Konvertierung und explizite Konvertierung.
Implizite Konvertierung:
Die implizite Konvertierung ist die Standardkonvertierung des Systems und kann ohne Deklaration konvertiert werden. Während des impliziten Konvertierungsprozesses kann der Compiler die Konvertierung sicher durchführen, ohne die Konvertierung zu überprüfen. Beispielsweise ist die Konvertierung vom Typ int in den Typ long eine implizite Konvertierung. Die implizite Konvertierung schlägt im Allgemeinen nicht fehl und Informationen gehen während des Konvertierungsvorgangs nicht verloren.
Zum Beispiel: int i = 100; // Int-Typ automatisch ohne konvertieren Deklaration In Long-Typ konvertieren
Die implizite Konvertierung gilt nicht für zwei beliebige Typen. Wenn wir beispielsweise den obigen Long-Typ implizit in den Int-Typ konvertieren, ist dies nicht möglich:
long a = 100,
Implizite Aufzählungskonvertierung
Die implizite Aufzählungskonvertierung ermöglicht die Konvertierung der Dezimalzahl 0 in einen beliebigen Aufzählungstyp. Beachten Sie, dass nur 0 konvertiert werden kann. Eine solche implizite Konvertierung gibt es nicht Schauen Sie sich für andere ganze Zahlen das folgende Beispiel an:
(Person p = neue Person ())
Konvertierung vom Klassentyp s in den Klassentyp t, wobei s eine abgeleitete Klasse von t ist;
Konvertierung vom Klassentyp s zum Schnittstellentyp t, wobei die Klasse s die Schnittstelle t implementiert (der Inhalt über die Schnittstelle (Schnittstelle) wird später geschrieben, er wird nur zum Deklarieren von Methoden, aber nicht zum Definieren von Methoden verwendet)using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { class Program { static void Main(string[] args) { byte x = 255; //byte 表示的范围0~255 short y = x; //将从byte到short隐式转换 y++; Console.WriteLine("y = {0}",y); y = 32767; //shot的范围 -32768~32767 int i = y + 5; //从 short 到 int 隐式转换扩大范围 结果是准确的 y+=5; //超出范围了结果会不准确 Console.WriteLine("y = {0}",y); //y超出范围数据会丢失部分 Console.WriteLine("i = {0}",i); } } }
Es sollte hier daran erinnert werden, dass der folgende Code einen Fehler meldet, wenn das Referenztyp-Array ein Werttyp-Array ist:
Von Array-Typ zu System.Array-Konvertierung; (Array ist die Basisklasse aller Arrays, siehe vorherigen Artikel^_^)using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { class Program { enum weekday //定义一个枚举类型 { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; static void Main(string[] args) { weekday day; day = 0; //隐式将0转换为枚举类型(只能是0) Console.WriteLine(day); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { class Program { public static int output(int s) //定义一个方法 { Console.WriteLine("welcome,{0}",s); return 1; } public delegate int mydel(int s); //声明一个委托(以后我会说到委托) static void Main(string[] args) { mydel my = new mydel(output); //将 output方法委托给my Delegate MYDEL = my; //向 MYDEL 隐式转换 } } }
以上就是 C#学习日记16----隐式转换具体用例的内容,更多相关内容请关注PHP中文网(www.php.cn)!