昨天写代码时犯的一个错误

      原因是对我C#中delegate理解不够透彻,虽然清楚地知道delegate是对c/c++中函数指针的封装,但在实际使用时却不知道忘哪儿去了。类A中的一个delegate,它"指"向(在构造函数中赋值)A中一个field:c(类B)的一个成员函数,而后对field c进行了更新,此时调用A的delegate发现c的成员变量全为空,与更新后的c的内容不符。写代码时我本希望这个delegate一直指向A中c这个域的某个函数,其实这个要求应该用reflection实现,但那时我却以为delegate也表达这样的意义,即按赋值时函数的名称来执行。实际上对c更新后,A中的delegate还指向原来那个对象的函数,而不是新对象的函数。以后写代码时得多注意。

Advertisements
This entry was posted in 计算机与 Internet. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s