私は、RGBAバイトを渡して、コンストラクタのクラスにカスタムカラーを指定させたいと思っています。カスタムカラーが指定されていない場合は、アプリケーション設定のデフォルトカラーが使用されます。ただし、アルファが省略されている場合は、完全に不透明であると仮定します。オプションのバイト引数が渡されたかどうか確認してください
私は希望の何か:
public MyClass(byte r_col = -1, byte g_col = -1, byte b_col = -1, byte a_col = 255)
{
if (r_col == -1 | g_col == -1 | b_col == -1)
{
// use default color
}
else
{
this.color = System.Windows.Media.Color.FromArgb(a_col, r_col, g_col, b_col);
}
}
しかし、「間違っている」値はバイトのためにありません(-1無効である)ので、バイトが実際に関数に渡された場合、私は検出することができません。どのようなオプションがありますか?私は可能な場合、関数のオーバーロードを避けたいと思います。
実際には、呼び出し元が無視されるいくつかの値を渡すことを許可するので、これは悪いAPIデザインです。例えば。呼び出し元がRとGだけを渡すとどうなりますか? RGBやRGBAは何も渡さないようにしてください。オーバーロードが必要です。 –
良い点 - これはデフォルトの色を使用しています(エラーはありません)。ここでは、オーバーロードが最も完全な方法だと思います。 – Michael