我支持一些具有可選參數和接口的代碼。可選參數和接口 - 意外結果
作爲簡化實例:我在實現類2中的界面中的默認值,並且1。
public interface IOptionalInterface
{
int Get(int x = 2);
}
public class ClassX : IOptionalInterface
{
public int Get(int x = 1)
{
return x;
}
}
此代碼按照我的預期通過。但是,當我將類作爲接口傳回並稍後調用它時,我從接口獲取可選參數;然後,這讓我感到驚訝。
private IOptionalInterface Build()
{
return new ClassX();
}
public void Expect1()
{
var y = Build();
Assert.AreEqual(y.Get(), 1); // fails, it returns 2.
}
我錯過了哪些主要設計考慮因素使得這種優惠?
有一個乾淨的方式,以確保實現類到達設定的默認值?
Eric Lippert在他的博客中對此進行了處理:http://blogs.msdn.com/b/ericlippert/archive/2011/05/09/optional-argument-corner-cases-part-one-as.aspx –
這是預期的行爲。 –
http://blogs.msdn.com/b/ericlippert/archive/2011/05/09/optional-argument-corner-cases-part-one.aspx – SLaks