Home > Net >  How to declare a type of (string, IDictionary<string, object>)
How to declare a type of (string, IDictionary<string, object>)

Time:06-23

I am fixing a bug on a legacy system. It has a function with return type (string, IDictionary<string, object>). I cannot change the method signature. I want to declare a variable of method return type. I tried this but its giving me an error.

var sqlQuery = new (string, IDictionary<string, object>)

CodePudding user response:

This is a value tuple type (available in C# 7.0 and later) and you can either use target-typed new expression (since C# 9) to fill it with default values:

(string, IDictionary<string, object>) sqlQuery = new();

or using default:

(string, IDictionary<string, object>) sqlQuery = default;

or provide values of needed types:

var sqlQuery = (someString, someDictionary);
// or
var sqlQuery = ((string)null, (IDictionary<string, object>)null);

Or just use result of the method returning the tuple:

var sql = MethodReturningTuple();

CodePudding user response:

Tuple can have multiple data types and that is what the function returns in your case.

you can create a var

 var sqlQuery = method();

while debugging, you can verify that data is filled properly into the tuple.

or you can create specific type per method return

(string, IDictionary<string, object>) sqlQuery = method();

It is better to use var as it can change with method signature. Having said that, every pro has cons, code can fail if the type is changed. C# is type safe and (hopefully) compile will detect the type change.

  • Related