Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在对象设置器中处理空对象_C# - Fatal编程技术网

C# 在对象设置器中处理空对象

C# 在对象设置器中处理空对象,c#,C#,我试图使用一个很好的近对象设置器,但有空的问题 我现在的代码: var Result = new RefundReplyObject { AuthorisationNumber = reply.refundResponse.transactionDetails.authorisationNumber, ChargeValue = reply.refundResponse.transactionDetails.totalAmount.amount, Message = r

我试图使用一个很好的近对象设置器,但有空的问题

我现在的代码:

var Result = new RefundReplyObject
{
    AuthorisationNumber = reply.refundResponse.transactionDetails.authorisationNumber,
    ChargeValue = reply.refundResponse.transactionDetails.totalAmount.amount, 
    Message = reply.refundResponse.transactionDetails.message,
    ReconciliationReference = reply.refundResponse.transactionDetails.reconciliationReference,
    SettlementDate = reply.refundResponse.transactionDetails.settlementDate,
    Status = TransactionStatusToLocalModel(reply.refundResponse.transactionDetails.status),
    TransactionReference = reply.refundResponse.transactionDetails.transactionReference
};
但是……”“totalAmount”可能为空。所以,我得到了错误


是否有一种简洁的方法来处理此问题,以便在“totalAmount”为空时,将chargevalue设置为零?

您可以这样做,例如:

ChargeValue = reply.refundResponse.transactionDetails.totalAmount != null ? reply.refundResponse.transactionDetails.totalAmount.amount : 0
像这样的

ChargeValue = (null == reply.refundResponse.transactionDetails.totalAmount) 
    ? 0
    : reply.refundResponse.transactionDetails.totalAmount.amount

三元运算符如何,它检查总量是否为空。如果不是,则使用它的
金额
,否则为0

ChargeValue = (reply.refundResponse.transactionDetails.totalAmount != null) ? reply.refundResponse.transactionDetails.totalAmount.amount : 0,

三元操作员来营救


ChargeValue=总金额?合计金额:0

您将无法在设置器端执行此操作,因为在您到达设置器之前就发生了异常。通过执行以下操作,您可以获得您想要的(并在过程中彻底清理代码):

var trans = reply.refundResponse.transactionDetails;

var Result = new RefundReplyObject
{
    AuthorisationNumber = trans.authorisationNumber,
    ChargeValue = trans.totalAmount == null ? 0 : trans.totalAmount.amount, 
    Message = trans.message,
    ReconciliationReference = trans.reconciliationReference,
    SettlementDate = trans.settlementDate,
    Status = TransactionStatusToLocalModeltrans.status),
    TransactionReference = trans.transactionReference
};