Bei der Typkonvertierung von C# gibt es zusätzlich zur im vorherigen Artikel eingeführten impliziten Typkonvertierung auch eine Typkonvertierung, die deklariert werden muss ----- explizite Typkonvertierung
Anzeige Typkonvertierung, auch erzwungene Typkonvertierung genannt, erfordert, dass wir bei der Konvertierung den Konvertierungstyp explizit angeben. Wenn wir beispielsweise den Long-Typ in den Int-Typ konvertieren, wird das System dies nicht tun, da es sich bei dieser Konvertierung um eine Konvertierung handelt, die an Präzision verliert Führen Sie automatisch eine implizite Konvertierung durch. Daher ist eine erzwungene Konvertierung erforderlich:
long l = 6000; int i = (int)l; //需要用在 ()里面声明转换类型
Die Konvertierung des Anzeigetyps gilt nicht für zwei Typen, z. B.:
int i = 6000; string i = (string)i; //这里会报错
Daher der Anzeigetyp Für die Konvertierung gelten auch bestimmte Regeln:
zeigt die numerische Konvertierung an;
zeigt die Aufzählungskonvertierung an; > Zeigt die Referenzkonvertierung an ;
Die Anzeigekonvertierung ist nicht immer erfolgreich und kann häufig zum Verlust von Informationen führen (da die Typen unterschiedlich sind, sind auch der Bereich und die Genauigkeit unterschiedlich. Einzelheiten finden Sie unter Bitte beachten Sie den Datentyp. Die Anzeigekonvertierung umfasst alle impliziten Konvertierungen. Daher kann die implizite Konvertierung auch in Form einer expliziten Konvertierung geschrieben werden, z. B.:
int i = 6000; long l = (long)i; //等价于 long l = i;
von short zu sbyte, byte, ushort, uint, ulong, char-Typ; 🎜>
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { class Program { static void Main(string[] args) { double n_double = 1.73456789; float n_float = (float)n_double; //显示转换 float的有效为只有8位(.也是一位)所以从第9位四舍五入 int n_int = (int)n_double; //只保留整数 Console.WriteLine("n_float = {0}\nn_int = {1}",n_float,n_int); } } }
Von jedem Aufzählungstyp zu sbyte, byte, short, ushort, int, uint , Long, Ulong, Float, Char, Double, Dezimaltypen;
Schreiben Sie eine Beispiel:
Laufendes Ergebnis:Von Objekt zu irgendetwas Referenztypkonvertierung;
mit System.Collections .Generic;
using System.Linq;using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { class Program { enum weekday //定义2个枚举 {Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday } enum Month {Janurary=1,February,March,April,May,Jun,July } static void Main(string[] args) { int n_int = 2; double n_double = 3.0; decimal n_decimal = 5m; //声明decimal 类型要加m weekday weki = (weekday)n_int; //从int、double、decimal到枚举转换 weekday wekd = (weekday)n_double; weekday wekde = (weekday)n_decimal; weekday wek = weekday.Tuesday; //枚举类型之间的转换 Month mon = (Month)wek; int i = (int)wek; //从枚举类型到int的转换 int t = (int)mon; Console.WriteLine("n_int = {0}\nn_double = {1}\nn_decimal = {2}",weki,wekd,wekde); Console.WriteLine("wek = {0}\nmon = {1}\nwek ={2}\tmon = {3}",wek,mon,i,t); } } }
Konvertierung vom Schnittstellentyp s in den Klassentyp t, wobei t keine versiegelte Klasse ist und nicht implementiert wird s;
Konvertierung vom Schnittstellentyp s in den Schnittstellentyp t, wobei s keine Unterschnittstelle von t ist;
Referenztyp-Array und Referenztyp-Array Anzeigekonvertierung , die beide die Beziehung zwischen Elternklasse und Unterklasse darstellen (die Dimensionen müssen gleich sein)using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { class Program { //定义2个类 teacher与man class teacher { } class man { } static void Main(string[] args) { man per = new man(); //将man实例化一个对象per object o = per; //装箱 teacher p = (teacher)o; // 将o显示转换为teacher类 } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { class Program { class man //定义一个基类 { } class student:man //student继承man { } static void Main(string[] args) { man per = new man(); //man实例化一个对象per student stu = (student)per; //将父类转换为子类 } } }
Von System.Delegate zum repräsentativen (delegaten) Typ
Das Obige ist C# Learning Diary 17--- Zeigt den Inhalt spezifischer Anwendungsfälle für die Typkonvertierung an. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!
namespace Test { class Program { public interface teacher //定义一个接口 { } class student //定义一个类 { } static void Main(string[] args) { student stu = new student(); //实例化一个对象 teacher tea = (teacher)stu; // 显示转换 } } }