【发布时间】:2016-09-19 22:15:23
【问题描述】:
假设我有一个类型可以在运行时假定各种类型的对象。我刚刚将一些较旧的 .Net 3.5 代码迁移到 4.5,并且多次出现这样的情况:
private void DoStuffCast(object obj)
{
if (obj is Button)
{
((Button) obj).Content = "Foo";
Console.WriteLine("Button!");
}
if (obj is TextBox)
{
((TextBox)obj).Text = "Bar";
Console.WriteLine("Textbox!");
}
}
将这种方法转换为使用动态类型,除了缺少语法补全之外,还有什么缺点吗?
private void DoStuffDynamic(dynamic obj)
{
if (obj is Button)
{
obj.Content = "Foo";
Console.WriteLine("Button!");
}
if (obj is TextBox)
{
obj.Text = "Bar";
Console.WriteLine("Textbox!");
}
}
【问题讨论】: