可以在C#中的方法参数是动态的 [英] Can method parameters be dynamic in C#

查看:1049
本文介绍了可以在C#中的方法参数是动态的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在c#4.0中,是可能的动态方法参数,如下面的代码?

In c# 4.0, are dynamic method parameters possible, like in the following code?

public string MakeItQuack(dynamic duck)
{
  string quack = duck.Quack();
  return quack;
}



我有很多很酷的C#4.0动态关键字的例子,如上所述。这个问题当然是受到python的工作原理的启发。

I've many cool examples of the dynamic keyword in C# 4.0, but not like above. This question is of course inspired by how python works.

推荐答案

是的,你绝对可以这样做。为了静态重载解析的目的,它被视为一个对象参数(静态调用)。你在方法中做的是动态的。例如:

Yes, you can absolutely do that. For the purposes of static overload resolution, it's treated as an object parameter (and called statically). What you do within the method will then be dynamic. For example:

using System;

class Program
{
    static void Foo(dynamic duck)
    {
        duck.Quack(); // Called dynamically
    }

    static void Foo(Guid ignored)
    {
    }

    static void Main()
    {
        // Calls Foo(dynamic) statically
        Foo("hello");
    }
}

动态就像对象只有一个对象参数和只有一个动态参数的一个重载。

The "dynamic is like object" nature means you can't have one overload with just an object parameter and one with just a dynamic parameter.

这篇关于可以在C#中的方法参数是动态的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