将字符串的 2darray 作为参数传递时出现“错误:类型的数组值”
Posted
技术标签:
【中文标题】将字符串的 2darray 作为参数传递时出现“错误:类型的数组值”【英文标题】:"Error:Array value expected for type" when passing 2darray of string as parameter Nethereum 【发布时间】:2021-10-19 07:10:56 【问题描述】:我使用 ganache truffle 套件作为本地区块链来测试我的智能合约。 这是我的solidity函数,我可以添加一个二维字符串数组并用它填充一个映射(字符串=>字符串):
function AddSignature(string[][] memory _signature) public
for ( uint i = 0 ; i < _signature.length; i++ )
require(!_studentExists[_signature[i][0]]);
signatures[_signature[i][0]] = _signature[i][1];
_studentExists[_signature[i][0]]=true;
这是我的 program.cs 代码,我尝试通过 .net 与 AddSignature 函数进行通信:
class Program
static void Main(string[] args)
//The URL endpoint for the blockchain network.
string url = "HTTP://127.0.0.1:7545";
//The contract address.
string address =
"0x4373671d1fC2d795A7c066E27CAB732933343b15";
//The ABI for the contract.
string ABI =
@"..."
Web3 web3 = new Web3(url);
Contract CryptoD = web3.Eth.GetContract(ABI, address);
Console.WriteLine("Enter your address: ");
string addressStudent = Console.ReadLine();
Console.WriteLine("Enter your signature: ");
string signature = Console.ReadLine(); ;
string[,] duo = new string[, ]
addressStudent, signature
;
try
Task<string> mintFunction = CryptoD.GetFunction("AddSignature").
SendTransactionAsync(from: "0xe801bF0abd0eC70d77a954AF901D4AF747c0CfF2BALANCE",duo);
mintFunction.Wait();
Console.WriteLine("signature added!");
catch (Exception e)
Console.WriteLine("Error: 0", e.Message);
【问题讨论】:
【参考方案1】:我通过传递二维数组而不是一维数组作为参数解决了这个错误
【讨论】:
以上是关于将字符串的 2darray 作为参数传递时出现“错误:类型的数组值”的主要内容,如果未能解决你的问题,请参考以下文章
将变量名称作为参数从外部函数传递到 R 中的内部函数时出现问题?