这是允许的:
int a, b, c;
a = b = c = 16;
string s = null;
while ((s = "Hello") != null) ;
据我所知,赋值s = ”Hello”;
应该只会将“Hello”
赋值给s
,但该操作不应该返回任何值。如果这是真的,那么((s = "Hello") != null)
将产生一个错误,因为null
将被比作nothing。
允许赋值语句返回值的原因是什么?
发布于 2010-09-28 03:40:12
你还没有提供答案吗?它正是为了支持你所提到的那些类型的结构。
使用赋值操作符的此属性的常见情况是从文件中读取行...
string line;
while ((line = streamReader.ReadLine()) != null)
// ...
发布于 2010-09-30 14:01:17
我最喜欢的赋值表达式是用于延迟初始化的属性。
private string _name;
public string Name
{
get { return _name ?? (_name = ExpensiveNameGeneratorMethod()); }
}
发布于 2010-09-28 03:40:10
首先,它允许你链接你的赋值,如你的例子所示:
a = b = c = 16;
另一方面,它允许您在单个表达式中分配和检查结果:
while ((s = foo.getSomeString()) != null) { /* ... */ }
这两个都可能是可疑的原因,但肯定有人喜欢这些构造。
https://stackoverflow.com/questions/3807192
复制相似问题