ドロップダウンラベルでByRefとByValを参照するにはどうすればよいですか?[閉まっている]


9

MSDNのページのByRefByValキーワードは非常に有用ではありません。なんとかスキップしない限り、どこでも単に「キーワード」と呼ばれています。

主な要因の一つRubberduckのプロジェクトは非常にクールに取り組んでいるカプセル化フィールドのリファクタリングを、と私はのドロップダウン上記のラベルに問題が持っている以外UIはかなりきれい..沿って来ているByRef/ ByVal「アクセシビリティ」と言う、と。

Rubberduckの「カプセル化フィールド」リファクタリングダイアログ

私は他の場所でそれを使用しているので、私は「アクセシビリティ」好きではないPublic/ Private/ Friendそれは、より正確な感じアクセス修飾子。

IMOは「アクセス修飾子」の略なので、「修飾子」を使用したくありません。

そのラベルを正確にしたいのですが、語彙が不足しているようで、これらのキーワードを何と呼ぶべきかわかりません。

正確に言うと、このラベルは何を言うべきですか?私が探している言葉は何ですか?「キーワードの家族は」何をByRef/ ByValに属し?


2
コメントの1つが言うように、それはまったく存在すべきではありません-プロパティのByRefは少し異常です。可能であっても、それは悪です-知らないうちに呼び出し元の変数を変更することができます。
jmoreno

"VBユニバース"(特にVBAではない)の多くのドキュメントでは、これを "受け渡しメカニズム"と呼んでいるようです。
Damien_The_Unbeliever

@jmoreno完全に同意します。私はそれを作るだろうByValにそれを変更する可能性なしにByRef、手動で生成されたコードを編集する以外、および「問題は解決しました」!VBAはあなたが知っている途方もない量の邪悪なナンセンスをコンパイルできます:-)それでも、これらのキーワードに名前を付けるオンラインの場所がついにあるのが好きです。
Mathieu Guindon 2015

回答:


14

この場合、「Pass As」(または「Pass」)を使用します。

この使用法に完全に一致するフローがあります。

  • 変数名:foo
  • パス: ByVal / パス: ByRef

これはあなたのワークフローに完全に適合し、偶然にもあなたが参照する記事が示すとおりです。

オプションを読むと、「Pass As」を使用すると、見出しを読み、適切にテキストを選択できるため、「「変数名」foo、「Pass As」の値」と完全に読み取ります。

少し読みやすくしたい場合は、ターゲットユーザーがVBAプログラマーか、ByValおよびByRefキーワードに少し慣れていない可能性がある非VBAプログラマーかに応じて、リストオプションを「値」と「参照」にすることができます。

または、「パス:」に変更して、ドロップダウンで「参照(ByRef)」および「値(ByVal)」に変更します。ドロップダウンにこのすべてのテキストを表示するスペースがあるようです。または、ByRef / ByValキーワードのみ。


「Pass as ByVal」または「Pass by Value」を使用します。「Pass by ByVal」は奇妙に聞こえます。
user253751

@immibisグッドコール!
エンダーランド

3
また、選択肢が非常に少ない場合は、ドロップダウンの代わりにラジオボタンを検討することもできます。
キラレッサ、2015

@Kyralessaチャットでもマットに言ったとおりです。そして、私は彼らが最終的な設計のために何をしたかを考えています:-)
エンダーランド

5

私はこれら3つの用語のいずれかを使用して、それを選択するドロップダウンにラベルを付けます。

  1. 意味論
  2. 通り過ぎる
  3. パラメータ修飾子

「セマンティクス」が好き
Mathieu Guindon

「パラメーター修飾子」が好きです。

3

「Pass By Semantics」は、おそらくあなたが探しているものに最も近いものです。


私のスピーディーな配達の帽子を盗んでいます!イーイービル!
Jimmy Hoffa

2
私はすでにこれを持っています、あなたにこれをあなたに与えて幸せです...
Oded

3

このための最も正確で正式な用語は、「エイリアスのセマンティクス」です。

ByRefが使用されている場合、関数内の名前は呼び出し元の変数のエイリアスです。いずれかに対するすべての変更は、すぐに他方に表示されます。ではByVal、関数内の名前は呼び出し元の変数の個別のコピーです(もちろん、呼び出し元と関数の両方のコピーが同じオブジェクトを参照する場合がありますが、関数内でパラメーターを再割り当てしても呼び出し元の変数は再割り当てされないという点で異なります) )。

オプションは

  • エイリアス(ByRef
  • コピー(ByVal

一部のプラットフォームでは、3番目の可能性が追加されます。この場合、呼び出し元の変数のエイリアスが実行されますが、複数のパラメーターが重複するオブジェクトにエイリアスを設定することはできません。(C restrictキーワードの背後にある考え方は、属性キーワードがであるIDLでも見つかりますunique)。.NETには、この知識をエンコードする適切な方法がありません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.