配列の移動

Namespace: FVIL
Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)

Syntax

C#
public virtual Object MoveFrom(
	Object object
)
Visual Basic
Public Overridable Function MoveFrom ( 
	object As Object
) As Object

Parameters

object
Type: System..::..Object
移動元のインスタンス

Return Value

Type: Object
配列移動後の自身のインスタンスを返します。

Remarks

引数に指定されたインスタンスが保有する配列のアドレスをこのインスタンスへ移動します。 移動元のインスタンスは Clear()()()() が実行されます。
インスタンスの型は同一である必要があります。 型の異なるインスタンスや null が指定された場合は System の例外が発行されます。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。


エラーコード:
ErrorCode メンバ内容
11FVIL.ErrorCode.INVALID_PARAMETER引数に指定された値が不正です。

Examples

ソースコード:
C# Copy imageCopy
using System;
using System.Collections.Generic;
using System.Text;
using fvalgcli;

namespace User.SampleCode.Array
{
    public partial class USHORT_ARRAY
    {
        /// <summary>
        /// 配列の移動.
        /// </summary>
        [FvPluginExecute]
        public void MoveFrom()
        {
            int countOrg = 10;

            // 0) 配列の作成.
            List<ushort> list = new List<ushort>(countOrg);

            for (int i = 0; i < countOrg; i++)
            {
                list.Add((ushort)(i * 10 + i));
            }

            // 1) インスタンスの準備と生成.
            FVIL.USHORT_ARRAY src1 = new FVIL.USHORT_ARRAY(list);
            FVIL.USHORT_ARRAY src2 = new FVIL.USHORT_ARRAY();

            fvalgcli.USHORT_PTR srcAddress = src1.Address;
            int srcCount = src1.Count;
            bool srcIsAttach = src1.IsAttach;

            // 2) 配列の移動.
            src2.MoveFrom(src1);

            // E) 確認

            // 移動元のインスタンスはClear()が実行される.
            Assert.IsTrue(src1.Address == fvalgcli.USHORT_PTR.Zero, "src1.Address = {0}", src1.Address);
            Assert.IsTrue(src1.Count == 0, "src1.Count = {0}", src1.Count);
            Assert.IsTrue(src1.IsAttach == false, "src1.IsAttach = {0}", src1.IsAttach);

            // 移動後のインスタンス.
            Assert.IsTrue(src2.Address == srcAddress, "src2.Address = {0}", src2.Address);
            Assert.IsTrue(src2.Count == srcCount, "src2.Count = {0}", src2.Count);
            Assert.IsTrue(src2.IsAttach == srcIsAttach, "src2.IsAttach = {0}", src2.IsAttach);

            fvalgcli.USHORT_PTR ptr2 = src2.Address;
            for (int i = 0; i < src2.Count; i++)
            {
                Assert.IsTrue(list[i] == ptr2[0],
                            "src2[{0}]: {1}", i, ptr2[0]);

                Console.WriteLine("src2[{0}]: {1}", i, ptr2[0]);
                ptr2 += 1;
            }
        }
    }
}


Visual Basic Copy imageCopy
Imports System.Collections.Generic
Imports System.Text
Imports fvalgcli

Namespace SampleCode.Array
    Public Partial Class USHORT_ARRAY
        ''' <summary>
        ''' 配列の移動.
        ''' </summary>
        <FvPluginExecute> _
        Public Sub MoveFrom()
            Dim countOrg As Integer = 10

            ' 0) 配列の作成.
            Dim list As New List(Of UShort)(countOrg)

            For i As Integer = 0 To countOrg - 1
                list.Add(CUShort(i * 10 + i))
            Next

            ' 1) インスタンスの準備と生成.
            Dim src1 As New FVIL.USHORT_ARRAY(list)
            Dim src2 As New FVIL.USHORT_ARRAY()

            Dim srcAddress As fvalgcli.USHORT_PTR = src1.Address
            Dim srcCount As Integer = src1.Count
            Dim srcIsAttach As Boolean = src1.IsAttach

            ' 2) 配列の移動.
            src2.MoveFrom(src1)

            ' E) 確認

            ' 移動元のインスタンスはClear()が実行される.
            Assert.IsTrue(src1.Address = fvalgcli.USHORT_PTR.Zero, "src1.Address = {0}", src1.Address)
            Assert.IsTrue(src1.Count = 0, "src1.Count = {0}", src1.Count)
            Assert.IsTrue(src1.IsAttach = False, "src1.IsAttach = {0}", src1.IsAttach)

            ' 移動後のインスタンス.
            Assert.IsTrue(src2.Address = srcAddress, "src2.Address = {0}", src2.Address)
            Assert.IsTrue(src2.Count = srcCount, "src2.Count = {0}", src2.Count)
            Assert.IsTrue(src2.IsAttach = srcIsAttach, "src2.IsAttach = {0}", src2.IsAttach)

            Dim ptr2 As fvalgcli.USHORT_PTR = src2.Address
            For i As Integer = 0 To src2.Count - 1
                Assert.IsTrue(list(i) = ptr2(0), "src2[{0}]: {1}", i, ptr2(0))

                Console.WriteLine("src2[{0}]: {1}", i, ptr2(0))
                ptr2 += 1
            Next
        End Sub
    End Class
End Namespace

Exceptions

ExceptionCondition
System..::..InvalidCastException引数に指定されたインスタンスをこのクラスの型に変換できません。
System..::..NullReferenceException引数に null が指定されました。
FVIL..::..CFviExceptionこの例外の原因については、上記のエラーコード表をご参照ください。

See Also