C# 动态

WBOY
发布: 2024-09-03 15:32:36
原创
733 人浏览过

为了避免在编译时进行检查,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中文网其他相关文章!

相关标签:
来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板