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

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

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

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

Q&A

解決済

4回答

1690閲覧

C#参考書内コードの文法について

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

0グッド

0クリップ

投稿2018/06/11 08:27

参考書を読んでいる途中で分からないところがあったので質問させていただきます。
下記画像が該当コードになります。
goButton_Click クラス内の
Search myData =(SearchData)siteComboBox.SelectedItem
の部分が謎です。

このプログラムがロードされた際にコンボボックスに4つのオブジェクトが追加されています。
例えばコンボボックスの1つめが選択された状態でボタンがクリックされると

Search myData =(SearchData)siteComboBox.SelectedItemはどのように解釈できるのですか?
私にはインスタンス化しているように見えるのですが
Search myData =(SearchData) new SearchData("http;//www.google以下略")ということでしょうか。しかしインスタンス化する際の右辺の(SearchData)が謎です...

分かる方いましたら教えてください。宜しくお願い致します。

イメージ説明

イメージ説明

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/06/11 08:41

何を作っているか(Windows Forms アプリだろうと想像してますが、質問の本文の一行目に書いておけば、回答者・閲覧者が余計な手間をかけなくても済みます)と、開発環境(OS, .NET, Visual Studio のバージョンなど)を書いてください。
guest

回答4

0

ベストアンサー

(SearchData)siteComboBox.SelectedItem
このような記述は、型を変換するということです。

ComboBox.SelectedItemプロパティ
こちらを見て頂ければ分かりますが、SelectedItemプロパティはObject型となります。

ComboBoxに追加する時、SearchDataクラスのインスタンスを作成し、そのインスタンスを追加しています。
(siteComboBox.Item.Add(~)の部分)

SelectedItemプロパティでは、この追加されたインスタンスから、選択されているインスタンスを返します。

ただ、ComboBox側ではどのような物がItemとして追加されるか分かりませんので、どのような物でも許容できるようにObject型で処理するようになっています。
この為、受け取る際に利用する側がキャストしてやる必要があります。
(Search myData =(SearchData)siteComboBox.SelectedItemの部分)

投稿2018/06/11 08:49

YAmaGNZ

総合スコア10246

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

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

退会済みユーザー

退会済みユーザー

2018/06/11 09:51

丁寧な説明で理解することが出来ました。 回答感謝します。
guest

0

siteComboBox.Items は Form1_Load() の中で、SearchData クラスの3つのインスタンス(google, yahoo, msn)の参照のリストで初期化されていますね。

また SelectedIndex = 0 とすることで、初期状態では google が選択されるようにしていまうす。

siteComboBox.SelectedItem は、現在選択されているインスタンスを参照しています。つまり、初期状態では google インスタンスを参照しています。

SelectedIndex と SelectedItem は、ユーザーがコンボボックスの選択を変更すると、すぐにその参照先が変化します。

つまり goButton_Click() の中で siteComboBox.SelectedItem を見ると、ボタンを押された時点で、コンボボックスのどの項目が選択されているのかを知ることができるわけです。

投稿2018/06/11 08:47

tkanda

総合スコア2425

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

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

0

インスタンス化じゃなく、単にキャストしているだけでは?
SelectedItemは、そのコントロールの中で選択されているオブジェクトを返します

投稿2018/06/11 08:39

y_waiwai

総合スコア87774

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

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

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問