我看到了一个编写类并使用构造函数的例子,我想知道是否使用"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;
}
在您的情况下,没有区别。这是指你自己。在某些情况下,在相同的范围内有"重复的命名变量",这是有用的。