首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要澄清有关Action<T>的内容

需要澄清有关Action<T>的内容
EN

Stack Overflow用户
提问于 2011-04-10 01:58:58
回答 1查看 214关注 0票数 1

以下是一种用于将数据保存到文件中的方法,这让我感到困惑:

代码语言:javascript
复制
public void SaveData(string filename, Action<StreamWriter> saveAction)

该库的文档将第二个参数描述为“处理实际写入数据的委托操作”。但是,我对如何实际为StreamWriter创建操作感到迷惑。我做了一些研究,发现有很多类似的东西被用作Action<T>的示例

代码语言:javascript
复制
Action<string> s = Console.WriteLine;

由此,我推断<T>是传递的参数类型,Action是接受此参数的方法。我意识到这可能是非常错误的。

基本上我想做的就是使用StreamWriter.WriteLine(string line)。但是,我不能使用

代码语言:javascript
复制
Action<StreamWriter> s = StreamWriter.WriteLine;

因为这没有任何意义,而且我也不可能引用StreamWriter.WriteLine。现在我在想,一定有一种方法可以从我不知道的类中获取StreamWriter。如果有人愿意为我指明正确的方向,我将不胜感激。

你可能会问,为什么我不能创建自己的StreamWriter,并按照我一直以来的方式来做呢?嗯,我在Zune上使用XNA,所以在所有级别的保护(所有的应用程序都是沙箱保护)的情况下,写入文本文件实际上是相当困难的,而我现在正在使用的库承诺,如果我能弄清楚如何有效地使用Action<T>,它将会变得更加流线型。此外,我想学习并更好地准备在未来使用代表。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-10 02:02:11

可能API的用法如下:

代码语言:javascript
复制
SaveData(filename, writer => writer.WriteLine(saveData));

=>符号简洁地声明了一个匿名函数。你可以用更长的方式来写它,就像这样:

代码语言:javascript
复制
private static void SaveToWriter(StreamWriter writer)
{
    // get saveData somehow
    writer.WriteLine(saveData);
}

// ...

SaveData(filename, SaveToWriter);

这可能有助于解释所涉及的类型签名。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5606801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档