インスタンスの複製
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 メンバを参照してください。
エラーコード:
インスタンスの型は同一である必要があります。 型の異なるインスタンスや 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 FCOMPLEX_ARRAY { /// <summary> /// インスタンスの複製 (固定長配列). /// </summary> [FvPluginExecute] public void CopyFrom_Array() { int countOrg = 10; // 0) 配列の作成. fvalgcli.FCOMPLEX[] datas = new fvalgcli.FCOMPLEX[countOrg]; for (int i = 0; i < countOrg; i++) { datas[i].real = i * 10 + i; datas[i].image = i * 10 + i; } // 1) インスタンスの準備と生成. FVIL.FCOMPLEX_ARRAY src1 = new FVIL.FCOMPLEX_ARRAY(datas); FVIL.FCOMPLEX_ARRAY src2 = new FVIL.FCOMPLEX_ARRAY(); // 2) 複製. src2.CopyFrom(src1); // 3) 確認. Assert.IsTrue(src1.Count == src2.Count, "src2.Count = {0}", src2.Count); fvalgcli.FCOMPLEX_PTR ptr1 = src1.Address; fvalgcli.FCOMPLEX_PTR ptr2 = src2.Address; for (int i = 0; i < src1.Count; i++) { Assert.IsTrue( ptr1[0].real == ptr2[0].real && ptr1[0].image == ptr2[0].image, "src2[{0}]: x={1},y={2})", i, ptr2[0].real, ptr2[0].image); ptr1 += 1; ptr2 += 1; } } /// <summary> /// インスタンスの複製 (可変長リスト). /// </summary> [FvPluginExecute] public void CopyFrom_List() { int countOrg = 10; // 0) 配列の作成. List<fvalgcli.FCOMPLEX> list = new List<fvalgcli.FCOMPLEX>(countOrg); for (int i = 0; i < countOrg; i++) { list.Add( fvalgcli.FCOMPLEX.init( i * 10 + i, i * 10 + i)); } // 1) インスタンスの準備と生成. FVIL.FCOMPLEX_ARRAY src1 = new FVIL.FCOMPLEX_ARRAY(list); FVIL.FCOMPLEX_ARRAY src2 = new FVIL.FCOMPLEX_ARRAY(); // 2) 複製. src2.CopyFrom(src1); // 3) 確認. Assert.IsTrue(src1.Count == src2.Count, "src2.Count = {0}", src2.Count); fvalgcli.FCOMPLEX_PTR ptr1 = src1.Address; fvalgcli.FCOMPLEX_PTR ptr2 = src2.Address; for (int i = 0; i < src1.Count; i++) { Assert.IsTrue(ptr1[0].real == ptr2[0].real && ptr1[0].image == ptr2[0].image, "src2[{0}]: x={1},y={2})", i, ptr2[0].real, ptr2[0].image); ptr1 += 1; ptr2 += 1; } } } } |
Visual Basic | Copy |
---|---|
Imports System.Collections.Generic Imports System.Text Imports fvalgcli Namespace SampleCode.Array Public Partial Class FCOMPLEX_ARRAY ''' <summary> ''' インスタンスの複製 (固定長配列). ''' </summary> <FvPluginExecute> _ Public Sub CopyFrom_Array() Dim countOrg As Integer = 10 ' 0) 配列の作成. Dim datas As fvalgcli.FCOMPLEX() = New fvalgcli.FCOMPLEX(countOrg - 1) {} For i As Integer = 0 To countOrg - 1 datas(i).real = i * 10 + i datas(i).image = i * 10 + i Next ' 1) インスタンスの準備と生成. Dim src1 As New FVIL.FCOMPLEX_ARRAY(datas) Dim src2 As New FVIL.FCOMPLEX_ARRAY() ' 2) 複製. src2.CopyFrom(src1) ' 3) 確認. Assert.IsTrue(src1.Count = src2.Count, "src2.Count = {0}", src2.Count) Dim ptr1 As fvalgcli.FCOMPLEX_PTR = src1.Address Dim ptr2 As fvalgcli.FCOMPLEX_PTR = src2.Address For i As Integer = 0 To src1.Count - 1 Assert.IsTrue(ptr1(0).real = ptr2(0).real AndAlso ptr1(0).image = ptr2(0).image, "src2[{0}]: x={1},y={2})", i, ptr2(0).real, ptr2(0).image) 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 fvalgcli.FCOMPLEX)(countOrg) For i As Integer = 0 To countOrg - 1 list.Add(fvalgcli.FCOMPLEX.init(i * 10 + i, i * 10 + i)) Next ' 1) インスタンスの準備と生成. Dim src1 As New FVIL.FCOMPLEX_ARRAY(list) Dim src2 As New FVIL.FCOMPLEX_ARRAY() ' 2) 複製. src2.CopyFrom(src1) ' 3) 確認. Assert.IsTrue(src1.Count = src2.Count, "src2.Count = {0}", src2.Count) Dim ptr1 As fvalgcli.FCOMPLEX_PTR = src1.Address Dim ptr2 As fvalgcli.FCOMPLEX_PTR = src2.Address For i As Integer = 0 To src1.Count - 1 Assert.IsTrue(ptr1(0).real = ptr2(0).real AndAlso ptr1(0).image = ptr2(0).image, "src2[{0}]: x={1},y={2})", i, ptr2(0).real, ptr2(0).image) ptr1 += 1 ptr2 += 1 Next End Sub End Class End Namespace |
Exceptions
Exception | Condition |
---|---|
System..::..InvalidCastException | 引数に指定されたインスタンスをこのクラスの型に変換できません。 |
System..::..NullReferenceException | 引数に null が指定されました。 |
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |