Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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# 返回时的逻辑操作_C#_.net_Unity3d_Asp.net 3.5 - Fatal编程技术网

C# 返回时的逻辑操作

C# 返回时的逻辑操作,c#,.net,unity3d,asp.net-3.5,C#,.net,Unity3d,Asp.net 3.5,我正在尝试将我的ActionScript知识应用到C中,我一直在想是否有可能生成这种返回语句: return myObject ||= new Object(); 当然,我可以使用更长的版本,如: if (!myObject) myObject = new Object(); return myObject; 它工作得很好,但我只是希望能够混淆我的代码,并使其短一点 我想既然它都是ECMAScript,它应该可以工作,但它不能。有谁能指出,是否可以使用逻辑运算符来模拟if-else而不是通常

我正在尝试将我的ActionScript知识应用到C中,我一直在想是否有可能生成这种返回语句:

return myObject ||= new Object();
当然,我可以使用更长的版本,如:

if (!myObject)
myObject = new Object();
return myObject;
它工作得很好,但我只是希望能够混淆我的代码,并使其短一点

我想既然它都是ECMAScript,它应该可以工作,但它不能。有谁能指出,是否可以使用逻辑运算符来模拟if-else而不是通常的if-then-else语句


NET版本是3.5 Unity3d引擎

是的,C中有一个coalesce操作符几乎完全实现了这一点

 return myObject ?? new Object();
编辑:这不会更改变量myObject。如果你也想这么做,你可以简单地写

 return myObject = myObject ?? new Object();
因为C中的赋值也是返回已赋值值的表达式。

C中的等价物是

return myObject ?? new Object();

因此,似乎有些运营商略有不同。

如果你投了反对票,请解释原因,以便改进帖子。我看我的帖子没有什么问题。你的较长版本不起作用,因为在.NET中,对象不能隐式转换为bool,条件必须是booleans1在Unity3d中,它可以正常工作2在这种情况下,对象只是某个类的实例,不管你怎么想,我可以称之为T。通过混淆你的代码,你的意思是-让它更难理解吗?!永远不要把这当成你的目标。有一些特殊的工具可以模糊编译后的代码,使您能够保护您的智能属性,除了??运算符将编译为if-elsestatement@lisp我不是说每个人都应该使用它,我只是想知道我是否能做到。它可能有用@创意魔术你为什么要猜?你必须学习语言的语法。有时某些符号是有意义的,要么来自文化的异花授粉,要么来自通感。猜起来也很有趣。@lisp-在你用一种新语言编写一行代码之前,你真的学习了每一个运算符、关键字、角码等等吗?@lisp-嗯,我学习了+和-运算符。然后我学习了+=所以我猜有/应该有类似-=的东西,我希望类似的工作。然后我试了一下,发现我的期望是真的现在,OP了解到ActionScript中有类似于| |的东西,并猜测C中应该有类似的东西。他尝试了这个,并了解到| |在C中不起作用。也许他猜测并尝试了其他符号组合,但发现不起作用。他从来没有猜到过,但现在他知道了^_^承认这一点很愚蠢,但我实际上发现答案并不正确,因为你的建议不会修改myObject,它总是会创建一个新的对象实例,而AS3版本也会设置空对象值并返回它。不,在一个新操作符之后,总有一个类型,不是一个变量名。@Cheesebaron如果您在new之后输入了一个拼写错误,它应该是Object,请编辑您的答案;