【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

一番下のコード1の様にクラス内に多数のプロパティが存在する場合
ジャンルで分ける方法が知りたいです。

イメージとしては、Television TV = new Television();でクラスのインタンスを作って
TV.Ch1_30.Ch1="値"、TV.Ch1_30.Ch2="値"のようにアクセスしたいんです。

Televisonクラスの中に、Ch1_30クラスを作ってやればジャンル分け自体は出来ますが
インスタンス化するときにTelevision TV = new Television();ではなくて
Television.Ch1_30 TV = new Television.Ch1_30()としなければいけなくなります。
そうではなくて、あくまでTelevision TV = new Television();からアクセスしたいんです。
イメージとしては以下の様な感じで使いたいんです。

 Television TV = new Television();
 TV.Ch1_30.Ch1="値";
 TV.Ch1_30.Ch2="値";
 TV.CH31-60.Ch31="値";

Namespaceだと、classの中には書けないので使えませんし、どうすればいいんでしょうか?
わかりにくい箇所がありましたら、補足させていただきます。
ご回答よろしくお願いします。

----------------------------------------------------------------------
■コード1

public class Television{
 private string Ch1_str = "";
 public string Ch1 {
  get { return Ch1; }
  set { Ch1 = value; }
 }

 private string Ch2_str = "";
 public string Ch2 {
  get { return Ch2; }
  set { Ch2 = value; }
 }

 private string Ch3_str = "";
 public string Ch3 {
  get { return Ch3; }
  set { Ch3 = value; }
 }

 (以降、ch100まで続く.......)
}

質問者からの補足コメント

  • HAPPY

    試しにやってみたら、一発で出来ました!!!
    こういうやり方があるんですね。すぐに解決できて本当にありがとうございます。

    ---------------------------------------------------------------------------
    public class Tv {
      public h1_30 h1_30;
    }
    public class h1_30 {
     public string Ch1 { get; set; }
     public string Ch2 { get; set; }
    }

    private void Form1_Load(object sender, EventArgs e) {
     Tv tv = new Tv();
     tv.h1_30.Ch1 = "NHK";
     tv.h1_30.Ch2 = "フジテレビ";
    }

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/02/15 09:06

A 回答 (1件)

>Televisonクラスの中に、Ch1_30クラスを作ってやればジャンル分け自体は出来ますが


>インスタンス化するときにTelevision TV = new Television();ではなくて
>Television.Ch1_30 TV = new Television.Ch1_30()としなければいけなくなります。
>そうではなくて、あくまでTelevision TV = new Television();からアクセスしたいんです。

Ch1_30をTelevisionクラスのフィールドにして、そのフィールドからアクセスする…とか?

Ch1_30クラスを作成して、そのプロパティとしてCh1,Ch2,…を作成する。
で、TelevisionクラスにCh1_30クラスのフィールドを設定してTelevisionクラスのコンストラクタでnewしてフィールドに設定する。
ってところでしょうかね?


> private string Ch1_str = "";
> public string Ch1 {
>  get { return Ch1; }
>  set { Ch1 = value; }
> }

さりげなく間違っているような???
private string Ch1_strは使っていないですよね?
アクセサーで制限とかしないならプロパティの設定だけで済むと思いますよ。

 public string Ch1 { get; set; }
だけでプロパティになるかと。
http://www.atmarkit.co.jp/fdotnet/dotnettips/735 …
http://ufcpp.net/study/csharp/oo_property.html
この回答への補足あり
    • good
    • 0
この回答へのお礼

素早いご回答ありがとうございます。
確かにコードが間違ってますね。以下のように書こうとして間違えました。
 private string Ch1_str = "";
 public string Ch1 {
  get { return Ch1_str; }
  set { Ch1_str = value; }
 }

>Ch1_30クラスを作成して、そのプロパティとしてCh1,Ch2,…を作成する。
>で、TelevisionクラスにCh1_30クラスのフィールドを設定してTelevisionクラスのコンストラクタでnewしてフィールドに設定する。

フィールドについていまいち理解できてないので
ちょっと勉強して試してみます。

お礼日時:2016/02/15 08:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報