加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
134-动态绑定-动态表达式.cs 1.58 KB
一键复制 编辑 原始数据 按行查看 历史
using System;
using System.Collections.Generic;
//4.11.8 动态表达式
//域、属性、方法、事件、构造函数、索引器、运算符和转换都是可以实现动态调用的。
//不允许尝试获取返回类型为void的动态表达式的结果的操作,这与具有静态类型的表达式相似。两者的区别在于错误发生在运行时:
namespace _134_动态绑定_动态表达式
{
class Program
{
static void Main(string[] args)
{
dynamic list = new List<int>();
var result = list.Add(5); // 抛出RuntimeBinderException。
//包含动态操作数的表达式一般情况下本身就是动态的,因为缺少类型信息的结果是向下传递:
dynamic x = 2;
var y = x * 3; // y的静态类型是动态的
//这个规则有一些例外情况。首先,将一个动态表达式转换为静态类型会产生一个静态表达式:
/*
dynamic x = 2;
var y = (int)2; // y的静态类型是int
*/
//其次,构造函数调用总是产生静态的表达式,即使调用时使用的是动态参数。在这个例子中,x被设置为静态类型StringBuilder:
/*
dynamic capacity = 10;
var x = new System.Text.StringBuilder(capacity);
*/
//此外,在少数情况下,包含动态参数的表达式也是静态的,包括传递索引到数组和委托创建表达式。
}
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化