我在看一本书
article
在这里解释一下。
我们有一个类,其中一个方法具有以下签名。
// v1
public static void Redirect(string url, string protocol = "http");
参数、必需的字符串url和可选的字符串协议。
HttpHelpers.Redirect("https://haacked.com/");
HttpHelpers.Redirect(url: "https://haacked.com/");
HttpHelpers.Redirect("https://haacked.com/", "https");
HttpHelpers.Redirect("https://haacked.com/", protocol: "https");
HttpHelpers.Redirect(url: "https://haacked.com/", protocol: https");
HttpHelpers.Redirect(protocol: "https", url: https://haacked.com/");
请注意,无论参数是否可选,您都可以选择
是否按名称引用参数。在最后一种情况下,请注意
参数的指定顺序不对。在本例中,使用命名
参数是必需的。
下一个版本
减少API的重载数量。然而,依靠
可选参数确实有其特殊之处,您需要在
假设我们已经准备好制作第二版了
HttpHelpers库,我们向现有的
方法。
// v2
public static void Redirect(string url, string protocol = "http", bool permanent = false);
当我们尝试执行客户机而不重新编译
客户端应用程序?
我们得到以下异常消息。
Unhandled Exception: System.MissingMethodException: Method not found: 'Void HttpLib.HttpHelpers.Redirect(System.String,
System.String)'....
我不明白为什么这个更改会破坏部署而不是重新编译的更改。
在更改了包含可选参数的方法签名之后,它应该仍然可以工作吗?即使我们不重新编译客户端应用程序,因为这是一个可选参数。