多播委托不明确
Multicast Delegate Ambigous
我有以下代码
StringOperations sumString, reverseString, lowerString, upperString, multicastString;
sumString = new StringOperations(sum);
reverseString = new StringOperations(reverse);
lowerString = new StringOperations(lower);
upperString = new StringOperations(upper);
multicastString = upperString + lowerString + reverseString + sumString;
int count = 4;
if (!checkBox1.Checked)
{
multicastString -= upperString;
count--;
}
if (!checkBox2.Checked)
{
multicastString -= reverseString;
count--;
}
if (!checkBox3.Checked)
{
multicastString -= lowerString;
count--;
}
if (!checkBox4.Checked)
{
multicastString -= sumString;
count--;
}
if (count > 0)
{
string test = multicastString(textBox1.Text);
}
当大写和小写复选框被 selected 时,它只显示小写函数的结果。
如果我 select 大写、小写和反向复选框,那么它只显示反向功能的结果。
我的delegate
低于
delegate string StringOperations(string str);
我正在使用多播委托并返回 string
,如上面的代码所示。请让我知道我做错了什么?
当您有一个附加了多个处理程序的委托时,您仍然只会获得一个 return 值。没有直接的方法来获取其他值,自然您不能以将一个的 return 值发送到另一个的方式链接处理函数。您唯一会得到的是最后一个附加处理程序的 return 值是 returned.
这里真的没有模棱两可的行为,这就是它的工作方式。如果你想链接函数,你必须使用不同的方法然后是委托。在此示例中,您只需调用函数即可。
在多播委托中,方法应具有 void
作为 return 类型,因为它不会混合值。所以方法签名会改变
来自
delegate string StringOperations(string str);
到
delegate void StringOperations(string str);
PS: 也将其他委托方法的return类型改为void
.
我有以下代码
StringOperations sumString, reverseString, lowerString, upperString, multicastString;
sumString = new StringOperations(sum);
reverseString = new StringOperations(reverse);
lowerString = new StringOperations(lower);
upperString = new StringOperations(upper);
multicastString = upperString + lowerString + reverseString + sumString;
int count = 4;
if (!checkBox1.Checked)
{
multicastString -= upperString;
count--;
}
if (!checkBox2.Checked)
{
multicastString -= reverseString;
count--;
}
if (!checkBox3.Checked)
{
multicastString -= lowerString;
count--;
}
if (!checkBox4.Checked)
{
multicastString -= sumString;
count--;
}
if (count > 0)
{
string test = multicastString(textBox1.Text);
}
当大写和小写复选框被 selected 时,它只显示小写函数的结果。
如果我 select 大写、小写和反向复选框,那么它只显示反向功能的结果。
我的delegate
低于
delegate string StringOperations(string str);
我正在使用多播委托并返回 string
,如上面的代码所示。请让我知道我做错了什么?
当您有一个附加了多个处理程序的委托时,您仍然只会获得一个 return 值。没有直接的方法来获取其他值,自然您不能以将一个的 return 值发送到另一个的方式链接处理函数。您唯一会得到的是最后一个附加处理程序的 return 值是 returned.
这里真的没有模棱两可的行为,这就是它的工作方式。如果你想链接函数,你必须使用不同的方法然后是委托。在此示例中,您只需调用函数即可。
在多播委托中,方法应具有 void
作为 return 类型,因为它不会混合值。所以方法签名会改变
来自
delegate string StringOperations(string str);
到
delegate void StringOperations(string str);
PS: 也将其他委托方法的return类型改为void
.