2012-04-28 78 views
1

從事件的「發件人」獲取信息有什麼更好的形式?投射到已知發件人的類型,還是直接使用名稱?我懷疑,投射會是更好的形式,但如果你知道這個名字,這似乎是一個相當迂迴的事情。下面是我考慮的例子:從事件中獲取信息的更好方式是什麼?

protected void OnEntry1Changed (object sender, System.EventArgs e) { 
      if ((sender as Gtk.Entry).Text != "some specific value" && (sender as Gtk.Entry).Text != "" && anotherEntry.Text !="") { 
       // Do some stuff here... 
      } else { 
       // Do some other stuff here... 
      } 
     } 

另一個版本將是直接訪問該條目是這樣的:

protected void OnEntry1Changed(object sender, System.EventArgs e) { 
    if (Entry1.Text != "some specific value" && Entry1.Text != "" && anotherEntry.Text !="") { 
     //Do some stuff here... 
    } else { 
     // Do some other stuff here... 
    } 
} 

...看來,第二個版本會更直接,但是其中一個或另一個被認爲更「正確的代碼形式」?

+0

我實際上更喜歡在我的EventArgs中獲取新值。 – Jens 2012-04-28 07:05:34

+0

你能解釋誰該怎麼做?看起來在我的「e」中,我只有「Equals」,「GetHashCode」,「GetType」和「ToString」... – 2012-04-28 07:45:12

+0

只有在控制發送這些事件的類時,才能這樣做。在這種情況下,只需繼承EventArgs並添加nesseccary屬性即可。如果你不控制它,那你的運氣不好。 – Jens 2012-04-28 18:04:25

回答

1

我寧願做最好的 - (sender as Gtk.Entry)。這樣,如果您必須在應用程序的其他位置複製該條目的功能,則可以重新使用信號處理程序。

+0

因此,它可能更好地優先考慮代碼可維護性嗎?這很有道理。 – 2012-04-29 01:58:58

相關問題