我在这里开始了解变量时偶然发现了这一点:
http://msdn.microsoft.com/en-us/library/bb384061.aspx
但是,我不知道这是一个法律表达(它是).我以为你不能用a =(b = c)分配东西,因为(b = c)不会产生一个值来分配?
感谢您对此事的任何澄清.
Sea*_*n U 31
这是合法的.从=运算符C#参考页面:
赋值运算符(=)将其右侧操作数的值存储在由其左侧操作数表示的存储位置,属性或索引器中,并将该值作为结果返回.
(强调我的)
示例中的代码是设计的(并且毫无意义),但它可以在其他情况下用于以更简洁的方式执行有用的操作.例如:
BinaryTree tree;
TreeNode node;
if((node = tree.FindNodeForKey(10)) != null)
{
// do useful things with returned node
}
Run Code Online (Sandbox Code Playgroud)
Les*_*Les 14
MSDN的全部引用是:
使用var声明的变量不能在初始化表达式中使用.换句话说,这个表达式是合法的:int i =(i = 20); 但是这个表达式会产生一个编译时错误:var i =(i = 20);
关键是你不能在初始化表达式中使用var声明的变量.换句话说,如果使用var来声明i,则不能在=符号的另一侧使用i.
正如其他人所说,你实际上不会写这段代码.这是一个人为的例子.
我一直都在使用那种东西.
public class Parameters
{
public readonly bool ContainsSquareBrackets;
public Parameters(string paras)
{
if(ContainsSquareBrackets = paras.Contains(']') || paras.Contains('['))
{
// do something ...
}
}
}
Run Code Online (Sandbox Code Playgroud)