C#EventHandler漂亮的代码(如何?)

Chr*_*ert 5 wpf event-handling

我承认,它有点小,但我正在寻找更好的方法来执行以下代码块.他们应该自我解释......

    private void listBoxItem_PreviewMouseDown(object sender, MouseButtonEventArgs e)
    {
        var listBoxItem = sender as ListBoxItem;
        if (listBoxItem != null)
        {
            var clickObject = listBoxItem.DataContext as ClickObject;
            if (clickObject != null)
            {
                clickObject.SingleClick();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

另一个丑陋的:

    private void listBox_SelectionChangedA(object sender, SelectionChangedEventArgs e)
    {
        var lB = sender as ListBox;
        if (lB != null)
            StatusBoxA.Text = "Elements selected" + lB.SelectedItems.Count;
    }
Run Code Online (Sandbox Code Playgroud)

是的,我知道,它并非近乎死亡.但我不喜欢(if!= null).任何神奇的想法都会缩短它:-)

顺便说一句,我找到了一些关于类似主题的好消息:Null Items上的循环 很好看...

Dia*_*tis 8

我喜欢干净整洁的代码,但在大多数情况下,干净优雅并不意味着简短而聪明.代码简洁有利于比赛.将"if not null"语句更改为foreach可能看起来更酷,但是在项目中工作的其他人更难理解您要完成的任务.相信我,即使你几个月后也不记得了:P.你的代码就好了!


Ser*_*hov 3

private void listBoxItem_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
        var listBoxItem = sender as ListBoxItem;
        if (listBoxItem == null) return;

        var clickObject = listBoxItem.DataContext as ClickObject;
        if (clickObject == null) return;

        clickObject.SingleClick();
}
Run Code Online (Sandbox Code Playgroud)