次の方法で共有


Seq.readonly<'T> 関数 (F#)

指定したシーケンス オブジェクトに処理を代行させる新しいシーケンス オブジェクトを作成します。これにより、元のシーケンスが型キャストで再検出されて変更されることがなくなります。たとえば、配列を指定した場合、返されたシーケンスは配列の要素を返しますが、返されたシーケンス オブジェクトを配列にキャストすることはできません。

名前空間/モジュール パス: Microsoft.FSharp.Collections.Seq

アセンブリ: FSharp.Core (FSharp.Core.dll 内)

// Signature:
Seq.readonly : seq<'T> -> seq<'T>

// Usage:
Seq.readonly source

パラメーター

  • source
    型: seq<'T>

    入力シーケンス。

例外

例外

状態

ArgumentNullException

入力シーケンスが null の場合にスローされます。

戻り値

結果のシーケンス。

解説

この関数は、コンパイルされたアセンブリでは ReadOnly という名前です。F# 以外の言語から、またはリフレクションを使用してこの関数にアクセスする場合は、この名前を使用します。

使用例

Seq.readonly を使用して、変更可能な配列の変更不可のビューを作成するコードを次に示します。

type ArrayContainer(start, finish) =
    let internalArray = [| start .. finish |]
    member this.RangeSeq = Seq.readonly internalArray
    member this.RangeArray = internalArray

let newArray = new ArrayContainer(1, 10)
let rangeSeq = newArray.RangeSeq
let rangeArray = newArray.RangeArray
// These lines produce an error: 
//let myArray = rangeSeq :> int array
//myArray.[0] <- 0
// The following line does not produce an error. 
// It does not preserve encapsulation.
rangeArray.[0] <- 0

プラットフォーム

Windows 8、Windows 7、Windows Server 2012 で Windows Server 2008 R2

バージョン情報

F# コア ライブラリのバージョン

サポート: ポータブル 2.0、4.0

参照

関連項目

Collections.Seq モジュール (F#)

Microsoft.FSharp.Collections 名前空間 (F#)