0

Buffer.BlockCopy を使用して、配列 (data.item) の一部を別の配列にコピーしようとしています。1 つのことを試してみると、無効なもの (以下を参照) に関するコンパイラ エラーが発生し、キャストを使用すると実行時エラーが発生します。しかし、row[item.AspecName] = "random chars" を割り当てるだけで問題なく動作します。私は何を間違っていますか?

namespace ObjectListViewFramework
{
    public partial class ObjectListviewForm : Form
    {
        public DataTable ListRows { get; private set; }
  }

 }

    public void AddRows2(DLL_conduit data)
    {
        int columnIndex;
        int bufferIndex = 0;
        for (int rowIndex = 0; rowIndex < data.rowCount; rowIndex++)
        {
            DataRow row = ListRows.NewRow();
            columnIndex = 0;
            foreach (var item in objectListView1.AllColumns)
            {
                // this works dandy
               row[item.AspectName] = "random chars";

                // compiler error: the best overloaded method match has some invalid args
                 Buffer.BlockCopy(data.item, bufferIndex, row[item.AspectName], columnIndex * 256, 256);

                 // runtime error: invalid cast 
                 Buffer.BlockCopy(data.item, bufferIndex, (char[])row[item.AspectName], columnIndex * 256, 256);      

                ++columnIndex;
                bufferIndex += 256;
            }
            ListRows.Rows.Add(row);
        }
        objectListView1.AddObjects(ListRows.DefaultView);
    }
4

1 に答える 1