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

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

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

全過去ログを検索

<< 0 >>
■6394  Re[2]: VSUG見られます?
□投稿者/ YAS -(2006/09/10(Sun) 21:07:49)

    分類:[雑談] 

    おぉ,すごい。もう何もなかったかのように復活しています。
記事No.6392 のレス /0過去ログ6より / 関連記事表示
削除チェック/

■2253  ODBCのエラー
□投稿者/ abi -(2007/03/28(Wed) 23:30:46)

    分類:[データベース全般] 

    お世話になっております、
    さて
    今回SQLを作成したのですが・・・・SQLplusではうまくいく構文なのですが
    ODBCでは ORA-600のエラーが出てしまいます・・・・

    回避もしくは何かよい解決方法はないでしょうか?


    select
    USER.ID ID
    ,min(USER.NAME) USER
    ,SYOUHIN.ITEM ITEM
    from
    SYOUHIN
    ,USER
    ,USER_BAY
    where
    USER.ID=USER_BAY.USER_ID
    and
    USER_BAY.SYOHIN=SYOUHIN.ID
    group by
    cybe(USER.ID,SYOUHIN.ITEM)



    USER.NAMEはverchar2(500)で、

    ,min(USER.NAME) USERを ,min(cast(USER.NAME as varchar(255))) USER
    でならうまくいきます、この方法以外で一回のSQLで仕上げたいのです。
    よろしくお願いいたします。
親記事 /過去ログ10より / 関連記事表示
削除チェック/

■10195  Re[3]: あなたの開発環境を教えてください
□投稿者/ Jitta on the way -(2007/11/13(Tue) 11:54:29)
    No10178 (れい さん) に返信
    > ■No10177 (Jitta さん) に返信
    >>■No10075 (倉田 有大 さん) に返信
    >>Pen.4 2.80GHz に 1GB の RAM 積んでます。
    >
    > 私はJitta先生のon the wayの時の環境が気になります。
    > もしよければ教えてください。

    先生じゃないもん
    先生は、妻のほうだもん


    基本的に電話
記事No.10075 のレス /過去ログ23より / 関連記事表示
削除チェック/

■13712  Re[2]: フォーム上のTextBoxのクリア処理を共通化したい。
□投稿者/ ポンデC# -(2008/02/02(Sat) 12:21:00)
    No13711 (れい さん) に返信
    > 2008/02/02(Sat) 12:14:26 編集(投稿者)
    >
    >
    > 普通こういう場合には空のクラスもモジュールも使いません。
    > Form1を変更するのです。
    >
    れいさんありがとうございます。
    と言うことは、Form1と言うForm内の処理はすべてForm1.cs内のフィールドで
    コーディングするということですか?
    とてつもなく長くなる場合などはどうすればよいでしょう?
    本などを見ると600行くらいに抑えましょうと書いてありましたが・・

記事No.13710 のレス /過去ログ29より / 関連記事表示
削除チェック/

■92246  メソッド内の一部のみ派生したクラスに変えたい
□投稿者/ tro -(2019/09/05(Thu) 10:23:00)

    分類:[.NET 全般] 

    2019/09/05(Thu) 10:24:48 編集(投稿者)
    2019/09/05(Thu) 10:24:07 編集(投稿者)

    基底クラスを使用するメソッド、派生クラスを使用するメソッドがそれぞれあるのですが、
    メソッドの処理内容がクラスの型以外共通でしたので、
    メソッドも一つに統一したいのですがいい方法はありますでしょうか。


    ・基底クラス
    public class TestBase
    {
     string ValueCommon {get; set;}
    }

    ・派生クラス
    public class TestA : TestBase
    {
     string ValueA {get; set;}
    }


    ・基底クラスを使用するメソッド
    public virtual void Func()
    {
     TestBase testBase = new TestBase
     {
      ValueCommon = "Test";
     }
    }

    ・派生クラスを使用するメソッド
    public override void Func()
    {
     TestA testA = new TestA
     {
      ValueCommon = "Test";
     }
    }
親記事 /過去ログ159より / 関連記事表示
削除チェック/

