如何在c#函数中传递一个字节值


How can I pass a byte value in c# function

本问题已经有最佳答案,请猛点这里访问。

我在C中有这个功能:

1
2
3
4
public string CommitDocument(string extension, byte[] fileBytes)
{
   // some code here
}

我试着这样调用这个函数:

1
  CommitDocument("document.docx", byte [1493]);

我收到一个错误:"表达式术语‘byte’无效"。如何将值传递给byte类型的参数?


byte[]是一个字节数组,需要先用"new"分配数组。

1
2
byte[] myArray = new byte[1493];
CommitDocument("document.docx", myArray);


您将CommitDocument定义为采用字节数组。单个字节不能转换为字节数组。或者至少编译器没有隐式地执行这项操作。有几种方法可以克服这一限制:

提供一个接受一个字节并使其成为一个元素数组的重载:

1
2
3
4
5
6
7
8
9
public string CommitDocument(string extension, byte fileByte)
{
   //Make a one element arry from the byte
   var temp = new byte[1];
   temp[0] = fileByte;

   //Hand if of to the existing code.
   CommitDocument(extension, temp);
}

否则,在Params参数中转动fileBytes。您可以向Params提供任意数量的逗号分隔字节,编译器将自动将它们转换为数组。详情和限制见Params文件:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/params