C#中的起始点表示法是什么?

时间:2019-01-03 14:21:26

标签: c#

我遇到了有关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();
        }
    }
}

1 个答案:

答案 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);

不必将其拆分为多行,但是可以是一种样式选择,也可以由您的编码标准决定。