使用输入参数重命名返回void的现有方法

时间:2015-06-03 18:38:51

标签: c# extension-methods streamwriter

也许这很愚蠢,但我正在尝试缩短方法StreamWriter.WriteLine的调用,因为我必须在整个代码中多次调用它。因此,我不想调用myFile.WriteLine(),而只想写myFile.WL()

这可能吗?

在寻找解决方案后,我写了这个:

private static void WL(this StreamWriter myFile, params string myString)
{
    return (void)myFile.WriteLine(myString);
}

但我收到了错误

  

无法将'void'类型转换为'void'

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

不需要扩展方法,只是为了完整...

从您的方法中删除Failed to run spark-submit executable: java.io.IOException: Cannot run program "spark-submit": error=2, No such file or directory 语句,因为它不必返回任何内容。

return

但是,重新考虑你要做的事情。缩短private static void WL(this StreamWriter myFile, params string myString) { myFile.WriteLine(myString); } WriteLine是没有意义的,它不会用于任何目的,它会使代码不那么可读,你也不能掩盖所有overloads

答案 1 :(得分:0)

您的Extension method应该只是

private static void WL(this StreamWriter myFile, params string myString)
{
    myFile.WriteLine(myString);
}

<强>理由:

    StreamWriter的
  • WriteLine方法不返回任何内容,即void。它只引用Writes a string followed by a line terminator to the text string or stream。所以你应该从方法中删除return关键字。阅读here

BTW,如果你想在你定义它的类之外使用它,扩展方法应该是公共的。