Heim  >  Artikel  >  Backend-Entwicklung  >  C#-Lerntagebuch 16 ----Spezifische Anwendungsfälle der impliziten Konvertierung

C#-Lerntagebuch 16 ----Spezifische Anwendungsfälle der impliziten Konvertierung

黄舟
黄舟Original
2017-01-21 15:02:091691Durchsuche

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

    Implizite Referenzkonvertierung
  • Implizite numerische Konvertierung:
  • Die implizite numerische Konvertierung umfasst die folgenden Typen:
  • Vom sbyte-Typ zum kurzen, int-, langen, float-, double- und dezimalen Typ
  • Vom Bytetyp zum Short-, Ushort-, Int-, Uint-, Long-, Ulong-, Float-, Double-, Dezimaltyp

    Vom Short-Typ zum Int, vom Typ ushort zum Typ int, uint, long, ulong, flaot, double, dezimal
  • Vom Typ „int“ zum Typ „long“, „flaot“, „double“, „decimal“; >
  • Vom Typ „Long“ zum Typ „Float“, Double, Dezimal; Vom Typ char zum Typ ushort, int, uint, long, ulong, flaot, double, decimal; Vom Typ float zum Typ double; 🎜> Lassen Sie uns nach dem Schreiben so viel zusammenfassen: Es handelt sich um eine Konvertierung vom Typ mit niedriger Genauigkeit in den Typ mit hoher Genauigkeit (da Präzision und Dateninformationen nicht verloren gehen), aber es gibt keine implizite Konvertierung vom Typ mit hoher Genauigkeit in den Typ mit niedriger Genauigkeit -Präzisionstyp (möglicherweise gehen einige Informationen verloren und sie sind nicht sicher). Informationen zur Präzision und Typenvielfalt finden Sie im C#-Lerntagebuch 04. Hier ist zu beachten, dass es keine implizite Konvertierung von anderen Typen in den Char-Typ gibt.
  • Beispiel für implizite numerische Konvertierung:
  • Ergebnis:
  • Wie aus diesem Beispiel ersichtlich ist Die rechtzeitige Verwendung der Typkonvertierung ist immer noch sehr wichtig.
  • 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:

  • Das Ausgabeergebnis ist:

  • Wenn wir im obigen Code Tag = 0 eingeben, sollte es Tag = 1 sein Der Compiler gibt einen Fehler aus.
  • Implizite Referenzkonvertierung:
  • Konvertierung von einem beliebigen Referenztyp in einen Objekttyp;
  • (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);   
  
              
        }  
    }  
}

Konvertierung vom Schnittstellentyp s zum Schnittstellentyp t, wobei t die übergeordnete Schnittstelle von s ist;

C#-Lerntagebuch 16 ----Spezifische Anwendungsfälle der impliziten Konvertierung

Konvertierung vom Referenztyp-Array s zum Referenztyp-Array t, wobei s eine abgeleitete Klasse von t ist, und die Array-Dimension Die Zahlen sind gleich;

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);  
              
        }  
    }  
}
Konvertierung von einem beliebigen repräsentativen Typ zu System.Delegate; werde später über den Delegaten schreiben)

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)!


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