程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#的隱式引用轉換

C#的隱式引用轉換

編輯:關於C語言

隱式引用轉換包括以下幾類:

●從任何引用類型到對象類型的轉換

●從類類型s到類類型t的轉換,其中s是t的派生類。

●從類類型s到接口類型t的轉換,其中類s實現了接口t。

●從接口類型s到接口類型t的轉換,其中t是s的父接口。

從元素類型為Ts的數組類型S向元素類型為Tt的數組類型T轉換,這種轉換需要滿足下列條件:

●S和T只有元素的數據類型不同,但它們的維數相同。

●Ts和Tt都是引用類型。

●存在從Ts到Tt的隱式引用轉換

●從任何數組類型到System.Array的轉換。

●從任何代表類型到System.Delegate的轉換。

●從任何數據類型或代表類型到System.ICLoneable的轉換。

●從空類型(null)到任何引用類型的轉換。

比如,下面的程序無法通過編譯,因為數組的元素類型是值類型,C#中不存在這樣的隱式轉換。

程序清單6-3:

using System;
class Test
{
  public static void Main(){
    float[] float_arr=new float[10];
    int[] int_arr=new int[10];
    float_arr=int_arr;
   }
}
而下面這段程序則是正確的:

程序清單6-4:

using System;
class Class1
{}
class Class2:Class1
{}
class Test
{
   public static void Main(){
     Class1[] class1_arr=new Class1[10];
     class2[] class2_arr=new Class2[10];
     class1_arr=class2_arr;
    }
}

程序6-5很有趣,它給出了我們常用的值類型在系統環境中的原型定義。

程序6-5:

using System;
class Test
{
  public static void Main(){
    float[] float_arr=new float[10];
    double[] double_arr=new double[10];
    sbyte[] sbyte_arr=new sbyte[10];
    byte[] byte_arr=new byte[10];
    ushort[] ushort_arr=new ushort[10];
    int[] int_arr=new int[10];
    long[] long_arr=new long[10];
    string[] string_arr=new string[10];
    console.WriteLine(float_arr);
    Console.WriteLine(double_arr);
    Console.WriteLine(sbyte_arr);
    Console.WriteLine(byte_arr);
    Console.WriteLine(ushort_arr);
    Console.WriteLine(int_arr);
    Console.WriteLine(long_arr);
    Console.WriteLine(string_arr);
   }
}

程序的輸出結果是:

System.Single[];
System.Double[];
System.Sbyte[];
System.Byte[];
System.Int16[];
system.Int32[];
System.Int64[];
System.String[];
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved