c# - 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
解决方案
您可以使用将空值转换为字符串
此示例意味着如果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上还有更多内容
推荐阅读
- javascript - Hot to import JS module in browser environment?
- javascript - How do I get the text of my WordPress posts left indented?
- javascript - 如何访问
- 使用 Selenium webdriver 的项目
- java - java.lang.NullPointerException 的 Junit 测试失败
- flutter - 来自 Sqflite 数据库的颤振地图上的颤振标记位置(纬度、经度)
- python - 如何使用python找到正确的“div”进行网络抓取
- python - 阅读图表并分析它们
- linux - 如何将 FFmpeg 编译为静态(单个文件)
- r - 如何将结果连续导出到表格中?
- python - 使用 name_search 在 odoo12 的文本字段中自动完成