[英]c# how to assign Console.WriteLine to variable
我想缩短输入 Console.WriteLine 并将其分配给 var 例如: var write = Console.WriteLine(); 并像 write("My name is..") 一样执行它; >>>输出>> 我的名字是...
将方法分配给变量是通过使用委托完成的:
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 之前准备就绪,并且是一个名为“Static Using Statmenets”的功能,您可以在此处阅读更多相关信息: http : //msdn.microsoft.com/en-us /杂志/dn683793.aspx
void write(string message)
{
Console.WriteLine(message);
}
用法:
write("log this");
注意:我会重新考虑您的方法的大小写和命名约定。 它真的应该是Write
。
你正在寻找的是一个动作。 像这样使用它:
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
这是完全无用的,但如果你无论如何都想这样做,你可以像这样定义一个委托:
delegate void ProcessString(string input);
.
现在,创建一个ProcessString
变量并将其传递给Console.WriteLine
可调用:
ProcessString write = new ProcessString(Console.WriteLine);
.
然后你可以调用write
,它的行为完全像Console.WriteLine
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.