■92250  Re[1]: メソッド内の一部のみ派生したクラスに変えたい
□投稿者/ 魔界の仮面弁士 -(2019/09/05(Thu) 10:48:54)
    No92246 (tro さん) に返信
    > 基底クラスを使用するメソッド、派生クラスを使用するメソッドがそれぞれあるのですが、
    提示のクラスには、公開されたメンバーが何も無いような…。
    ValueCommon プロパティも ValueA プロパティも private スコープですよね?

    やりたい事以前に、元のコードがそもそも文法的に間違っているような気がします。


    > メソッドの処理内容がクラスの型以外共通でしたので、
    virtual void Func() と override void Func() は、
    TestBase / TestA に実装されているのでしょうか。
    それとも、別のクラスに実装されているのでしょうか。


    > TestBase testBase = new TestBase
    > {
    >  ValueCommon = "Test";
    > }
    セミコロンは「"Test"」の後ではなく、「}」に後に置くべきかと。


    > メソッドも一つに統一したいのですがいい方法はありますでしょうか。
    目的を正しく理解できているか自信が無いですが、
    ValueCommon 自体は基底側に持つ実装なので、
     「TestBase x = new TestBase { ValueCommon = "Test" };」
     「TestA x = new TestA { ValueCommon = "Test" };」
    ではなく、
     「TestBase x = new T { ValueCommon = "Test" };」
    にすれば、T の部分を置き換えるだけで済む気がします。

    T の指定を型パラメータで補うのか、Factory とするのかは状況次第。
記事No.92246 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92247  Re[1]: メソッド内の一部のみ派生したクラスに変えたい
□投稿者/ とっちゃん -(2019/09/05(Thu) 10:37:06)
    No92246 (tro さん) に返信
    > 基底クラスを使用するメソッド、派生クラスを使用するメソッドがそれぞれあるのですが、
    > メソッドの処理内容がクラスの型以外共通でしたので、
    > メソッドも一つに統一したいのですがいい方法はありますでしょうか。
    >
    > ・基底クラスを使用するメソッド
    > public virtual void Func()
    > {
    >  TestBase testBase = new TestBase
    >  {
    >   ValueCommon = "Test";
    >  }
    > }
    >
    > ・派生クラスを使用するメソッド
    > public override void Func()
    > {
    >  TestA testA = new TestA
    >  {
    >   ValueCommon = "Test";
    >  }
    > }
    >
    この2種類の Func() は外的にはどういう風に区別される想定なのでしょうか?

    一つに統一というのは、内部的にフラグなどで切り分けたいということでしょうか?

    例えば、こんな感じ。

    public void Func()
    {
    TestBase obj = null;
    if( IsUseTestA ) obj = new TestA;
    else obj = new TestBase;
    obj.ValueCommon = "Test";
    }

    オブジェクトの生成を外に出して、こんな感じにする方法もあります。

    public void Func( TestBase obj )
    {
    obj.ValueCommon = "Test";
    // 実際の処理
    }

    どっちにしても見えてる部分だけじゃ何がしたいのかがわからないので、
    具体的にどういう形にするのがいいか?がわかりません。
記事No.92246 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92248  Re[2]: メソッド内の一部のみ派生したクラスに変えたい
□投稿者/ とっちゃん -(2019/09/05(Thu) 10:37:40)
    あ、図表モードにしてなかった。。。orz
記事No.92246 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92252  Re[3]: メソッド内の一部のみ派生したクラスに変えたい
□投稿者/ tro -(2019/09/05(Thu) 11:24:43)
    2019/09/05(Thu) 11:27:00 編集(投稿者)
    2019/09/05(Thu) 11:26:07 編集(投稿者)

    <pre><pre>返信ありがとうございます。

    >この2種類の Func() は外的にはどういう風に区別される想定なのでしょうか?
    基底クラスを使用するFunc()はアプリA、派生クラスを使用するFunc()はアプリBで使用するという形になっています。
    基底クラス、及び基底クラスを使用するFunc()はアプリA、Bの共通dllに存在します。

    >一つに統一というのは、内部的にフラグなどで切り分けたいということでしょうか?
    従って共通のdllからは派生先のクラスは使用できませんので、フラグでの切り分けはできません。

    ソースコードの文法ミスがあり申し訳ございません。
    改めて書き直しました。

    ・基底クラス(アプリA、B共通、実際にはアプリAのみ使用)
    public class TestBase
    {
    public string ValueCommon {get; set;}
    }

    ・派生クラス(アプリBのみ)
    public class TestA : TestBase
    {
    public string ValueA {get; set;}
    }


    ・基底クラスを使用するメソッド(アプリA、B共通、実際にはアプリAのみ使用)
    public virtual void Func()
    {
    TestBase testBase = new TestBase
    {
    ValueCommon = "Test"
    };
    }

    ・派生クラスを使用するメソッド(アプリBのみ)
    public override void Func()
    {
    TestA testA = new TestA
    {
    ValueCommon = "Test"
    };
    }</pre></pre>
