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

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

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

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

Q&A

解決済

2回答

3448閲覧

C#のDictionaryの使い方について

Ritz_Malheur

総合スコア11

C#

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

0グッド

1クリップ

投稿2015/11/04 14:04

質問させていただきます。
C# の勉強をしており、分からない所があります。

以下のコードなのですが、
Dictionaryの使い方がわかりません。

クラス○○の中で、Dictionary型のdicCommonsを宣言しているということなのでしょうか?
new を使った方法は検索すると出てくるのですが、この書き方は見つかりませんでした。

どなたか教えていただけると幸いです。

C#は初めてで、Javaを少し学習したことがある程度なので、
細かく教えていただけると助かります。

また、これはここで聞いて良いのかわかりませんが、
C# を学ぶ方法としておススメがあれば教えてください。
(書籍名やサイト名など)

宜しくお願いいたします。

C#

1public class ○○ : ExcelReport 2{ 3 Dictionary<string, object> dicCommons = (Dictionary<string, object>) Contents["Common"]; 4 56} 7 8 9public abstract class ExcelReport 10{ 11 public Dictionary<string,object> Contents {get ; set; } 12 13 public ExcelReport() 14 { 15 CurrentRow = 1; 16 Contents = new Dictionary<string , object>(); 17 } 18}

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

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

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

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

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

guest

回答2

0

こんにちは。

C#

1Dictionary<string, object> dicCommons = (Dictionary<string, object>) Contents["Common"];

補足ですが、上記については、メンバフィールドでの宣言ではなく、メソッドなどのブロック内に記述する必要があります。

C#

1public class Hoge : ExcelReport 2{ 3 public Hoge() 4 { 5 Dictionary<string, object> dicCommons = (Dictionary<string, object>)Contents["Common"]; 6 } 7}

なお、基底クラスのContentsプロパティから、Key : "Common" で取得したObject型のValueをDictionary<string, object>にキャストしてますので、キャストに失敗して例外が発生する可能性があります。

投稿2015/11/04 14:41

Tak1wa

総合スコア4791

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

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

Ritz_Malheur

2015/11/04 16:25

ご回答いただき、ありがとうございます! ご丁寧に失敗の可能性まで教えていただき、助かりました。 お二人とも私の望んでいた回答でしたので、 ご回答いただいた順で選ばせていただきました。 ベストアンサーにお選びできず、申し訳ございません… また機会がございましたら、宜しくお願いいたします。
guest

0

ベストアンサー

Dictionaryの使い方云々やnew云々の話ではなく、
継承の話です。
クラス〇〇dicCommons〇〇の抽象基底クラス
ExcelReportContents["Common"]を参照しています。

以下と似たようなものです。

C#

1class Hoge : HogeBase 2{ 3 int Value {get{return ValueBase;}} 4} 5abstract class HogeBase 6{ 7 protected int ValueBase = 1; 8}

++C++;//未確認飛行Cが学習サイトとして有名です。
基本的な文法を学んだ後、必要があれば設計について学ぶといいです。

投稿2015/11/04 14:27

編集2015/11/04 14:35
ozwk

総合スコア13521

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

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

Ritz_Malheur

2015/11/04 16:22

ご回答いただき、ありがとうございます。 継承のことだったのですか…全くわかりませんでした。 スッキリしました! 学習サイトについてもありがとうございます。 基本からしっかり学習していきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問