我只是想知道如何将null颜色传递给方法.
下面是一个获取颜色参数的方法的示例:
protected void myMethod(Color color,other parameters...) {}
Run Code Online (Sandbox Code Playgroud)
现在我正在使用显示的条件.根据这种情况,我想改变颜色.
if(1) {myMethod(Color.Red,....)}
if(2) {myMethod(Color.Black,...)}
if(3) {myMethod(Color.Ignore,...)} //so here just ignore this color parameter and keep the original.
Run Code Online (Sandbox Code Playgroud)
我知道我可以做很多事情来克服这个问题,但正如我所说,我只是想知道是否有更好的传递忽略值的方法,所以它将使用元素的原始颜色.
Dav*_*son 10
关于什么:
protected void myMethod(Color? color,other parameters...) {}
Run Code Online (Sandbox Code Playgroud)
哪个颜色?可以为空,因此您可以传递null并检查方法中的值.如果color == null则保留原文?
如果你想使用默认值,那么创建一个不需要颜色的方法的重载并调用它(如果你不打算在方法中使用它而不是将null值传递给方法,最好不要提供参数):
protected void myMethod(other parameters...)
Run Code Online (Sandbox Code Playgroud)
另外我建议你把可选参数放到参数的末尾:
protected void myMethod(other parameters.., Color color)
Run Code Online (Sandbox Code Playgroud)
码:
switch(value)
{
case 1: myMethod(..., Color.Red); break;
case 2: myMethod(..., Color.Black); break;
case 3: myMethod(...); break;
}
Run Code Online (Sandbox Code Playgroud)
您甚至可以要求编译器为您制作"重载"(请参阅注释):
protected void myMethod(other parameters.., Color color = {DefaultColor})
Run Code Online (Sandbox Code Playgroud)
注意:我喜欢避免任何令人困惑的代码.比如打电话
DrawPoint(10, 20, null)
Run Code Online (Sandbox Code Playgroud)
看起来很混乱我.什么是null?如果没有人能够在方法中使用它,为什么你传递null?以下电话看起来更好
DrawPoint(10, 20)
Run Code Online (Sandbox Code Playgroud)
它不会使调用者与传递不会被使用的参数混乱.我不需要考虑是什么null意思.但即使在这种情况下,我们也知道一些其他开发人员仍然无法获得的信息 - 我们使用默认颜色绘制点,而方法并没有说明任何信息.所以,我会用另一种方法
DrawPointWithDefaultColor(10, 20)
Run Code Online (Sandbox Code Playgroud)
完全没有混淆.