記事No.92246 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92254  Re[4]: メソッド内の一部のみ派生したクラスに変えたい
□投稿者/ 魔界の仮面弁士 -(2019/09/05(Thu) 11:50:03)
    No92252 (tro さん) に返信
    > 基底クラスを使用するFunc()はアプリA、派生クラスを使用するFunc()はアプリBで使用するという形になっています。
    > 基底クラス、及び基底クラスを使用するFunc()はアプリA、Bの共通dllに存在します。

    「virtual void Func()」は、TestBase 上に実装されているのでしょうか。
    それとも別のクラスで定義しているのでしょうか。

    「アプリA で使用する、共通dll 内の Func()」は何処に実装されているのでしょう。
    TestA でしょうか。あるいは、それらとは別のクラス内に実装されているのでしょうか。


    > public virtual void Func()
    > {
    >  TestBase testBase = new TestBase
    >  {
    >   ValueCommon = "Test"
    >  };
    > }
    > public override void Func()
    > {
    >  TestA testA = new TestA
    >  {
    >   ValueCommon = "Test"
    >  };
    > }

    インスタンスをセットしているのは、フィールド変数ではなく、ローカル変数なのですよね?
    スコープ的に、インスタンスを生成してすぐ破棄されているだけなので、
    メソッドの意図が良く分からないです…。

    ひとまず、Func をオーバーライドすること無く、同じような動作にしたいという話なら、たとえば

    // --- 基底実装 ---
     protected virtual TestBase Create() => new TestBase();
     public /* virtual */ void Func()
     {
      TestBase x = Create();
      x.ValueCommon = "Test";
     }

    // --- 派生実装 ---
     protected override TestBase Create() => new TestA();
     // Func() はもとの実装のままで OK

    のように書けます。
記事No.92246 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92255  Re[5]: メソッド内の一部のみ派生したクラスに変えたい
□投稿者/ tro -(2019/09/05(Thu) 12:31:42)
    No92254 (魔界の仮面弁士 さん) に返信
    > 「virtual void Func()」は、TestBase 上に実装されているのでしょうか。
    > それとも別のクラスで定義しているのでしょうか。

    はい、別のクラスに定義しています。

    > 「アプリA で使用する、共通dll 内の Func()」は何処に実装されているのでしょう。
    > TestA でしょうか。あるいは、それらとは別のクラス内に実装されているのでしょうか。

    こちらも共通dllの別のクラスになります。


    > インスタンスをセットしているのは、フィールド変数ではなく、ローカル変数なのですよね?
    > スコープ的に、インスタンスを生成してすぐ破棄されているだけなので、
    > メソッドの意図が良く分からないです…。

    ローカル変数であっています。


    > ひとまず、Func をオーバーライドすること無く、同じような動作にしたいという話なら、たとえば
    >
    > // --- 基底実装 ---
    >  protected virtual TestBase Create() => new TestBase();
    >  public /* virtual */ void Func()
    >  {
    >   TestBase x = Create();
    >   x.ValueCommon = "Test";
    >  }
    >
    > // --- 派生実装 ---
    >  protected override TestBase Create() => new TestA();
    >  // Func() はもとの実装のままで OK
    >
    > のように書けます。

    なるほど、ありがとうございます。
記事No.92246 のレス / END /過去ログ159より / 関連記事表示
削除チェック/

■96949  Re[6]: Microsoft edgeで検索したWeb ページの保存問
□投稿者/ 魔界の仮面弁士 -(2021/03/05(Fri) 14:34:26)
    No96944 (WebSurfer さん) に返信
    > 質問者さんのケースで何故質問にあった幼児になってしまったのかは謎です。

    No96934 の状況に至った理由は
    No96940 の後半の動作によるものだと推察しています。

    https://aka.ms/AAbe5cu

    ・前回保存した時の形式が MHTML であった場合、
     次回作業時にも、既定で MHTML 形式が選択される。
    ・しかしその場合も、初期入力されているファイル名の拡張子が
    .mht や .mhtml ではなく、.html になっている。
    ・ファイル形式を再選択しなおせば、正しい拡張子になる。
記事No.96931 のレス /過去ログ168より / 関連記事表示
削除チェック/

