Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#中lua`局部变量=var1或var2`的类似物是什么?_C#_Coronasdk - Fatal编程技术网

C#中lua`局部变量=var1或var2`的类似物是什么?

C#中lua`局部变量=var1或var2`的类似物是什么?,c#,coronasdk,C#,Coronasdk,我非常熟悉lua,我想执行w简单变量集值 在卢阿: local variable = var1 or var 2 这意味着如果存在var1,则将variable的值设置为var1,否则将其设置为var2。 如何在C#中实现这样的方程?我只是想知道怎么做这样的事 编辑 因此,在我的特殊情况下: public GameObject to (GameObject localTarget, string[][] transitionParams) { int delay = transitio

我非常熟悉lua,我想执行w简单变量集值

在卢阿:

local variable = var1 or var 2
这意味着如果存在
var1
,则将
variable
的值设置为
var1
,否则将其设置为
var2
。 如何在C#中实现这样的方程?我只是想知道怎么做这样的事

编辑

因此,在我的特殊情况下:

public GameObject to (GameObject localTarget, string[][] transitionParams)
{
    int delay = transitionParams.delay;
    int timer = transitionParams.timer;

    int x = transitionParams.x;
    int y = transitionParams.y;
}
如何检查这些参数是否已设置?
transitionParams
中的每一个都可以是
nil
。它们都是可选的。

与Lua不同,C#不允许引用不存在的变量。但是,它允许您引用设置为
null
的变量,并跳过
null
值,如下所示:

var variable = var1 ?? var2;
public GameObject(
    string name
,   int? x = null
,   int? y = null
,   int? delay = null
,   int? timer = null
);
如果
variable
的值不是
null
,则将其设置为
var1
的值;否则,它会将其设置为
var2
的值

为了使其工作,
var1
必须是可空的,即它应该是
class
类型的变量,或者是
struct
类型的
System.nullable


我只想在单个数组中传递
x
y
name
delay
timer
name
将是一个
string
,其余的
int
<代码>名称是唯一需要的值

C#提供了一种传递命名参数的机制。如果将其与设置默认值的功能结合起来,则可以构建如下所示的API:

var variable = var1 ?? var2;
public GameObject(
    string name
,   int? x = null
,   int? y = null
,   int? delay = null
,   int? timer = null
);
通过提供参数名称,您可以使用16种可选项的任意组合来调用它:

var unicorn = new GameObject("unicorn", x:12, delay:24);
var bunny = new GameObject("bunny", x:40, y:30, timer:0);

在C#中,局部变量是在编译时定义的,这真的没有意义。如果变量“不存在”,代码将无法编译。C#不允许按您所示的方式从整个数组中分割单个字段,否则,就像dasblinkenlight在回答中所说的那样,只需检查
null
。好吧,如果我的函数可能接收到4个变量,那么其中3个是可选的吗?那么我能不能通过考试?如何将它们分配给函数中的局部变量?@Lukis您可以通过为变量提供默认值使其成为可选变量,例如
void foo(int a,int?b=null,int?c=null,int?d=null)
至少接受一个参数,最多接受四个参数。如果调用方不提供参数,则方法会将其值视为
null
。一旦参数被传递到函数中,它的行为就像局部变量一样,即调用者看不到对它的更改。唯一的例外是
ref
out
参数。听起来不错。但是如何用可选值传递数组呢?我最近将示例代码添加到question@Lukis您添加的代码没有多大意义,因为您正在传递字符串数组,然后尝试访问其上的
delay
timer
x
y
属性。字符串数组的数组没有此类属性。与其猜测方法的签名,不如展示一下您希望如何调用方法,以及希望它接收的所有可能的参数组合。我只想在单个数组中传递
x
y
name
delay
timer
值。名称将是一个
字符串
,其余的
int
。Name是唯一需要的值。