【问题标题】:What does "this"-keyword do in this foreach-loop?“this”-keyword 在这个 foreach 循环中做了什么?
【发布时间】:2014-12-20 00:03:42
【问题描述】:

在这段代码中,“this”的作用和指向究竟是什么? 没有关键字“this”是否可以编写foreach-loop?

public class Member : IUser {

    public string Username { get; set; }
    public string Firstname { get; set; }
    public string Lastname { get; set; }
}


public class MemberList : List<Member> {
    public MemberList StartsWith(string str) {
        var result = new MemberList();
        foreach (var m in **this**) {

            if (m.Username.StartsWith(str)) {
                result.Add(m);
            }
        }
        return result;
    }
}

感谢您的帮助。

【问题讨论】:

  • 之所以有效,是因为 MemberList ("this") 继承自 List。查看here 了解更多详细信息/示例。另请参阅GetEnumerator

标签: c# pointers foreach this


【解决方案1】:

它将调用当前类的GetEnumerator 方法。由于您的类继承自 List&lt;Member&gt;,因此它将使用该列表的枚举器进行 foreach 循环。

this 关键字引用类的当前实例,当您有需要引用自身的方法时很有用。

您可以在this (C# Reference) page 上阅读有关this 的更多信息

【讨论】:

  • 谢谢,那么是否可以在不使用 this 关键字的情况下编写 foreach 循环?
  • 您可以自己调用GetEnumerator(),但根据您所展示的内容,整个班级都是可疑的。
猜你喜欢
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
  • 1970-01-01
  • 2020-02-28
  • 1970-01-01
相关资源
最近更新 更多