相关疑难解决方法(0)

C#有多大用处?运营商?

所以我一直对这个感兴趣?运营商,但仍然无法使用它.当我做的事情时,我通常会想到:

var x = (someObject as someType).someMember;
Run Code Online (Sandbox Code Playgroud)

如果someObject有效且someMember为null,我可以这样做

var x = (someObject as someType).someMember ?? defaultValue;
Run Code Online (Sandbox Code Playgroud)

但是当someObject为null时,我几乎总是遇到问题,而且?? 并没有帮助我使这个更清洁,而不是自己做空检查.

你们找到了什么用途?在实际情况?

c# syntactic-sugar

24
推荐指数
6
解决办法
6468
查看次数

如何检查深度lambda表达式中的空值?

如何在深层lamda表达式中检查空值?

比方说,我有一个嵌套了几层深度的类结构,我想执行以下lambda:

x => x.Two.Three.Four.Foo
Run Code Online (Sandbox Code Playgroud)

如果Two,Three或Four为null,我希望它返回null,而不是抛出System.NullReferenceException.

public class Tests
{
    // This test will succeed
    [Fact]
    public void ReturnsValueWhenClass2NotNull()
    {
        var one = new One();
        one.Two = new Two();
        one.Two.Three = new Three();
        one.Two.Three.Four = new Four();
        one.Two.Three.Four.Foo = "blah";

        var result = GetValue(one, x => x.Two.Three.Four.Foo);

        Assert.Equal("blah", result);
    }

    // This test will fail
    [Fact]
    public void ReturnsNullWhenClass2IsNull()
    {
        var one = new One();

        var result = GetValue(one, x => x.Two.Three.Four.Foo);

        Assert.Equal(null, result);
    }

    private TResult GetValue<TModel, TResult>(TModel model, …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda

14
推荐指数
3
解决办法
2万
查看次数

"如果object为null,则为null;如果object为null,则为object.member"的快捷方式

我正在尝试编写一个通用扩展方法,让我这样做:

this.startDate = startDateXAttribute.NullOrPropertyOf<DateTime>(() =>
{
    return DateTime.Parse(startDateXAttribute.Value);
});
Run Code Online (Sandbox Code Playgroud)

NullOrPropertyOf()将返回null如果它是一个上使用的null对象(例如,如果startDateXAttributenull),或返回的结果Func,如果它不为空.

这种扩展方法会是什么样的?

c# generics

8
推荐指数
1
解决办法
6154
查看次数

标签 统计

c# ×3

generics ×1

lambda ×1

linq ×1

syntactic-sugar ×1