Maison > Article > développement back-end > Journal d'apprentissage C# 17 --- Afficher des cas d'utilisation spécifiques de conversion de type
Dans la conversion de type de C#, en plus de la conversion de type implicite introduite dans l'article précédent, il existe également une conversion de type qui doit être déclarée -----conversion de type explicite.
Explicite conversion de type, également appelée conversion de type forcée, nous oblige à spécifier explicitement le type de conversion lors de la conversion. Par exemple, lorsque nous convertissons le type long en type int, puisque cette conversion est une conversion qui perd en précision, le système ne le fera pas. effectue automatiquement une conversion implicite de formule, une conversion forcée est donc requise :
long l = 6000; int i = (int)l; //需要用在 ()里面声明转换类型
La conversion du type d'affichage n'est pas vraie pour deux types, tels que :
int i = 6000; string i = (string)i; //这里会报错
Par conséquent, le type d'affichage la conversion a également certaines règles de :
affiche la conversion numérique ;
affiche la conversion d'énumération ; > affiche la conversion de référence ;
La conversion d'affichage n'est pas toujours réussie, et peut souvent entraîner la perte d'informations (car les types sont différents, la plage et la précision sont également différentes. Pour plus de détails, veuillez vous référer au type de données). La conversion d'affichage inclut toutes les conversions implicites, donc la conversion implicite peut également être écrite sous la forme de conversion explicite, telle que :
int i = 6000; long l = (long)i; //等价于 long l = i;
de short à sbyte, byte, ushort, uint, ulong, type char
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); } } }
De sbyte, byte, short, ushort , int, uint, long, ulong, float, char, double, decimal types à n'importe quel type d'énumération
de n'importe quel type d'énumération à tout autre type d'énumération
Écrivez un exemple :
Résultat d'exécution :De l'objet à n'importe quoi Conversion de type de référence
using System;
using System.Collections .Generic;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); } } }using System.Linq;
using System.Text;
Conversion du type d'interface s en type de classe t, où t n'est pas une classe scellée et n'implémente pas s;
Conversion du type d'interface s en type d'interface t, où s n'est pas une sous-interface de t;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类 } } }Tableau de type référence et tableau de type référence Conversion d'affichage , qui sont tous deux la relation entre la classe parent et la sous-classe (les dimensions doivent être les mêmes)
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; //将父类转换为子类 } } }Cela ne fonctionnera pas si vous le remplacez par le tableau suivant
De System.Array Au type de tableau (le tableau est la classe de base de tous les types de tableaux)
De System.Delegate au type représentatif (délégué)
namespace Test { class Program { public interface teacher //定义一个接口 { } class student //定义一个类 { } static void Main(string[] args) { student stu = new student(); //实例化一个对象 teacher tea = (teacher)stu; // 显示转换 } } }
Ce qui précède est C# Learning Diary 17 --- Affiche le contenu de cas d'utilisation spécifiques pour la conversion de type. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { class Program { public interface man //定义一个接口 { } class teacher:man //定义一个继承于man的类man { } class student //定义一个新类 { } static void Main(string[] args) { man teac=new teacher(); //间接实例化一个接口 student stu = (student)teac; // 显示转换 } } }