【发布时间】:2018-08-28 08:34:15
【问题描述】:
我只是将 ValueTuple 传递给一个函数。我想处理这个 ValueTuple 中的值。
不幸的是,VS 2017 只允许我访问credit.Item1。没有其他项目。到目前为止,我对 ValueTuples 没有任何问题。
编译器中的错误是:
ValueTuple 不包含 “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;
}
有什么建议吗?
【问题讨论】:
-
看起来您正在尝试将通用语法与 c# 更新的内置元组支持结合起来。如果删除
ValueTuple<和>位会怎样? -
我认为您最终会得到一个具有一个匿名成员的元组,该成员的类型是您定义的具有命名元素的元组。
-
你有一个元组,里面有一个元组,你确定这是你想要的吗?尝试简单地删除
ValueTuple<和>,看看是否能满足您的需求。 IE。你的方法声明应该是public void LogCredit((string loanID, ...) credit) { ... }。 -
或者,您可以使用正确的字段路径:
string loanID = credit.Item1.loanID;。 -
谢谢,成功了。有人想作为答案发布吗?否则我会写下来。
标签: c# tuples valuetuple