C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.41366 の関連記事表示

<< 0 >>
■41366  Re[4]: C#における値渡しと参照渡しのコーディングについて
□投稿者/ simano -(2009/09/18(Fri) 14:49:15)
    No41356 (渋木宏明(ひどり) さん) に返信
    >> data.MyClass = MyClass; // Class(プロパティ)を設定。値は「参照渡し」される。
    >> data.MyStruct = MyStruct; // Struct(プロパティ)を設定。値は「値渡し」される。
    >
    > 微妙に違います。
    > 弁士さんの解説を読み直してみてください。

    確かに、微妙に違ってますね;すみません。
    ですが、「参照渡しを行いたい需要もある」、
    という点では変わらないのではないでしょうか。
    コーディングの癖を直せばいいといえばそれまでなのですが。

    >>■ネットワーク通信などで、エラー検出とデータの読み込みを同時に行いたい場合
    >>C#には検査例外がないという理由から、
    >>エラー結果を検出する手段として、メソッドの戻り値を使うことが一般的なようです。
    >
    > なことないです。
    > 標準クラスライブラリに含まれているクラス/コンポーネントの類は、通信エラーを例外で表現しています。
    >
    >> public bool ReadSQLInfo(MySQLInfo info)
    >
    > こんな書き方(成否を bool で返す)しません。
    > ReadSQLInfo は、MySQLInfo のインスタンスを返すように設計します。
    >

    勉強不足ですみません。
    ネットワーク通信の結果を例外のみに任せるべきということですね。
    ただ、それは、検査例外がない言語では、扱いにくいのでは?と考えた結果が上記の処理でした。

    例えば、サーバと通信して、「実データ」と「結果値」を受ける仕様になっているとします。
    「結果値」が「クライアントから受けた値が不正です」だった場合の処理を書いてみました。
    ----------
    public MyData GetFromServer(int arg)
    {
    // 略
    try {
    // サーバとのソケット通信。引数に"arg"を渡す。
    }
    catch (Exception e)
    {
    throw;
    }

    MyData data = new MyData();
    data = Server_DataBytes_Value; // サーバの返した実データを渡す。

    int val = Server_Return_Value; // サーバの返した結果値を渡す。
    if (val == ILLEGAL_ARG) // 「クライアントから受けた値が不正です」などのエラー値。
    {
    throw new MyServerException(val); // 自作の例外クラス
    }
    }
    ----------

    上記の場合、通信を行っているクラスがアプリケーションの直下にあればいいですが、
    dllだったら例外のパターンを把握するのも一苦労だと思います。
    後でいつのまにか例外の種類が変わってたらcatchできません。

    そこで、「結果値」は、戻り値として返す処理が適切なのかなと思いました。

    論点がずれてしまいました…;
    例外処理については、自分の中でまだ未消化でして、思慮が浅いのだと思います。
    上記の考え違いがありましたら、ご指摘願えないでしょうか。

    >Java や C++ を、C 言語的な目線で習得したような印象を受けます。

    いえ、C言語はほとんどやってません。
    それだけに、Javaに似てるのかと思ったら、内実はC言語の流れなのか…?等々悩んでるうちに、
    だんだん変な方向に突き進んでいるのかもしれません;
記事No.41320 のレス /過去ログ71より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -