Note: I don't care about measuring performance on these 2 operations because we don't use them in a tight loop.
For me its all about readability and robustness of my code.
Look at these code samples doing some type casts
public ListFigure: 1 code sample with untyped datatablesGetJobRulesFromPhysicalDB(DataTable renewedRules) { if (renewedRules.Rows.Count > 0 && CurrentJob.JobRules.Count > 0) { foreach (DataRow row in renewedRules.Rows) { foreach (JobRule item in CurrentJob.JobRules) { if ((Guid)row["RuleID"] == item.RuleId) { item.UpdateRule(CurrentJob.RuleRepository.GetNewRuleByRuleId(item.RuleId)); break; } } } } return CurrentJob.JobRules; }
private void AMControlMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
var auc = (AMUserControl)sender;
var aucSessionId = auc.myUserControl.Tag;
// snip snip snip
}
Figure: Event handler in Silverlight
I see this VERY often, so I had to blog about it.