インスタンスの複製
Namespace: FVILAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public virtual Object CopyFrom( Object object ) |
Visual Basic |
---|
Public Overridable Function CopyFrom ( object As Object ) As Object |
Parameters
- object
- Type: System..::..Object
複製元のインスタンス
Return Value
Type: Object複製後の自身のインスタンスを返します。
Implements
IFviCopyable..::..CopyFrom(Object)Remarks
引数に指定されたインスタンスの内容をこのインスタンスへ複製します。
異なる型からの変換については、このクラスの説明 の "データ変換" の項をご参照ください。
対応しない型や null が指定された場合は System の例外が発行されます。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。
エラーコード:
値 | ErrorCode メンバ | 内容 |
---|---|---|
1 | FVIL.ErrorCode.FAILED_TO_ALLOCATE | 領域の確保に失敗しました。 |
11 | FVIL.ErrorCode.INVALID_PARAMETER | 引数に指定されたインスタンスが不正です。 |
Examples
ソースコード:
C# | Copy |
---|---|
using System; using System.Collections.Generic; using System.Text; using fvalgcli; namespace User.SampleCode.Array { public partial class UCHAR_ARRAY { /// <summary> /// インスタンスの複製 (固定長配列). /// </summary> [FvPluginExecute] public void CopyFrom_Array() { int countOrg = 10; // 0) 配列の作成. byte[] datas = new byte[countOrg]; for (int i = 0; i < countOrg; i++) { datas[i] = (byte)i; } // 1) インスタンスの準備と生成. FVIL.UCHAR_ARRAY src1 = new FVIL.UCHAR_ARRAY(datas); FVIL.UCHAR_ARRAY src2 = new FVIL.UCHAR_ARRAY(); // 2) 複製. src2.CopyFrom(src1); // 3) 確認. Assert.IsTrue(src1.Count == src2.Count, "src2.Count = {0}", src2.Count); fvalgcli.UCHAR_PTR ptr1 = src1.Address; fvalgcli.UCHAR_PTR ptr2 = src2.Address; for (int i = 0; i < src1.Count; i++) { Assert.IsTrue(ptr1[0] == ptr2[0], "src2[{0}]: {1}", i, ptr2[0]); ptr1 += 1; ptr2 += 1; } } /// <summary> /// インスタンスの複製 (可変長リスト). /// </summary> [FvPluginExecute] public void CopyFrom_List() { int countOrg = 10; // 0) 配列の作成. List<byte> list = new List<byte>(countOrg); for (int i = 0; i < countOrg; i++) { list.Add( (byte)i); } // 1) インスタンスの準備と生成. FVIL.UCHAR_ARRAY src1 = new FVIL.UCHAR_ARRAY(list); FVIL.UCHAR_ARRAY src2 = new FVIL.UCHAR_ARRAY(); // 2) 複製. src2.CopyFrom(src1); // 3) 確認. Assert.IsTrue(src1.Count == src2.Count, "src2.Count = {0}", src2.Count); fvalgcli.UCHAR_PTR ptr1 = src1.Address; fvalgcli.UCHAR_PTR ptr2 = src2.Address; for (int i = 0; i < src1.Count; i++) { Assert.IsTrue(ptr1[0] == ptr2[0], "src2[{0}]: {1}", i, ptr2[0]); ptr1 += 1; ptr2 += 1; } } } } |
Visual Basic | Copy |
---|---|
Imports System.Collections.Generic Imports System.Text Imports fvalgcli Namespace SampleCode.Array Public Partial Class UCHAR_ARRAY ''' <summary> ''' インスタンスの複製 (固定長配列). ''' </summary> <FvPluginExecute> _ Public Sub CopyFrom_Array() Dim countOrg As Integer = 10 ' 0) 配列の作成. Dim datas As Byte() = New Byte(countOrg - 1) {} For i As Integer = 0 To countOrg - 1 datas(i) = CByte(i) Next ' 1) インスタンスの準備と生成. Dim src1 As New FVIL.UCHAR_ARRAY(datas) Dim src2 As New FVIL.UCHAR_ARRAY() ' 2) 複製. src2.CopyFrom(src1) ' 3) 確認. Assert.IsTrue(src1.Count = src2.Count, "src2.Count = {0}", src2.Count) Dim ptr1 As fvalgcli.UCHAR_PTR = src1.Address Dim ptr2 As fvalgcli.UCHAR_PTR = src2.Address For i As Integer = 0 To src1.Count - 1 Assert.IsTrue(ptr1(0) = ptr2(0), "src2[{0}]: {1}", i, ptr2(0)) ptr1 += 1 ptr2 += 1 Next End Sub ''' <summary> ''' インスタンスの複製 (可変長リスト). ''' </summary> <FvPluginExecute> _ Public Sub CopyFrom_List() Dim countOrg As Integer = 10 ' 0) 配列の作成. Dim list As New List(Of Byte)(countOrg) For i As Integer = 0 To countOrg - 1 list.Add(CByte(i)) Next ' 1) インスタンスの準備と生成. Dim src1 As New FVIL.UCHAR_ARRAY(list) Dim src2 As New FVIL.UCHAR_ARRAY() ' 2) 複製. src2.CopyFrom(src1) ' 3) 確認. Assert.IsTrue(src1.Count = src2.Count, "src2.Count = {0}", src2.Count) Dim ptr1 As fvalgcli.UCHAR_PTR = src1.Address Dim ptr2 As fvalgcli.UCHAR_PTR = src2.Address For i As Integer = 0 To src1.Count - 1 Assert.IsTrue(ptr1(0) = ptr2(0), "src2[{0}]: {1}", i, ptr2(0)) ptr1 += 1 ptr2 += 1 Next End Sub End Class End Namespace |
Exceptions
Exception | Condition |
---|---|
System..::..InvalidCastException | 引数に指定されたインスタンスをこのクラスの型に変換できません。 |
System..::..NullReferenceException | 引数に null が指定されました。 |
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |