質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

2回答

8612閲覧

C#でclassのitemを初期化したいです。

coke2

総合スコア17

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2016/03/24 04:28

編集2016/03/24 05:05

C#でclassのitemを初期化したいです。
Favoriteクラスを作り、Id(int)とName(String)を用意しました。
Idは連番で、Nameはmovie, sports, bookを。
これを初期化するには、どうすればよいですか?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace WebApplication1.Models{
public class Member {
public string Name { get; set; }
public string Email { get; set; }
public DateTime Birthday { get; set; }

public DbSet<Favorite> Favorites { get; set; } = new DbSet<Favorite> { { "Id=" 1, Name= "movie", "sports", "book" };} }<-この行です。 } public class Favorite { public int Id { get; set; } public string Name { get; set; } }

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Memberクラスにコンストラクタ追加して、その中で初期化すればよいのでは?

public DbSet<Favorit> Favorits { get; set; } = new DbSet<Favorit>(); //ところでDbSetのコンストラクタってProtectedなんだが、これでコンパイルとおるの?? public Member() { Favorit f = new Favorit(); f.Id = ...; f.Name = ...; this.Favorits.add(f); // 以下略 }

投稿2016/03/24 04:43

tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coke2

2016/03/24 04:53

いまコンストラクタ用意してましたが、コンパイルとおらないです。 むむ。
tkturbo

2016/03/24 04:57

chitokuさんのやり方でもコンパイルはとおりませんか?
coke2

2016/03/24 05:00

DbSet<Favorite>.DbSet()はアクセスできない保護レベルです、と出てだめですねー。 いまこんな感じ。 using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; using System.Data.Entity; namespace WebApplication1.Models { public class Member { public string Name { get; set; } public string Email { get; set; } public DateTime Birthday { get; set; } public DbSet<Favorite> Favorites { get; set; } = new DbSet<Favorite>{ new Favorite { Id = 1, Name = "movie" }, new Favorite { Id = 2, Name = "sports" }, new Favorite { Id = 3, Name = "book" }, }; } } public class Favorite { public int Id { get; set; } public string Name { get; set; } } }
ozwk

2016/03/24 05:06

MSDN曰く > DbSet オブジェクトは、DbContext から DbContext.Set メソッドを使用して作成されます。 だそうです。
tkturbo

2016/03/24 05:32 編集

あざっす => ozwkさん で、DbContext#Setはインスタンスメソッドで、DbContextのデフォルトコンストラクタはこれまたProtectedなので勝手にNewできません。基本的にDBに接続すること前提なので、アクセス可能なDBを準備のうえDbContextコンストラクタのオーバーロードされたやつを使ってNewします。 つまり、「new DbContext(うーにゃー).Set()」とやらんとダメってわけだ。
guest

0

C# ではオブジェクト初期化子を使用することで次のように記述できます。
オブジェクト初期化子とコレクション初期化子 (C# プログラミング ガイド)

lang

1var favorites = new DbSet<Favorite> 2{ 3 new Favorite { Id = 1, Name = "movie" }, 4 new Favorite { Id = 2, Name = "sports" }, 5 new Favorite { Id = 3, Name = "book" }, 6};

投稿2016/03/24 04:37

chitoku

総合スコア1610

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coke2

2016/03/24 04:42

これ、Memberのfieldで、1行ではできませんか?
chitoku

2016/03/24 04:43

同じことです。
coke2

2016/03/24 04:57

たしかに。失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問