C# 如何设置委托的值';s参数用于后续调用而不每次提供它们?
在C#中,是否有一种方法可以创建一个具有值的委托,例如“MyDelegate(“Hello World”)”,该值可以存储在变量中,然后使用给定的值调用 例如:(我知道这不是委托的工作方式,它只是伪代码,以便更清楚地说明我在寻找什么) 我不知道这在代表中是否可行,或者我是否真的在寻找其他东西。您可以使用C# 如何设置委托的值';s参数用于后续调用而不每次提供它们?,c#,parameters,delegates,refactoring,method-call,C#,Parameters,Delegates,Refactoring,Method Call,在C#中,是否有一种方法可以创建一个具有值的委托,例如“MyDelegate(“Hello World”)”,该值可以存储在变量中,然后使用给定的值调用 例如:(我知道这不是委托的工作方式,它只是伪代码,以便更清楚地说明我在寻找什么) 我不知道这在代表中是否可行,或者我是否真的在寻找其他东西。您可以使用 您可以使用lambda捕获该值,但是您需要不同的委托类型,因为现在您将在不使用参数的情况下调用 只需使用各种操作和函数委托类型就容易多了 void WriteText(字符串文本) { 控制台写
您可以使用lambda捕获该值,但是您需要不同的委托类型,因为现在您将在不使用参数的情况下调用 只需使用各种
操作
和函数
委托类型就容易多了
void WriteText(字符串文本)
{
控制台写入线(文本);
}
Action newDelegate=()=>WriteText(“你好世界”)//存储字符串值
newDelegate()//使用我们之前给定的字符串值调用委托
//输出:“你好,世界”
Action originalDelegate=WriteText;//如果您已经有一名代表
Action newDelegate=()=>originalDelegate(“你好,世界”)//存储委托和字符串值
newDelegate()//使用我们之前给定的字符串值调用委托
//输出:“你好,世界”
您也可以查看int Action和Func,它们更易于使用。也许您应该详细解释一下您的用例。。。也许代表不是实现这一目标的正确方式。
delegate void MyDelegate(string text);
void WriteText(string text)
{
Console.WriteLine(text)
}
MyDelegate newDelegate = WriteText("Hello World") //Store the function and a string value
newDelegate.InvokeWithOwnValue() //Invoke the delegate with the string value that we've given it before
//Output: "Hello World"
Action newDelegate = () => WriteText("Hello World");
newDelegate();