首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么赋值语句返回值?

为什么赋值语句返回值?
EN

Stack Overflow用户
提问于 2010-09-28 03:36:58
回答 10查看 28K关注 0票数 131

这是允许的:

代码语言:javascript
复制
int a, b, c;
a = b = c = 16;

string s = null;
while ((s = "Hello") != null) ;

据我所知,赋值s = ”Hello”;应该只会将“Hello”赋值给s,但该操作不应该返回任何值。如果这是真的,那么((s = "Hello") != null)将产生一个错误,因为null将被比作nothing。

允许赋值语句返回值的原因是什么?

EN

回答 10

Stack Overflow用户

发布于 2010-09-28 03:40:12

你还没有提供答案吗?它正是为了支持你所提到的那些类型的结构。

使用赋值操作符的此属性的常见情况是从文件中读取行...

代码语言:javascript
复制
string line;
while ((line = streamReader.ReadLine()) != null)
    // ...
票数 45
EN

Stack Overflow用户

发布于 2010-09-30 14:01:17

我最喜欢的赋值表达式是用于延迟初始化的属性。

代码语言:javascript
复制
private string _name;
public string Name
{
    get { return _name ?? (_name = ExpensiveNameGeneratorMethod()); }
}
票数 38
EN

Stack Overflow用户

发布于 2010-09-28 03:40:10

首先,它允许你链接你的赋值,如你的例子所示:

代码语言:javascript
复制
a = b = c = 16;

另一方面,它允许您在单个表达式中分配和检查结果:

代码语言:javascript
复制
while ((s = foo.getSomeString()) != null) { /* ... */ }

这两个都可能是可疑的原因,但肯定有人喜欢这些构造。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3807192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档