Skip to content

[PROPOSE]:readonlyな引数 #15

@taiseiue

Description

@taiseiue

readonlyな引数

概要

関数の引数にreadonly修飾子をつけれるようにする。

void Func(readonly ref var v)
{
     //...
}

Func(ref v);

動機

大きな引数を扱うとき、参照渡しを使うことで効率が向上するが、その副作用として関数内部で値が書き換えられてしまうという問題があった。readonlyな引数の導入によって値のコピーは防ぎつつ、呼び出し先の関数で内容を変更できないようにしたい。

詳細設計

引数が参照渡しされているときには、関数内部でreadonly文を使って囲んだのと同じ動作にする。
また、参照渡しでないときには、コピーした値をreadonlyとしてマークする。

欠点

前例

未確定の設計

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestimplementedサンプル実装済みrelease-noteリリースノートに反映済み

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions