1.C#中的delegate是什么,有什么用?
delegate是委托,类似于在C语言中的函数指针,类A的方法m给类B使用,在类B中可以调用方法m.这里委托是吧方法作为参数传递。
1.1delegate和函数指针的区别?
函数指针只能指向静态的函数,但是delegate修饰的函数既可以引用静态函数,有可以引用非静态函数。
例子一:
public class DelegateTest
{
// 声明delegate对象
public delegate void CompareDelegate(int a,int b);
// 欲传递的方法,它与CompareDelegate具有相同的参数和返回值类型
public static void Compare(int a,int b)
{
Console.WriteLine((a>b).ToString());
}
public static void Main()
{
// 创建delegate对象
CompareDelegate cd = new CompareDelegate(DelegateTest.Compare);
// 调用delegate
cd(1,2);
}
{
// 声明delegate对象
public delegate void CompareDelegate(int a,int b);
// 欲传递的方法,它与CompareDelegate具有相同的参数和返回值类型
public static void Compare(int a,int b)
{
Console.WriteLine((a>b).ToString());
}
public static void Main()
{
// 创建delegate对象
CompareDelegate cd = new CompareDelegate(DelegateTest.Compare);
// 调用delegate
cd(1,2);
}
delegate void UpdateLabel(bool bstus);
private void UpdateLabelColor(bool bstus){
if (this.InvokeRequired)
{
this.Invoke(new UpdateLabel(UpdateLabelColor), new object[] { bstus });
}
else
{
label.BackColor = (bool)bstus ? Color.Green : Color.Red;
}
}
//调用
int main()
{
bool bValue;
UpdateLabelColor(bValue);
return 0;
}