c# - 有没有一种方法可以引用链中的最后一个表达式以用作函数中的参数(C#)

标签 c# c#-4.0

您好,我有以下代码:

log.Entry = (newEntry ?? "").Substring(0,Math.Min((newEntry ?? "").Length, 50));

log.Entry是nvarchar(50)的数据库字段 所以我想做的是限制最多 50 个字符,但也有空检查,所以我不尝试在 null 上运行字符串函数,这可能会引发异常。(?)

我的问题是第二个 (newEntry ?? "") 可以被某种运算符简化吗? 这已经评估过一次,可能不需要再次评估。 我正在寻找一种单行代码,因此它类似于 lambda 风格的语法。 (但我猜不是实际的 lambda)。

最佳答案

log.Entry = newEntry?.Substring(0, Math.Min(newEntry.Length, 50)) ?? "";

或者删除?? "" 如果你希望 log.Entry 为 null 如果 newEntry 为 null:

log.Entry = newEntry?.Substring(0, Math.Min(newEntry.Length, 50));

关于c# - 有没有一种方法可以引用链中的最后一个表达式以用作函数中的参数(C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43209358/

相关文章:

c# - 使用 msmq 和 wcf

c# - IP摄像机(RTSP)和QR码

c# - 如何找到带有 params 参数的方法的用法,以使参数不为空?

asp.net-mvc - Linq/Entity Group 然后计算这些组

c# - Visual Studio 报告属性没有 getter,即使 intellisense 说它有

c# - 在 C# 中使用 ASP ScriptingContext 请求集合?

c# - 为什么协变类型参数仅用于成员的返回类型?

c# - TlbExp.exe 错误 :This assembly is built by a runtime newer

c#-4.0 - 将 header 添加到 XDocument 和架构

c# - 为什么具有默认值的枚举在 C# 中不能按预期工作?