ValueTuple<(string loanID, decimal x, ...)> 在 c# 中不包含 'loanID' 的定义
ValueTuple<(string loanID, decimal x, ...)> does not contain a definition for 'loanID' in c#
我只是将一个 ValueTuple 传递给一个函数。我想处理这个 ValueTuple 中的值。
不幸的是,VS 2017 只允许我访问 credit.Item1
。没有进一步的项目。到目前为止,我对 ValueTuples 没有任何问题。
编译器中的错误是:
ValueTuple<(string loanID, decimal y, ...)> does not contain a
definition for 'loanID'...
密码是
public void LogCredit(
ValueTuple<(
string loanID,
decimal discount,
decimal interestRate,
decimal realReturn,
decimal term,
int alreadyPayedMonths)>
credit)
{
// not working!
string loanID = credit.loanID;
// this is the only thing i can do:
string loanID = credit.Item1;
// not working either!
decimal realReturn = credit.Item2;
}
与此同时,当鼠标悬停在 credit
上时,我可以正确地看到它:
有什么建议吗?
你的参数只有一个字段Item1
因为它不是ValueTuple<...>
类型,而是ValueTuple<ValueTuple<...>>
类型:外ValueTuple is another ValueTuple
, where this inner C# tuple的单一类型参数现在包含您的 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
。
为了完整起见,这里 general blog article and an in-depth blog article 关于 C# 7 中的元组。
我只是将一个 ValueTuple 传递给一个函数。我想处理这个 ValueTuple 中的值。
不幸的是,VS 2017 只允许我访问 credit.Item1
。没有进一步的项目。到目前为止,我对 ValueTuples 没有任何问题。
编译器中的错误是:
ValueTuple<(string loanID, decimal y, ...)> does not contain a definition for 'loanID'...
密码是
public void LogCredit(
ValueTuple<(
string loanID,
decimal discount,
decimal interestRate,
decimal realReturn,
decimal term,
int alreadyPayedMonths)>
credit)
{
// not working!
string loanID = credit.loanID;
// this is the only thing i can do:
string loanID = credit.Item1;
// not working either!
decimal realReturn = credit.Item2;
}
与此同时,当鼠标悬停在 credit
上时,我可以正确地看到它:
有什么建议吗?
你的参数只有一个字段Item1
因为它不是ValueTuple<...>
类型,而是ValueTuple<ValueTuple<...>>
类型:外ValueTuple is another ValueTuple
, where this inner C# tuple的单一类型参数现在包含您的 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
。
为了完整起见,这里 general blog article and an in-depth blog article 关于 C# 7 中的元组。