- PR -

【C#】メソッドのパラメータをキャストして参照渡しする方法

1
投稿者投稿内容
daikoku
常連さん
会議室デビュー日: 2005/09/22
投稿数: 21
投稿日時: 2007-10-04 19:38
質問させて頂きます。

以下が開発環境です。
OS:Windows XP SP2
開発環境:VS2005 C#

件名の通り、メソッドのパラメータをキャストして参照渡しする方法が
無いかどうかを調べております。

とりあえず理想で記述してみた@のプログラムです。
fileAはfileBを継承すると仮定します。
*********************************************
@
private void test1()
{
fileA a = null;
test( ref(fileB)a );
textBox.text = a.data.ToString();
}
public void test2(ref fileB ins)
{
  ins.data = 1;
}
*********************************************
ビルドすると構文的に不正となりコンパイルエラーになります。


他のやり方として、一端「a」をfileBの変数にキャストして
入れてやり、「test1」に渡してやれば出来はします。
上記のやり方で記述したAプログラムです。
*********************************************
A
private void test1()
{
fileA a = null;
fileB b = (fileB)a;
test(ref b);
a = (fileA)b;
textBox.text = a.data.ToString();
}
public void test2(ref fileB ins)
{
a.data = 1;
}
*********************************************

Aで出来ないことは無いと思うのですが、呼び出す度に
入れ替えを行う事は極力避けたいと思っています。

というのはイメージとして「test1」がアプリケーション処理で
「test2」が共通ライブラリの処理というイメージなのですが
極力アプリケーションに処理を書かせたくないという思いです。


レベル低い質問で申し訳ありませんが
もしなにか良い方法あれば、御教授いただければ幸いです。
それでは宜しくお願い致します。
いわた
会議室デビュー日: 2005/10/07
投稿数: 16
投稿日時: 2007-10-04 19:49
どうも。いわたといいます。

出来ないと思いますが、そもそもTest2の内部でインスタンスを生成したりするのでなければrefは不要ではないですか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-10-04 20:18
いわたさんに同意

参照型の参照渡しをする必要がありますか?
1

スキルアップ/キャリアアップ(JOB@IT)