相关疑难解决方法(0)

C#6.0适用于.NET 4.0吗?

我创建了一个示例项目,使用C#6.0好东西 - 以null传播和属性初始化为例,设置目标版本.NET 4.0并且它...工作.

public class Cat
{
    public int TailLength { get; set; } = 4;

    public Cat Friend { get; set; }

    public string Mew() { return "Mew!"; }
}

class Program
{
    static void Main(string[] args)
    {
        var cat = new Cat {Friend = new Cat()};
        Console.WriteLine(cat?.Friend.Mew());
        Console.WriteLine(cat?.Friend?.Friend?.Mew() ?? "Null");
        Console.WriteLine(cat?.Friend?.Friend?.TailLength ?? 0);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是否意味着我可以将C#6.0功能用于我的面向.NET 4.0的软件?有任何限制或缺点吗?

.net c# c#-6.0

271
推荐指数
3
解决办法
7万
查看次数

C#if-null-then-null表达式

只是为了好奇/方便:C#提供了两个我知道的很酷的条件表达式功能:

string trimmed = (input == null) ? null : input.Trim();
Run Code Online (Sandbox Code Playgroud)

string trimmed = (input ?? "").Trim();
Run Code Online (Sandbox Code Playgroud)

对于我经常遇到的情况,我想念另一个这样的表达:

如果输入引用为null,则输出应为null.否则,输出应该是访问输入对象的方法或属性的结果.

我在第一个例子中完成了这一点,但是(input == null) ? null : input.Trim()非常冗长且难以理解.

这种情况是否有另一个条件表达式,或者我可以??优雅地使用运算符吗?

.net c# conditional-operator conditional-expressions

55
推荐指数
5
解决办法
3万
查看次数