예제 #1
0
        /// <summary>
        /// リストまたはタプルにインデクスでアクセスします。境界チェックは行われません。
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public QiValue this[int index]
        {
            //TODO: Map型でキーが整数だった場合、とかどう思いますかね
            get
            {
                switch (ContentValueKind)
                {
                case QiValueKind.QiList:
                    return(QiApiValue.GetList(NonDynamicValue, (uint)index));

                case QiValueKind.QiTuple:
                    return(QiApiValue.GetTuple(NonDynamicValue, (uint)index));

                default:
                    throw new InvalidOperationException("QiValue is neither list or tuple");
                }
            }
            set
            {
                switch (ContentValueKind)
                {
                case QiValueKind.QiList:
                    QiApiValue.SetList(NonDynamicValue, (uint)index, value);
                    return;

                case QiValueKind.QiTuple:
                    QiApiValue.SetTuple(NonDynamicValue, (uint)index, value);
                    return;

                default:
                    throw new InvalidOperationException("QiValue is neither list or tuple");
                }
            }
        }