c#如何将Console.WriteLine分配给变量
本文关键字:分配 变量 WriteLine Console | 更新日期: 2023-09-27 18:29:20
我想缩短键入Console.WriteLine的时间,并将其分配给var,例如:var write=Console.WriteLine();并像执行write("我的名字是..");>>output>>我的名字是…
将方法分配给变量是通过使用委托完成的:
Action<string> write = Console.WriteLine;
write("Hello World!");
当然,委托不能表示Console.WriteLine
的每一个过载(它有18个过载)。它只能表示其中一个重载(但它可以表示这18个重载中的任何一个)。
尽管这样做只是为了缩短代码是一个有问题的想法,但您可以这样做:为Write
方法定义一个委托,比如这个
delegate void WriteDelegate(string msg, params object[] args);
定义一个类型为WriteDelegate
的变量,并将Console.Write
分配给它:
private static readonly WriteDelegate w = Console.Write;
现在,您可以使用w
调用Console.Write
,无论是否使用参数:
w("Hello");
w(", {0}", "world!");
演示。
您可以有一个静态方法Write
,如:
public static void Write(string value)
{
Console.WriteLine("My name is.." + value);
}
然后你可以这样称呼它:
Write("SomeName");
使用C#6.0您可以选择使用静态导入:您可以执行:
using static System.Console;
然后在你的方法中你可以做:
WriteLine("My name is...");
编辑:自2015年1月Visual Studio 2015 CTP发布以来,静态导入功能需要明确提及静态关键字,如:
using static System.Console;
一个更灵活的选项是使用delegate
。它允许您编写简单字符串或格式化字符串。
class Program
{
delegate void writeDelegate(string format, params object[] arg);
static void Main(string[] args)
{
writeDelegate write = Console.WriteLine;
write("Simple text.");
write("Formatted {0}: {1}", "text", 10);
Console.ReadKey();
}
}
无论如何,正如其他人指出的那样,这有点尴尬;我不会这么做的。你增加了混淆阅读你代码的开发人员的风险,他们可能最终成为你未来的自己。
您可以始终定义自己的方法并服从Console静态实例。然而,我认为你真正想要的东西要到c#6.0才能准备好,它是一个名为"静态使用Statmenets"的功能,你可以在这里阅读更多关于它的信息:http://msdn.microsoft.com/en-us/magazine/dn683793.aspx
void write(string message)
{
Console.WriteLine(message);
}
用法:
write("log this");
注意:我会重新考虑您的方法的大小写和命名约定。它真的应该是Write
。
您想要的是一个Action。这样使用:
Action<string> write = Console.WriteLine;
write("Your message here");
这将满足您的需要。
添加到上面的@dasblinkenlight答案。将代表签名修改为
delegate void WriteDelegate(string msg = "", params object[] args);
现在将允许您使用0参数进行调用。
private static readonly WriteDelegate w = Console.Write;
w("Hello");
w(", {0}", "world!");
w(); // Calling with no parameter
这是完全无用的,但如果你无论如何都想这样做,你可以定义一个委托,如下所示:
CCD_ 10。
现在,创建一个ProcessString
变量,并将可调用的Console.WriteLine
传递给它:
ProcessString write = new ProcessString(Console.WriteLine);
。
然后您可以直接调用write
,它的行为将完全类似于Console.WriteLine
。