C# 一个方法返回一个元组,如何分配两个变量以获取C中元组的结果#
我不熟悉C# 一个方法返回一个元组,如何分配两个变量以获取C中元组的结果#,c#,tuples,C#,Tuples,我不熟悉元组的概念 我有一个值元组方法,它返回两个东西-用于数字签名的证书和作为结果的枚举(值为“success”和“cannotsigndoc”) 我想在两个变量中收集这个方法的结果 方法如下: public (InvoiceResult resultValue, X509Certificate2 cert) GetDefaultCertificateStoredOnTheCard() { var resultValue = InvoiceResult.Succ
元组的概念
我有一个值元组
方法,它返回两个东西-用于数字签名的证书
和作为结果的枚举
(值为“success”和“cannotsigndoc”)
我想在两个变量中收集这个方法的结果
方法如下:
public (InvoiceResult resultValue, X509Certificate2 cert) GetDefaultCertificateStoredOnTheCard()
{
var resultValue = InvoiceResult.Success;
X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindByTimeValid, DateTime.Now, true);
// by thumbprint, there is only one
certs = certs.Find(X509FindType.FindByThumbprint, "6BB4AZD483206Z44B992799541114536579CF2B3", true);
if (certs.Count == 0)
{
resultValue = InvoiceResult.CannotFindSignature;
throw new ArgumentException("Please insert smart card to obtain certificate.");
}
X509Certificate2 cert = certs[0];
RSACryptoServiceProvider key;
if (cert.HasPrivateKey)
{
// software cert
key = cert.PrivateKey as RSACryptoServiceProvider;
}
else
{
// certificate from smartcard
CspParameters csp = new CspParameters(1, "Microsoft Base Smart Card Crypto Provider");
csp.Flags = CspProviderFlags.UseDefaultKeyContainer;
key = new RSACryptoServiceProvider(csp);
}
return (resultValue, cert);
}
这里我想收集两个变量中的方法结果:
var certificate,resultValue = GetDefaultCertificateStoredOnTheCard();
以下是我从以下方面得到的错误:
“隐式类型变量不能有多个声明符”
“隐式类型的变量必须初始化”
尝试通过添加括号更改分配变量的行:
var (certificate, resultValue) = GetDefaultCertificateStoredOnTheCard();
此资源可能会有帮助:
解构变量名var(certificate,resultValue)=GetDefaultCertificateStoredOnTheCard()周围缺少括号代码>。更多信息请参见文档谢谢您的快速回复,phuzi。Wollmich,问题已经在下面得到了回答。