用于强制转换的Visual Studio C#快捷方式,然后检查null

jwa*_*980 3 c# visual-studio visual-studio-2015

我发现我经常写这样的代码:

public void some_callback(object sender, SomeArgs args)
{
    if (sender is ObjectA)
    {
        var objA = sender as ObjectA;
        //do something
    }
    else if (sender is ObjectB)
    {
        var objB = sender as ObjectB;
        //do something else
    }
}
Run Code Online (Sandbox Code Playgroud)

或类似地:

public void some_callback(object sender, SomeArgs args)
{
    var objA = sender as ObjectA;
    if (objA != null)
    {
        //do something
    }

    var objB = sender as ObjectB;
    if (objB != null)
    {
        //do something else
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是,如果有一种快捷方式可以在C#中处理这个问题?有点像:

public void some_callback(object sender, SomeArgs args)
{
    with (var obj = sender as ObjectA)
    {
        //do something
    }
    else with (var obj = sender as ObjectB)
    {
        //do something else
    }
}
Run Code Online (Sandbox Code Playgroud)

kro*_*nis 5

您要问的主要是将在C#7.0中添加的模式匹配.请参阅说明.你可以写:

if (expr is Type v) { // code using v }
Run Code Online (Sandbox Code Playgroud)

但那是下一个版本.