Array
VFP9 言語の COM/DLL を .NET C# プロジェクトに返そうとすると、System.Object[*]
配列を受け取り、キャストできませんSystem.Object[]
(アスタリスクなし)。
3052 次
3 に答える
9
Timwi のソリューションは正常に機能するはずです。Linq を使用すると、もう少し簡単なことを行うことができます。
object[] newArray = sourceArray.Cast<object>().ToArray();
を再作成しSystem.Object[*]
て VFP に戻す必要がある場合は、次のメソッドのオーバーロードを使用できます。Array.CreateInstance
public static Array CreateInstance(
Type elementType,
int[] lengths,
int[] lowerBounds
)
次のように使用できます。
object[] normalArray = ...
// create array with lower bound of 1
Array arrayStartingAt1 =
Array.CreateInstance(
typeof(object),
new[] { normalArray.Length },
new[] { 1 });
Array.Copy(normalArray, 0, arrayStartingAt1, 1, normalArray.Length);
于 2010-09-16T22:33:57.363 に答える
6
残念ながら、直接キャストすることはできません。ただし、型の新しい配列を作成しobject[]
てデータをコピーすることはできます。何かのようなもの...
Array sourceArray = ...;
if (sourceArray.Rank != 1)
throw new InvalidOperationException("Expected a single-rank array.");
object[] newArray = new object[sourceArray.Length];
Array.Copy(sourceArray, sourceArray.GetLowerBound(0),
newArray, 0, sourceArray.Length);
于 2010-09-16T22:29:51.553 に答える