找回密码
 FreeOZ用户注册
查看: 2184|回复: 5
打印 上一主题 下一主题

[求职信息] C#笔试问题

[复制链接]
跳转到指定楼层
1#
发表于 9-12-2009 08:58:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

x
请说明如下代码中的this的意义。

public static class StreamReaderExtensions
{
    public static IEnumerable<string> Lines(this StreamReader reader)
    {
        if (reader== null)
            throw new ArgumentNullException("reader");
        reader.BaseStream.Seek(0, SeekOrigin.Begin);
        string line;
        while ((line = reader.ReadLine()) != null)
            yield return line;
    }
}

把我难住了。

那位大虾讲讲啊?说实话,这个好像讲yield return的迭代的,以前基本没用过这个,嘿嘿。不知道代码里的"this"是啥意思。

形参里面为啥多一个this呢?

这个静态类的静态方法好像之需要申明 StreamReader 就可以使用了,为什么不StreamReaderExtensions.Lines(sr)来调用呢?

发现自己用了很多年c#,已经跟不上了,因为我的知识好像还停留在c# 1.0时代。

多谢!
回复

使用道具 举报

2#
发表于 9-12-2009 09:12:31 | 只看该作者
这是对 StreamReader 的扩展方法,也就是说为 StreamReader 这个类扩展一个 Lines 方法。这是 .net 3.0 的新特性。
参见
http://msdn.microsoft.com/en-us/library/bb383977.aspx

[ 本帖最后由 workinvm 于 9-12-2009 10:15 编辑 ]

评分

参与人数 1威望 +20 收起 理由
xyouc + 20 谢谢分享!

查看全部评分

回复

使用道具 举报

3#
 楼主| 发表于 9-12-2009 09:20:06 | 只看该作者
看来是时间研究一下c# 3.0的新特性了。
回复

使用道具 举报

4#
发表于 9-12-2009 09:27:48 | 只看该作者
C# 2.0 比 C#1.1 多了很多东西,C#3.0 又比 C#2.0多了很多 ,C#3.5 又多了很多,现在已经 C#4.0了,学习速度赶不上框架升级速度。
回复

使用道具 举报

5#
发表于 9-12-2009 10:06:14 | 只看该作者
这个this 是对StreamReader 的扩展,也就是说在这个程序中,所有StreamReader 类都将拥有Lines这个方法。
好像是3.0才出来的新特性

评分

参与人数 1威望 +10 收起 理由
xyouc + 10 谢谢分享!

查看全部评分

回复

使用道具 举报

6#
发表于 9-12-2009 12:19:33 | 只看该作者
this 就是StreamReader。用到Visitor pattern。

评分

参与人数 1威望 +10 收起 理由
xyouc + 10 谢谢分享!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+10, 3-8-2026 13:14 , Processed in 0.014868 second(s), 24 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表