为什么空赋值编译没有错误

本文关键字:有错误 编译 赋值 为什么 | 更新日期: 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();//

它的作用:

  1. 如果x不为空则返回x。
  2. 如果x为null,则分配x new ExpensiveObject()并返回分配值- x。

这是可以接受的,就像你可以使用:

a = b = c;

我很惊讶没有警告,虽然由于类型。ddlCountry。数据源和ddl国家。我认为DataTextField必须是相同的类型。

编译器在这个例子中忽略空白,因为它在语法上是无关紧要的。更具体地说,这是由预处理器完成的。

在c#中,像许多其他语言一样,语句用;字符分隔,而不是用换行字符分隔。这样写:

var someString =

"SomeValue";

非常好。

您的代码片段与

相同
ddlCountry.DataSource = "Country";
ddlCountry.DataTextField = "Country";