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,问题已经在下面得到了回答。