■102300  Re[2]: 抽象クラスを継承したクラスのインスタンスについて
□投稿者/ 高橋 -(2023/08/17(Thu) 13:23:38)
    魔界の仮面弁士さん、とっちゃんさん、WebSurferさん回答ありがとうございます。


    みなさん、既存の機能を使うことをおすすめということはそもそも独自に設定クラスを用意しようとしている点がよくないんでしょうね。
    ただ、後述いたしますがおっしゃっている通り、私の理解・説明不足からXY問題になっている気もします。
    みなさんの回答を下に改めて質問を分解すると以下の2点になるんだと思います。
    (1)Properties.settings等に定数を記載しようとするとコピペが増えて不便ではないでしょうか。
    (2)Properties.settingsとか、独自に設計したstaticな設定クラスはインスタンスを作る必要がないのに、抽象クラスを継承した設定クラスではインスタンスを作らなければならないのはなんか違和感がありますがそういうものでしょうか。
    ※Properties.settingsしか使ったことがないのでProperties.settingsを例にしておりますが、その他の既存機能でも多分同様の疑問です。



    魔界の仮面弁士さん

    紹介いただいたリンクを拝見させていただきました。
    Microsoft.Extensions.Configurationは初耳なのでしたが便利そうですね。
    (まだ理解しきれていないので)これ使いますとは即答しかねるのですが後で熟読して使えないか頑張ってみます。

    DIについても以下のページを下に雰囲気は理解しました。
    ただ、interface使ったことないので雰囲気しか理解できていませんが、確かに目的の一部には合致するように感じます。
    https://qiita.com/okazuki/items/a0f2fb0a63ca88340ff6


    とっちゃんさん

    できるだけProperties.settingsなど既存の機能を利用するということは考えます。
    (既存の機能で達成できるような簡便なものについて)設定ファイルをstaticに使うこと自体が標準的な設計ではなさそうという理解をいたしました。



    WebSurferさん

    >組み込みの機能として利用できる Settings.settings から情報を取得方法すれば済むと思うのですが、それを使わない理由は何でしょう?
    (Properties.SettingsとSettings.settingsは同じものを指しているという認識でいいんでしょうか?)
    プロジェクトを複数作成するとプロジェクトの分だけSettings.settingsを記載する必要が出ますよね?
    その場合、プロジェクトごとに大量のコピペが発生しそうでコピペはすればするほどメンテナンス性が低下するからよくないという認識でいるのでよくないことだと思っておりました。


    >なぜ abstract を継承するのかとか、なぜ static にできないのが問題なのかとかが理解
    >できていませんが・・・ (なんとなく、XY 問題ではないかという気がします)
    「abstractを継承したい件」と「なぜstaticにできないのが問題なのかの件」はおそらく、2つの件なのでそれぞれ記載いたします。


    以下、改めて質問を分解して記載しています。
    ・abstractを継承したい件
    「(1)Properties.settings等に定数を記載しようとするとコピペが増えて不便ではないでしょうか。」という疑問
    仮に
    (1)全プロジェクトに共通の文字列(保存先フォルダ名等)が100個
    (2)各プロジェクトに共通ではないが必ず存在する文字列(保存ファイル名等)が各10個
    (3)各プロジェクトが独自に持っていたりもっていなかったりする文字列(各プロジェクト独自の定数)が各0個〜30個
    あるとすると

    【Settings.settingsなど、既存の機能を使用する場合】
    (1) ⇒ 完全にコピペで可
    (2) ⇒ コピペした後パラメーターのみの変更で可
    (3) ⇒ 完全に独自に記載が必要になるので

    【抽象クラスを用意する場合】
    (1) ⇒ 抽象クラスで定義して変更なし。
    (2) ⇒ 抽象クラスで定義しつつ、継承先で変更
    (3) ⇒ 継承先で独自に定義

    という理解なので抽象クラスにすればコピペする必要がなくメンテナンス性が高く記載できると考えておりました。


    ・なぜstaticにできないのが問題なのかの件
    「(2)Properties.settingsとか、(中略)違和感がありますがそういうものでしょうか。」という疑問
    厳密には問題ではなく疑問なので、「抽象クラスと継承されたクラスとはそういうものである。」と言われたら納得するのですが
    上記のような設計の場合、プログラム段階で定義するのでstaticにできそうなのにできないんでしょうか。


    うまくお伝えできていないようなのですがこれで過不足なく説明できているでしょうか。
記事No.102293 のレス /過去ログ178より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -