首頁  >  文章  >  後端開發  >  C# 動態

C# 動態

WBOY
WBOY原創
2024-09-03 15:32:36714瀏覽

為了避免在編譯時進行檢查,C# 4.0 版本中引入了一種稱為動態類型的新類型。基本上,類型是由編譯器根據表達式值分配的,而該動態類型在編譯時不會進行類型檢查,也就是說,它在編譯時逃避類型檢查,而是在運行時解析類型,並且在運行時解析類型。 dynamic 關鍵字用於定義動態類型,動態類型由編譯器編譯為物件類型,動態的實際類型在執行時解析。

S文法:

dynamic variable_name;

C# 中動態類型的工作

  • 動態類型是隨著 C# 4.0 的發布而引入的。使用動態類型可以避免編譯時的類型檢查。
  • 編譯器在執行時檢查類型。
  • 動態類型的行為類似於物件類型的行為。
  • GetType()方法可用來取得動態變數的實際型別。
  • 動態類型的類型在運行時會根據右側的值而變化。
  • 當類別物件被指派給動態類型時,編譯器不會檢查正確的方法以及保存類別物件的屬性名稱。
  • 動態類型參數也可以傳遞給方法,以便該方法在運行時可以接受任何類型的參數。
  • 如果發現屬性和方法不相容,編譯器會在執行時拋出異常。
  • 編譯器在編譯時不會對動態類型拋出錯誤,因為編譯器在編譯時不會檢查動態類型的類型。

考慮下面的範例來解釋動態類型在 C# 程式中的用法:

using System;
//a class called program is defined
class program
{
//main method is called
static public void Main()
{
// Dynamic variables are declared
dynamic val1 = 1234;
dynamic val2 = 1234.40;
dynamic val3 = false;
dynamic val4 = "Hello";
//GetType() method is used to obtain the actual type of the dynamic variables used earlier
Console.WriteLine("The actual type of val1 is: {0}", val1.GetType().ToString());
Console.WriteLine("The actual type of val2 is: {0}",
val2.GetType().ToString());
Console.WriteLine("The actual type of val3 is: {0}",
val3.GetType().ToString());
Console.WriteLine("The actual type of val4 is: {0}",
val4.GetType().ToString());
}
}

輸出:

C# 動態

上面的程式中,程式就是定義的類別。然後呼叫main方法。然後聲明實際類型未知的動態變數。然後使用GetType()方法取得前面使用的動態變數的實際類型。程式的輸出如上面的快照所示。

範例

以下是下面提到的範例:

範例#1

C# 程式示範如何使用可傳遞給方法的動態型別參數

代碼:

using System;
//a class called program is defined
class program
{
// a method called add is defined to which dynamic type variables are passed as parameters
public static void add(dynamic r1, dynamic r2)
{
Console.WriteLine(r1 + r2);
}
// Main method is called
static public void Main()
{
//add method is called to add whatever is passed as parameters to the method since the method accepts dynamic type variables
add("H", "I");
add("Welcome to", " dynamic type");
add(20, 20);
add(20.5, 1.5);
add(100, "fun");
}
}

輸出:

C# 動態

上面的程式中,程式就是定義的類別。然後定義一個名為 add 的方法,將動態類型變數作為實際類型未知的參數傳遞給該方法。然後呼叫main方法。然後呼叫 add 方法來新增作為參數傳遞給該方法的任何內容,因為該方法接受動態類型變數。程式的輸出如上面的快照所示。

範例#2

C# 程式示範如何使用可傳遞給方法的動態型別參數:

代碼:

using System;
//a namespace called example is defined
namespace example
{
//a class called program is defined
class Program
{
//main method is called
static void Main(string[] args)
{
//different types of values are passed as a parameter to GetDetails method
GetDet("Learning is fun and welcome to learning dynamic type in C#");
GetDet(false);
GetDet(100.22);
GetDet(20);
Console.ReadLine();
}
//a method called getdetails is defined to which dynamic type variable is passed as a parameter so it accepts any type of parameter
static void GetDet(dynamic r)
{
Console.WriteLine(r);
}
}
}

輸出:

C# 動態

在上面的程式中,定義了一個名為 example 的命名空間。那麼程式就是定義的類別。然後呼叫main方法。然後呼叫稍後定義的 GetDet 方法,將動態類型變數作為實際類型未知的參數傳遞給該方法。然後定義 GetDet 方法,將動態類型變數作為參數傳遞給該方法,以便它接受任何類型的參數。程式的輸出如上面的快照所示。

使用動態型別有幾個優點。他們是:

  • 透過在 C# 中使用動態類型,與其他動態語言的通訊變得更簡單。
  • 當我們不知道期望的物件類型時,可以在 C# 中簡化應用程式介面呼叫的回應。
  • 可以使用 C# 中的動態類型建立可在多種語言之間使用的程式庫。
  • 如果主要關心的不是速度,可以使用 C# 中的動態來制定通用解決方案。
  • 反射程式碼可以使用動態替換並變得更簡單。

結論

在本教程中,我們透過定義來了解C# 中動態類型的概念、C# 中動態類型的語法、透過程式設計範例及其輸出來了解C# 中動態類型的工作原理,以及在C# 中使用動態類型的優點。

以上是C# 動態的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn