【问题标题】:C# How to write this ternary operationC#如何编写这个三元运算
【发布时间】:2020-12-02 07:46:36
【问题描述】:
GetDati(id).Tables[0].Rows.count > 0 ? GetDati(id).Tables[0].Rows[0]: null;

这行应该怎么写?我只想打一次GetDati()

【问题讨论】:

  • 将其结果存储在 X 中,然后在三元中使用 X?
  • 为什么不直接使用变量来存储您在之前的语句中使用的返回值部分?
  • 如果您创建的 SQL 语句只返回一个值(或不返回任何值),请在 Command objekt 上使用 ExecuteScalar 直接返回此值,而不是获取数据集并使用它。跨度>
  • 你也可以试试??运算符,因为 2.0 像这样 GetDati(id).Tables[0].Rows[0] ??空值;结帐docs.microsoft.com/en-us/dotnet/csharp/language-reference/…

标签: c# asp.net asp.net-mvc conditional-operator


【解决方案1】:

谢谢,但如果我需要像这样在构造函数上调用它:

Public myclass(DataRoe dr):this(){
   Do something
}

Public myclass(id):this(getdati(id).tables[0].rows[0]){}

【讨论】:

  • 你可以使用静态辅助方法
【解决方案2】:
var rows = GetDati(id).Tables[0].Rows;
var result = rows.count > 0 ? rows[0]: null;

【讨论】:

    【解决方案3】:

    您还可以利用 C# 8 中的模式匹配:

    var result = GetDati(id).Tables[0].Rows is var rows && rows.Count > 0 ? rows[0] : null;
    

    is 引入了针对pattern 的测试。 var 模式将始终成功,并将结果分配给 rows 变量。


    也就是说,我发现@David 使用的版本更清晰,但我知道有些人更喜欢使用var 模式。

    【讨论】:

      【解决方案4】:

      我只想调用函数 GetDati 1 次

      然后只调用一次并将结果存储在一个变量中。例如:

      var dati = GetDati(id);
      var result = dati.Tables[0].Rows.count > 0 ? dati.Tables[0].Rows[0]: null
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-27
        • 2023-03-12
        • 2022-01-10
        • 2021-09-10
        • 2016-05-21
        相关资源
        最近更新 更多