我遇到了有关Full Stack .Net Web开发的教程,到目前为止,我还从未见过将点运算符用于C#。有人可以解释为什么语句不以分号结尾,并且语句也属于特定对象吗?
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
namespace MyApi
{
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
}
答案 0 :(得分:5)
这只是一条单行代码,跨多行,并且是流利的方法链接的示例。
每个方法调用都会返回一个对象,然后可以取消引用该对象以执行另一个方法调用。
这是一个简单的示例,可让您了解其工作原理。请注意,每种方法如何返回Person
的当前实例,即this
。
class Person
{
public string Firstname { get; set; }
public string Surname { get; set; }
public DateTime DateOfBirth { get; set; }
public decimal HeightCm { get; set; }
public Person WithName(string firstname, string surname)
{
Firstname = firstname;
Surname = surname;
return this;
}
public Person BornOn(DateTime date)
{
DateOfBirth = date;
return this;
}
public Person WithHeight(decimal heightCm)
{
HeightCm = heightCm;
return this;
}
}
然后您可以执行以下操作:
var person = new Person().WithName("Doctor", "Jones").BornOn(new DateTime(1980, 1, 1)).WithHeight(175);
也可以表示为:
var person = new Person()
.WithName("Doctor", "Jones")
.BornOn(new DateTime(1980, 1, 1))
.WithHeight(175);
不必将其拆分为多行,但是可以是一种样式选择,也可以由您的编码标准决定。