C# Listクラスにクラスを追加したいがエラー

このQ&Aのポイント
  • C# Listクラスにクラスを追加する際に起きるエラーについて解説します。
  • エラーメッセージとその原因について説明します。
  • 正しいコードの書き方を示し、エラーを解消する方法について説明します。
回答を見る
  • ベストアンサー

C# Listクラスにクラスを追加したいがエラー

以下のようなコードを書いたのですが (A)(B)の箇所で (A) error CS1513: } が必要です。 (B) /error CS1022:型、名前空間の定義、またはファイルの終わりが必要です。 というエラーになるのですが、なにが間違っているのでしょうか。 --------------------------------------------------- using System; using System.Collections.Generic; namespace My {  class MyClass  {   public static void Main()   { // <--- (A)    public List<Book> myList = new List<Book>    {     new Book(){ title = "ABC", price = 1000 },     new Book(){ title = "DEF", price = 2000 }    };   }  }  class Book  {   //プロパティの自動実装   public string title { get; set; }   public decimal price { get; set; }  } } // <--- (B) ---------------------------------------------------

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8526/19383)
回答No.1

publicの付け方が間違ってないか?

yam2012
質問者

お礼

Addメソッドでも、コレクション初期化子でも、 何をやっても駄目なので変だなと思っていたら こんなところに原因が・・・ ありがとうごさいました。

関連するQ&A

  • C#クラスについて教えてください

    下記通りクラスを作成した場合、プロパティaを配列にできますか? class Class1 { public string a { set; get; } public int b { set; get; } public int c { set; get; } } イメージとしては下記通りにしたいのですが、なかなかうまく行きません。 class Class1 { public Class1(int x) { } public string a[x] { set; get; } public int b { set; get; } public int c { set; get; } } private void Form1_Load(object sender, EventArgs e) { Class1 f = new Class1(2); f.a[0] = "asdf"; f.a[1] = "asdfa"; f.a[2] = "asdfasd"; f.b = 1; f.c = 2; } 初心者なんで、やさしく教えてください。お願いします。

  • Java プログラミング エラー

    public class kadai1 { public static void main(String[] arg){ /* Book クラスからインスタンスを生成*/ Book myBook = new Book("The Java Tutorial",55); System.out.println("My book title = " + myBook.getTitle()); System.out.println("My book title = " + myBook.title); System.out.println("My book price = " + myBook.getPrice()); System.out.println("My book price = " + myBook.getYenPrice()); /*Book クラスからインスタンスを生成*/ Book yourBook = new Book("The Java Programming Language",40); System.out.println("Your book title = " + yourBook.getTitle()); System.out.println("Your book price = " + yourBook.getPrice()); } } class Book{ //クラスbook の宣言 String title; //題名 private int price; // 価格(ドル) Book(String t, int p){ //コンストラクタ title = t; //題名の設定 price = p; //価格の設定 } public String getTitle(){ // 題名の取得 return title; } public int getPrice(){ // 価格の取得 return price; } public double getYenPrice(){ return price*111.58; } } このとき「Exception in thread "main" java.lang.NoSuchMethodError: Book.getYenPrice()D」 というエラーがでるんですが、これはgetYenPrice()というメソッドはないといってきてるんでしょうか? 作ってるんですがどういうことなんでしょう。

    • ベストアンサー
    • Java
  • C#でレート別に管理するクラスを作りたい

    本の管理をするアプリを作っている時にまた疑問が出てきました。 public class Book { public string Title { get; set; } public string ISBN { get; set; } public Money Money { get; set; } public int Rate { get; set; } public DateTime BuyDate { get; set; } } 本の管理にレートをつけられるようにしようと思っています。 iTunesの★マークのようなものにしたいので1~5の固定です。 つけていないものもあるので0も存在します。 ここでレートを付けている本を、それぞれのレート別にグループに分けたいと思いました。 そこでレート1~レート5までのグループをどのように管理するのがベストというか、どのように考えればいいのでしょうか。 私が考えたのは、グループ別に処理が分かれるのでクラスを作った方がいいと考えたのです。 とりあえず同じ処理もいくつか発生するので public abstract class AbstractRate { public int Value { get; set; } private static BookCollection _bookCollection; //全ての本が入る public BookCollection BookCollection { get { return _bookCollection; } } } みたいな基底クラスを作り public class Star1 :AbstractRate { private BookCollection _books; } から Star5までの似たようなクラスを作り、それぞれのレートのBookコレクションを持たせる形です。 ただこれだと同じようなクラスが増えるだけでものすごく冗長だと思うのです そこでもう一つ思ったのは public class GroupClass { public string GroupName { get; set; } public BookCollection BookCollection { get; set; } } という形でグループ名と本のリストを入れておく形です。 これだとクラスは分かりやすくていいのですが、毎回処理をさせる際にこの名前のグループならこれみたいな処理が必要になる気がして悩んでいます。 実際どのように考えるのがいいのでしょうか? 直接的な回答でなくてもいいのですが、考える材料が欲しいです。 よろしくお願いします。

  • Listをフィールドに持つクラスの複製が欲しいです。

    Listをフィールドに持つクラスの複製が欲しいです。 ただし、コピー元を変更しても、コピーしたものは変わってほしくないのです。 Serializableを実装することでディープコピーができるとのことで、サンプルに適当につくったBookクラスでテストしてみました。 public class Book implements Cloneable, Serializable { private static final long serialVersionUID = 8531245739641223373L; public String title; public String[] content; public List<String> list; public Book(){ title = "title"; content=new String[2]; list = new ArrayList<String>(); list.add("aaa"); } @Override public Object clone() { try { return super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); return null; } } } public static void main(String[] args) { Book orgBook = new Book(); orgBook.content[0] = "aaa"; orgBook.content[1] = "aaa"; // 二通りの複製方法 Book cloneBook = (Book)orgBook.clone(); Book copyBook = ObjectUtil.getCopy(orgBook); // オリジナルを変更 orgBook.content[1] = "bbb"; orgBook.list.clear(); orgBook.list.add("bbb"); // 複製した中身を確認 System.out.println("clone: " + cloneBook.content[1] + " " + cloneBook.list.get(0)); System.out.println("copy: " + copyBook.content[1] + " " + cloneBook.list.get(0)); } 出力結果は clone: bbb bbb copy: aaa bbb となりました。 上記のObjectUtil.getCopy(object)はシリアライズ・デシリアライズを通してコピーをつくるメソッドです。 cloneで作ったのはもちろん変更されるし、シリアライズで作ったコピーも配列はaaaのままですが、リストはbbbに変わってしまっています。 これがaaaのままになるようなコピーの作り方、ご存知の方教えて下さい。 対象となるクラスが複雑で大きいので、コピーメソッドをつくって一つずづコピーするというのはちょっと避けたいところです。 どうぞよろしくお願いします。 環境:Windows XPと7, jdk1.6, Eclipse3.5 から3.6

    • ベストアンサー
    • Java
  • C#でクラス継承について

    下記のようなコードは、可能なのでしょうか? // クラス定義 abstract class Base { int a; Public int A { get{ return a; } } } class Sub1 : Base { int b; public int B { set { b = value; } } }; class Sub2 : Base { // 中略 } static class Program { [STAThread] static void Main(string [] args) { Base aaa = new Sub1(); Base bbb = new Sub2(); func(aaa); // ここでCS1502, CS1503 func(bbb); // ここでCS1502, CS1503 } void func(Sub1 _aaa) { // 中略 } void func(Sub2 _bbb) { // 中略 } } コメントに書いたとおり、CS1502(引数が合わない)が出ます。 func((Sub1)aaa); の様にキャストしないと、動作させることは難しいでしょうか? ※ 実際のコードでは、func(aaa), func(bbb)の呼び出し部分をループでまわしたいと考えています。

  • PHP クラスの中にクラス

    PHPでクラスの中にクラスを指定するのは不可能なことなのでしょうか? <例> name.php <? require("list.ini"); $list = new Select; $list->doSelect($a); <中略> ?> list.ini <? class Select{ function doSelect($qu){ require("col.ini"); $col = new Col; $col->doCol($ab,$ac); <中略> } ?> col.ini <? class Col{ function doCol($a,$b){ <中略> } ?> とすると Fatal error: Cannot redeclare class エラーがでます。 不可能なのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • STLでポインタのリストをsort()する方法を教えてください

    STLのsort()の使い方が分からず困っています。 定義したクラスから生成したオブジェクト群を list で管理しています。 ↓こんな形です。 class cMyClass { int m_Attr; public: cMyClass(); ~cMyClass(); }; std :: list <cMyClass*> m_MyList; m_MyList.push_back(new cMyClass); m_MyList.push_back(new cMyClass); ... この、m_MyListを cMyClass内の要素 m_Attr の大小でソートしたいのですが、どうにもやり方が分りません。。。 教えていただけないでしょうか。 よろしくお願いします。

  • Javaのオーバーロードを使った問題

    class Book{ String title, size; int price; Book(String title, String size, int price){ this.title = title; this.size = size; this.price = price; } public String info(){ return title + " " + size; } public String info(String title){ return title + " " + size + " " + price +"円"; } public int info(String title, String size){ return price; } } ________________________________________________________ class Book_test{ public static void main(String[] args){ String[] title = {"図鑑","参考書","雑誌","地図"}; String[] size = {"B4", "A5", "A4", "A3"}; int[] price={4500, 1800, 600, 1400}; Book[] b = new Book[4]; for(int i=0; i<b.length; i++){ b[i] = ****; } for(int i=0; i<b.length; i++){ System.out.println(***); } for(int i=0; i<b.length; i++){ System.out.println(***); } for(int i=0; i<b.length; i++){ System.out.println(***); } } } 実行結果は、以下の通り 図鑑 B4 参考書 A5 雑誌 A4 地図 A3 図鑑 B4 4500円 参考書 A5 1800円 雑誌 A4 600円 地図 A3 1400円 4500 1800 600 1400 このように表示するために、javaのソースコードを書かなくてはならないのですが、***の部分に何を入れれば良いのか分かりません。 特に、for文の部分です。 classが苦手なので分かりやすく教えていただけると幸いです。

    • ベストアンサー
    • Java
  • クラス作成

    C#にてクラス作成をしております。その中で疑問に思った点を質問させていただきます。 画像を枠内に表示させるクラス 実装すべき変数:枠番号、パス、 映像を枠内に流すクラス 実装すべき変数:枠番号、パス、再生時間 Flashを枠内に流すクラス 実装すべき変数:枠番号、パス など色々なクラスがあってそれをまとめたクラスを作成中です。 上記のクラスを実装するにあたって、共通の変数はクラスにしてしまい それを継承しましょうと言う指示がありました。これはどういった使い方をするものなのでしょうか? class Class2 { public int no { get; set; } public string path { get; set; } } class Movie : Class2 {    public float time{get;set;} public void Play(int frameNo, string path, float playtime){} } class Picture: Class2 {    public void Show(int frameNo, string path){} } これをForm1.cs内で Class2 cls = new Class2(); cls.path = "C:\\test"; cls.no = 11; とかすれば MovieやPictureで使いまわしができると思いきや MovieやPictureをNewすれば初期化されてしまう為、何か根本的に 私の考えが間違ってると思います。 共通の変数を別のクラスにしておいて継承して使うというのはどういった使い方をするのでしょうか? よろしければ例で教えていただけないでしょうか

  • 内部クラス?のエラー

    内部クラス?のエラー  今晩は、JAVA初心者です、宜しくお願い致します。  下のようなプログラムを書いてやりました。  <A>のように全体のプログラムを1つのクラスの中に別のクラスを入れる(内部クラス?)と、 「アクセス可能な型Testのエンクロージング・インスタンスがありません。  型Testのエンクロージング・インスタンスで割り振りを限定する必要があります。  (例えばx.new A()でxはテストのインスタンス)」というエラーがでます。  しかし、<B>のように別のクラスにすると、エラーは出ません。  この原因がよくわかりません。 ==================================================================== <A> public class Test { public static void main(String args[]) { Calc ca = new Calc(); ca.calcTest(1,2); } class Calc { void calcTest(int a , int b ) { int c = a + b ; System.out.print("a + b = " + c); } } } ==================================================================== <B> public class Test { public static void main(String args[]) { Calc ca = new Calc(); ca.calcTest(1,2); } } class Calc { void calcTest(int a , int b ) { int c = a + b ; System.out.print("a + b = " + c); } } ====================================================================

    • ベストアンサー
    • Java