动态类型铸造参数在c#
答
它可以用来动态地选择基础上的param1
在运行时类型function(...)
过载,例如:
public static void Something(string x)
{
Console.WriteLine("Hello");
}
public static void Something(int x)
{
Console.WriteLine("Goodbye");
}
public static void Main()
{
object x = "A String";
// This will choose string overload of Something() and output "Hello"
Something((dynamic)x);
x = 13;
// This will choose int overload of Something() and output "Goodbye"
Something((dynamic)x);
}
因此,即使x
是object
一个参考,它会在运行时决定什么过载Something()
来电。请注意,如果没有适当的超载,将抛出异常:
// ...
x = 3.14;
// No overload of Something(double) exists, so this throws at runtime.
Something((dynamic)x);
我希望看到更多。一般来说,如果该函数需要一个动态变量,您可以*执行,但这不是必需的。 – scottm
@scottm:这就是我最初的想法,然后我记得你也可以在运行时使用它来选择正确的方法重载。 –
@JamesMichaelHare非常小的用例。这是我会谴责以前的开发者故意使用的一种东西。 – scottm