写this.propertyName和只写propertyName之间的区别



我看到了一个编写类并使用构造函数的例子,我想知道是否使用"this."有什么区别。

那么与

public class PagedCountryList
{
    public IEnumerable<Country> CountriesToDisplay { get; set; }
    public int Total { get; set; }
    public int PerPage { get; set; }
    public int PageNumber { get; set; }
    public PagedCountryList(IEnumerable<Country> countries, int totalResult, int elementsPerPage, int pageNumber)
    {
        this.CountriesToDisplay = countries;
        this.Total = totalResult;
        this.PerPage = elementsPerPage;
        this.PageNumber = pageNumber;
    }
}

这个:

public class PagedCountryList
{
    public IEnumerable<Country> CountriesToDisplay { get; set; }
    public int Total { get; set; }
    public int PerPage { get; set; }
    public int PageNumber { get; set; }
    public PagedCountryList(IEnumerable<Country> countries, int totalResult, int elementsPerPage, int pageNumber)
    {
        CountriesToDisplay = countries;
        Total = totalResult;
        PerPage = elementsPerPage;
        PageNumber = pageNumber;
    }
}

您的情况没有差异,但请考虑以下示例

public class PagedCountryList
{
    private IEnumerable<Country> countries { get; set; }
    public int totalResult { get; set; }
    public int elementsPerPage { get; set; }
    public int pageNumber { get; set; }
    public PagedCountryList(IEnumerable<Country> countries, int totalResult, int elementsPerPage, int pageNumber)
    {
       //you cant write something like this (because it is ambiguous)
       //countries = countries;
        this.countries = countries;
        this.totalResult = totalResult;
        this.elementsPerPage = elementsPerPage;
        this.pageNumber = pageNumber;
    }
}

实际上,您的情况没有什么不同。以下是MSDN 中描述的this的常见用法

  • 限定由相似名称隐藏的成员
  • 将对象作为参数传递给其他方法
  • 声明索引器

正如tom所建议的,在这种情况下"this"是多余的,但这并不意味着你不应该使用它。

您的成员"public int Total"可以使用"this"直接访问,也可以不使用。另一方面,如果你已经使用Total作为函数参数,你需要用"this"来区分它是否是函数参数的类成员

function SetTotal(int Total)
{
this.Total = Total;
}

在您的情况下,没有区别。这是指你自己。在某些情况下,在相同的范围内有"重复的命名变量",这是有用的。

相关内容

  • 没有找到相关文章

最新更新