如何将 C# 数组传递到 QuantumSimulator 运行() 命令中的 Q# 操作?

How to pass C# array into a Q# operation within QuantumSimulator Run() command?

我正在制作一个程序,该程序使用从 Driver.cs 中的 C# 脚本中获取的整数数组作为参数,但出现以下错误:

Error CS1503 Argument 2: cannot convert from 'long[]' to 'Microsoft.Quantum.Simulation.Core.IQArray<long>'

我尝试传入一个字符串数组并在程序中转换它们,但出现了相同的错误:

Error CS1503 Argument 2: cannot convert from 'string[]' to 'Microsoft.Quantum.Simulation.Core.IQArray<string>'

这是 Driver.cs 中的 C# 代码 - keyArray 是我要传递给 Q# 的数组。

using (var qsim = new QuantumSimulator())
{
    var result = QMain.Run(qsim, keyArray).Result;
    var (res0, res1, res2) = result;
    System.Console.WriteLine(res0 + ", " + res1 + ", " + res2);
}

Q# QOperations.qs中的主要操作:

operation QMain(keyCode : Int[]) : (Result, Result, Result)

在Q#中,Int数据类型对应C#long

传递字符串数组也失败,具有以下 QMain 签名:

operation QMain(s : String[]) : (Result, Result, Result)

每当我尝试在 QMain.

中尝试使用任何数组作为参数时,我得到的都是相同的错误

用于将固定长度数组传入和传出 Q# 代码的数据类型是 QArray。在将其传递给 QMain:

之前,您必须从数组中显式创建此数据类型的实例
var result = QMain.Run(qsim, new QArray<long>(keyArray)).Result;

您可以查看将数组传递给 Q# 的示例 in the samples