要するに。いいえ。
オプションのパラメーターは、コンパイル時定数または値型である必要があります。
MSDNの名前付きおよびオプションの引数(C#プログラミングガイド)から:
各オプションのパラメーターには、その定義の一部としてデフォルト値があります。そのパラメーターに引数が送信されない場合は、デフォルト値が使用されます。デフォルト値は、次のタイプの式のいずれかである必要があります。
- 定数式;
- フォームの式
new ValType()
。ここで、ValType
は列挙型や構造体などの値型です。
- の形式の式。
default(ValType)
ここValType
で、は値型です。
あなたが達成したいと思われることは、オーバーロードすることによって達成することができます:
public string Download()
{
return Download(Encoding.UTF8);
}
public string Download(Encoding contentEncoding)
{
defaultEncoding = contentEncoding ?? Encoding.UTF8;
// codes...
}
デフォルト値はオプションのパラメーターを使用して呼び出し元にハードコードされるため、これはオプションのパラメーターとはまったく同じではないことに注意してください(これが、オプションのパラメーターに対する制限が存在する理由です)。