佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1328|回复: 8

C#有没有像PHP那样的功能

[复制链接]
terrorgen 该用户已被删除
发表于 23-6-2006 09:00 PM | 显示全部楼层 |阅读模式
在PHP中有这样的功能:


$function = "hello";

那么如果 $function(); 就等于执行了 hello()

问C#有类似的功能吗?
回复

使用道具 举报


ADVERTISEMENT

发表于 24-6-2006 12:07 AM | 显示全部楼层
call function 不是所有programming language 都有的吗???
回复

使用道具 举报

发表于 24-6-2006 01:14 AM | 显示全部楼层
几乎任何一个电脑语言都能呼唤 function...
回复

使用道具 举报

发表于 24-6-2006 01:27 AM | 显示全部楼层
他要的應該是function pointer。
C#的delegate就是function pointer。

  1. void hello() {
  2.         Console.WriteLine("Hello");
  3. }
  4. void bye() {
  5.         Console.WriteLine("Bye");
  6. }

  7. delegate void fp();

  8. static int Main() {
  9.         fp function;

  10.         function = new fp(hello);
  11.         function();

  12.         function = new fp(bye);
  13.         function();
  14. }
复制代码
回复

使用道具 举报

terrorgen 该用户已被删除
 楼主| 发表于 24-6-2006 02:00 AM | 显示全部楼层
我要的就是这个,谢谢!
回复

使用道具 举报

terrorgen 该用户已被删除
 楼主| 发表于 24-6-2006 02:19 AM | 显示全部楼层
但是delegate怎么用

我有10个textbox分别bind到同一个dataset中的不同row
我想要在lostFocus的时候update到资料库
不过一个一个去设EventHandler会很累人的……
能用delegate解决吗?
回复

使用道具 举报

Follow Us
发表于 27-6-2006 09:54 PM | 显示全部楼层
不需要delegate, 把全部textbox的LostFocus放同一个event handler,再根據sender来決定要保存谁。

  1. void Form_Load(object sender, System.EventArgs e) {
  2.   textbox0.LostFocus += new EventHandler(textbox_LostFocus);
  3.   textbox1.LostFocus += new EventHandler(textbox_LostFocus);
  4.   textbox2.LostFocus += new EventHandler(textbox_LostFocus);
  5. }
  6. void textbox_LostFocus(object sender, System.EventArgs e) {
  7.   Control c = sender as Control;
  8.   DataRow dr = c.DataBinding[0].DataSource as DataRow;
  9.   // 保存
  10. }
复制代码

DataRow只是一个例子,你必須根據你的DataSource来調整。
回复

使用道具 举报

terrorgen 该用户已被删除
 楼主| 发表于 28-6-2006 10:22 AM | 显示全部楼层
谢谢~我这就去试试~
回复

使用道具 举报


ADVERTISEMENT

发表于 27-10-2008 12:49 AM | 显示全部楼层

回复 8# terrorgen 的帖子

This should be a safer way to deal with the winform UI thread.

private delegate void UpdateTitleDelegate(Control lable,string s);

void Form_Load(object sender, System.EventArgs e) {
  textbox0.LostFocus += new EventHandler(textbox_LostFocus);
  textbox1.LostFocus += new EventHandler(textbox_LostFocus);
  textbox2.LostFocus += new EventHandler(textbox_LostFocus);
}
void textbox_LostFocus(object sender, System.EventArgs e) {
  Control c = sender as Control;
   UpdateTitle(c, c.Text);
}

   void UpdateTitle(Control lable,string newTitle)
   {
   if (lable.InvokeRequired)            
      lable.Invoke(new UpdateTitleDelegate(UpdateTitle), newTitle);         
   else         
      {            
           DataRow dr = c.DataBinding[0].DataSource as DataRow;
       // 保存
  
      }
   }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-12-2025 12:12 AM , Processed in 0.426322 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表