トップページ > プログラム > 2014年12月06日 > T3VPTifq

書き込み順位&時間帯一覧

7 位/244 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000003410008



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C#, C♯, C#相談室 Part85
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net

書き込みレス一覧

C#, C♯, C#相談室 Part85
588 :デフォルトの名無しさん[sage]:2014/12/06(土) 18:34:02.18 ID:T3VPTifq
C#を最近書いているのですがクラスの初期化の仕方がわかりません

1.
自動実装プロパティには初期値を設定する方法はないのでしょうか?
コンストラクタ内で設定するしかないのでしょうか?
例) private int member{ private get; private set; } = 0 ←こんな雰囲気で書きたい

2.
抽象クラスをメンバに持つ場合、初期化はどのようにすればよいのでしょうか?
例)
abstract class Base {}
class Sub1 : public Base {}
class Sub2 : public Base {}
class Sample {
  private Base obj { private get; private set; }
  private Sample()
  {
    obj = new Base(); //←抽象クラスだからインスタンスは作れない
  }
}

どなたか教えていただけませんでしょうか
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
69 :デフォルトの名無しさん[sage]:2014/12/06(土) 18:44:37.04 ID:T3VPTifq
例外について質問です

何種類かの例外クラスを投げうる関数を使うのに、tryブロックで囲みcatchしたあとの処理を共通化したいのですがどのように書けばいいですか?
今まではcatchをダラダラといくつか書いてたのですが、 catchしうる例外の種類が増えた時その関数を使う箇所全てのcatchを増やさないといけないことに気が付きました。
投げられる例外は必ずstd::exceptionを継承した例外クラスなので、とりあえずはstd::exceptionの参照でキャッチして、
受け取りうるエラークラスの型のオブジェクトを引数に取るようなポリモーフィックな関数で処理しようとしたのですがうまくいきません。
例外処理を共通化するにはどう実装すればよいですか?
C#, C♯, C#相談室 Part85
592 :デフォルトの名無しさん[sage]:2014/12/06(土) 18:59:50.13 ID:T3VPTifq
>>589-590
そうなるとSampleがSubに依存してしまうのが嫌だったのですが、それしか方法はないのですね
abstract class Base{}
class ConcreatBase : Base {}
class Sub1 : ConcreatBase {}
みたいにして基底クラスを一旦具象クラスにすることにします
ポインタがないのでなんか書きづらい…
C#, C♯, C#相談室 Part85
593 :デフォルトの名無しさん[sage]:2014/12/06(土) 19:00:38.72 ID:T3VPTifq
>>591
ありがとうございます!ヌルオブジェクトパターンで調べてみます!
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
73 :デフォルトの名無しさん[sage]:2014/12/06(土) 19:01:49.08 ID:T3VPTifq
>>70
なるほど、確かに
解決しました、有難うございました
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
74 :デフォルトの名無しさん[sage]:2014/12/06(土) 19:03:38.43 ID:T3VPTifq
>>72
これでcatcherを派生クラスごとに書いたんですがうまくいかないということでしたが、
一回try catchする関数でラップすることで解決しました
C#, C♯, C#相談室 Part85
595 :デフォルトの名無しさん[sage]:2014/12/06(土) 19:31:17.94 ID:T3VPTifq
>>594
もちろんそうするつもりだったのですが、Listを作りたかったのでデフォルトコンストラクタが必要で、
そのデフォルトコンストラクタの作り方に悩んだというのがきっかけでした
C#, C♯, C#相談室 Part85
599 :デフォルトの名無しさん[sage]:2014/12/06(土) 20:00:19.13 ID:T3VPTifq
>>596
すみません、いま手元にPCがないので試せないのですが、C#ではデフォルトコンストラクタがないクラスの空の配列を作れるのでしょうか?

List<MyClass> list; //MyClassのデフォルトコンストラクタがないとこの記述が許されないのでは

>>598
何種類かの表現形式をもつ小さいクラス群をひとまとめに扱うコンテナクラスをListにつめたいです
例えば、氏名、電話番号、性別をもつ個人情報クラスを作りたい
氏名クラスは抽象クラスで、普通の氏名クラス、ミドルネーム付き氏名クラスみたいな具象クラスがある
電話番号や性別も同様
具体的な個人情報クラスはビルダーパターンとかアブストラクトファクトリーパターンで作る
みたいなことがしたかったです


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。