Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何设置委托的值';s参数用于后续调用而不每次提供它们?_C#_Parameters_Delegates_Refactoring_Method Call - Fatal编程技术网

C# 如何设置委托的值';s参数用于后续调用而不每次提供它们?

C# 如何设置委托的值';s参数用于后续调用而不每次提供它们?,c#,parameters,delegates,refactoring,method-call,C#,Parameters,Delegates,Refactoring,Method Call,在C#中,是否有一种方法可以创建一个具有值的委托,例如“MyDelegate(“Hello World”)”,该值可以存储在变量中,然后使用给定的值调用 例如:(我知道这不是委托的工作方式,它只是伪代码,以便更清楚地说明我在寻找什么) 我不知道这在代表中是否可行,或者我是否真的在寻找其他东西。您可以使用 您可以使用lambda捕获该值,但是您需要不同的委托类型,因为现在您将在不使用参数的情况下调用 只需使用各种操作和函数委托类型就容易多了 void WriteText(字符串文本) { 控制台写

在C#中,是否有一种方法可以创建一个具有值的委托,例如“MyDelegate(“Hello World”)”,该值可以存储在变量中,然后使用给定的值调用

例如:(我知道这不是委托的工作方式,它只是伪代码,以便更清楚地说明我在寻找什么)

我不知道这在代表中是否可行,或者我是否真的在寻找其他东西。

您可以使用


您可以使用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();