• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

111
Views
TryGetValue en un diccionario nulo

Estoy tratando de usar TryGetValue en un diccionario como de costumbre, como este código a continuación:

 Response.Context.Skills[MAIN_SKILL].UserDefined.TryGetValue("action", out var actionObj)

Mi problema es que el propio diccionario podría ser nulo . Simplemente podría usar un "?". antes de UserDefined pero luego recibo el error:

 "cannot implicitly convert type 'bool?' to 'bool'"

¿Cuál es la mejor manera en que puedo manejar esta situación? ¿Tengo que verificar si UserDefined es nulo antes de usar TryGetValue? Porque si tuviera que usar Response.Context.Skills[MAIN_SKILL].UserDefined dos veces, mi código podría verse un poco desordenado:

 if (watsonResponse.Context.Skills[MAIN_SKILL].UserDefined != null && watsonResponse.Context.Skills[MAIN_SKILL].UserDefined.TryGetValue("action", out var actionObj)) { var actionName = (string)actionObj; }
over 3 years ago · Santiago Trujillo
2 answers
Answer question

0

Agregue una verificación nula (operador ?? ) después del bool? expresión:

 var dictionary = watsonResponse.Context.Skills[MAIN_SKILL].UserDefined; if (dictionary?.TryGetValue("action", out var actionObj)??false) { var actionName = (string)actionObj; }
over 3 years ago · Santiago Trujillo Report

0

Otra opción es comparar con true .

Se ve un poco extraño, pero funciona con una lógica de tres valores y dice: ¿este valor es true pero no false o null ?

 if (watsonResponse.Context.Skills[MAIN_SKILL] .UserDefined?.TryGetValue("action", out var actionObj) == true) { var actionName = (string)actionObj; }

Puede hacer la lógica opuesta con != true : este valor no es true , entonces es false o null

 if (watsonResponse.Context.Skills[MAIN_SKILL] .UserDefined?.TryGetValue("action", out var actionObj) != true) { var actionName = (string)actionObj; }
over 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error