【发布时间】:2012-03-19 03:19:54
【问题描述】:
在 Xbox 上使用时,显然可选参数在 C# Xna 中不起作用,编译期间声明不支持。
我有这样的情况:
func(float? a = null, int? b = null)
使用大量默认为“未定义”值的这些可选参数,null。这种情况是必须的。
在上面的简化示例中,这可以展开,尽管这不是可选参数所允许的:
func()
func(float? a)
func(int? b)
func(float? a, int? b)
但是,对于大量参数,这是不切实际的。
参数定义的某些组合是不允许的,并且会导致通过函数的路径我抛出参数异常,其他会导致根据参数的值发生各种不同的事情。这类似于同名但不相同的函数之间的多态性。
我可以替代地,并且可能最实际地要求所有参数。
func(float? a, int? b)
然后这样调用:
func(null, 4)
第一个是未定义的。
有没有办法在 Xbox 上的 C# XNA 中启用可选参数,而不是使用上述任何一种?
【问题讨论】:
-
您是否考虑过传入一个类对象而不是 15 个可能需要也可能不需要的参数?似乎这样可以解决您的问题并为您提供最大的灵活性。
-
我必须构造类,然后可能在许多单独的代码行上定义它的一些参数,或者使用构造函数或其他本身具有可选参数的成员函数。这不是一个坏主意,对我来说不如可选参数好,但从没有必须保持不变的参数顺序的角度来看,与 func(null, 4) 解决方案相比非常好。
标签: c# parameters xna optional-parameters xbox