为什么空赋值编译没有错误
本文关键字:有错误 编译 赋值 为什么 | 更新日期: 2023-09-27 17:50:18
我的代码片段:
var country = BLLocations.Instance.GetCountries();
ddlCountry.DataSource =
ddlCountry.DataTextField = "Country";
ddlCountry.DataValueField = "CountryCode";
ddlCountry.DataBind();
见第二行:
ddlCountry.DataSource =
编译成功,并发布到云也。奇怪!
就是这样:
ddlCountry.DataSource = ddlCountry.DataTextField = "Country";
换行不起作用,这是一个有效的代码。
就像:
var x = 2;
var y = 3;
x = y = 1000;
(注意,这真的不是一个好的实践!这让人困惑,很难让人厌恶)
c#中的每段代码都返回一个值(尽管该值可以是void),它允许您执行延迟加载:
return x ?? x = new ExpensiveObject();//
它的作用:
- 如果x不为空则返回x。
- 如果x为null,则分配x
new ExpensiveObject()
并返回分配值- x。
这是可以接受的,就像你可以使用:
a = b = c;
我很惊讶没有警告,虽然由于类型。ddlCountry。数据源和ddl国家。我认为DataTextField必须是相同的类型。
编译器在这个例子中忽略空白,因为它在语法上是无关紧要的。更具体地说,这是由预处理器完成的。
在c#中,像许多其他语言一样,语句用;
字符分隔,而不是用换行字符分隔。这样写:
var someString =
"SomeValue";
非常好。
您的代码片段与
相同ddlCountry.DataSource = "Country";
ddlCountry.DataTextField = "Country";