Ваш параметр имеет только одно поле Item1
, так как оно относится не к типу ValueTuple<...>
, а к типу ValueTuple<ValueTuple<...>>
: единственный тип параметра внешнего ValueTuple является другим ValueTuple
, где этот внутренний C # кортеж теперь содержит ваши поля string
, decimal
и int
.
Поэтому в вашем коде вы должны написать string loanID = credit.Item1.loanID;
для доступа к этим полям.
Чтобы получить доступ к вашим полям, как и ожидалось, удалите включающий ValueTuple
, оставив только C# tuple
:
public void LogCredit((string loanID, decimal discount, decimal interestRate,
decimal realReturn, decimal term, int alreadyPayedMonths) credit)
{
string loanID = credit.loanID;
decimal realReturn = credit.Item4;
}
Чтобы использовать именованные поля ValueTuple
, я предпочитаю использовать C# 7 Tuples
.
Для полноты изложения приведем общую статью блога и подробную статью блога о кортежах в C # 7.