在我看来,代表似乎是要学习的具有挑战性的概念之一。
根据我的理解,delegate是一个方法指针,指向运行时的特定方法。
我代表的一个例子是在文件处理期间,在调用方法之前可以执行某些文件操作,并在方法调用之后释放文件资源。在这里使用委托可以提高可重用性。
我的问题是,你能否告诉我代表们在日常节目中的其他实际用途?
感谢提前!
答案 0 :(得分:3)
嗯,总的来说,代表最主要的用途是通过事件及其处理程序。我不知道你是否已经意识到这一点,因为你提出了问题的方式,但每次写作都是
someObj.SomeEvent += SomeMethod;
您正在使用委托,具体而言,SomeMethod
正由委托实例包装。
答案 1 :(得分:0)
答案 2 :(得分:0)
您还将使用带有线程的委托:
//Anynymous delegate
new Thread(delegate()
{
Console.WriteLine("Hello world form Thread");
});
//Lambda expression
new Thread(() =>
{
Console.WriteLine("Hello world form Thread");
});
看一下lambda表达式,它功能强大:Lambda expression
答案 3 :(得分:0)
与自定义事件处理程序一起使用时,委托很有用。
代表是您可以为您的调用方法定义的规则 运行时间。
E.g public delegate void NameIndicator(string name);
您可以将方法绑定到委托并将其注册到事件。
请参阅下面的示例。
public delegate void NameIndicator( string name );
class Program
{
static void Main( string[] args )
{
//Create the instance of the class
Car car = new Car( "Audi" );
//Register the event with the corresponding method using the delegate
car.Name += new NameIndicator( Name );
//Call the start to invoke the Name method below at runtime.
car.Start();
Console.Read();
}
/// <summary>
/// The method that can subscribe the event of the defined class.
/// </summary>
/// <param name="name">Name assigned from the caller.</param>
private static void Name( string name )
{
Console.WriteLine( name );
}
}
public class Car
{
//Event for the car class.
public event NameIndicator Name;
string name;
public Car( string nameParam )
{
name = nameParam;
}
//Invoke the event when the start method is called.
public virtual void Start()
{
Name( name );
}
}