首页 > 解决方案 > C#,.NET,在将请求转换为字符串的函数中检查 null

问题描述

我有一个接受请求并将其转换为字符串的函数:

private string CreateEmailData(Models.V2.RequestPaymentModel data)
{
   var emailRequest = new ApiRequest<RequestPaymentEmailModel>
   {
      Id = id,
      DateUtc = DateTime.UtcNow,
      Data = new Utils.EmailRequest.RequestPaymentEmailModel
      {
         LanguageCode = data.LanguageCode,
         DeviceID = data.DeviceId,
         CoreSystem = data.CoreSystem,
         Transaction = new Utils.EmailRequest.TransactionEmail()
         {
            Country = data.CountryCode,
            TransactionType = data.Transaction.Type,
            Amount = data.Transaction.Amount,
            Currency = data.Transaction.Currency,
            Authorization = "",
            Type = data.Transaction.Type,
            Description = data.Transaction.Description,
            PaymentNetwork = data.PaymentNetwork,
            ReferenceId = data.Transaction.ReferenceID,
            CartValue = data.Transaction.CartValue,
            PaymentFrequency = data.Transaction.PaymentFrequency,
            InvoiceNumber = data.Transaction.InvoiceNumber,
            GoodsType = data.Transaction.GoodsType,
            ProductID = data.Transaction.ProductId
         },
         CreditCard = new Utils.EmailRequest.EmailCreditCard()
         {
            Number = data.DataPaymentMethod.CreditCard.Number,
            Month = data.DataPaymentMethod.CreditCard.Month,
            Year = data.DataPaymentMethod.CreditCard.Year,
            FirstName = data.DataPaymentMethod.CreditCard.FirstName,
            LastName = data.DataPaymentMethod.CreditCard.LastName
         },
         PaymentMethod = data.PaymentMethod,
         DataSecurity = data.DataSecurity,
         ExtraParameter = data.DataPaymentMethod.ExtraParameter,
         Buyer = data.DataPaymentMethod.Buyer,
         Payer = data.DataPaymentMethod.Payer,
      }
   }.ToJson();

   return emailRequest;
}

但有时请求中的某些值Payer可能为空。如何在此函数中检查 null 值?现在,如果 value null 它会使应用程序崩溃并返回:

$exception {"对象引用未设置为对象的实例。"} System.NullReferenceException

标签: c#.netexceptionnull

解决方案


您可以使用将空值转换为字符串

此示例意味着如果Transaction为 null,则使用空字符串代替

TransactionType = data.Transaction?.Type ?? ""

此示例表示如果CountryCode为 null,则使用空字符串代替

Country = data.CountryCode ?? ""

语法本身基本上是一个内联 if 语句,在https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/conditional-operator上还有更多内容


推荐阅读