3

I am getting a response from api in which some attribute are lists, but when they are empty instead of getting an empty lists I receive null. Now my problem is that i am trying to create a new instance of my model in which I have defined that attribute as string[] but the api call returns that particular attribute as IReadOnlyList.

Example: lets call attribute for listOfNames which can either be null or list containing names; ["henry", "Jack"]. The type of listOfNames is IReadOnlyList.

When I try to create my new instance for example: var newInstance = myModel(listOfName.ToArray()) it works fine when listOfNames is not empty, but when it is null the ToArray() method gives error as it cannot be applied to null.

How can I solve this without having to do if statements check before creating new instance of my model. Right now I have solved this as

var temp = Array.Empty<string>();
if(listOfNames != null){
temp = listOfNames;
}
var instance = myModel(temp);

Above works fine if it is only one such attribute but now I have multiple such attributes and I dont want to handle each one with if statement.

1 Answer 1

6

You can use the null-conditional operator in conjunction with the null-coalescing operator:

var instance = MyModel(listOfNames?.ToArray() ?? Array.Empty<string>());
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.