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

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

ただいまの
回答率

90.35%

  • C#

    7700questions

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

C#の習得の仕方を教えてください。

解決済

回答 5

投稿

  • 評価
  • クリップ 3
  • VIEW 3,813
退会済みユーザー

退会済みユーザー

こんにちは。
プログラミングに興味を持ちまずはC言語の参考書を読み独学で勉強しました。
勉強の結果完璧とは全く言えませんがある程度理解できるようになりました。
それから、ゲーム開発に興味を持ちC#を習得したいと思い参考書を購入し勉強していたのですが、C言語のようにはなかなか理解ができず困っています。
私の理解力が足りないのか、それとも参考書選びが悪いのか、それともC#自体が難しいものなのかよくわかりません。
私自身勉強して間もなくプログラミングなどの知識、技能などはど素人です。
なので、もしおすすめの勉強法、参考書、などありましたら教えて頂けると嬉しいです。
回答よろしくお願いします。


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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

+2

最近、見かけたネットの記事を紹介します。
http://qiita.com/ukiuni@github/items/4a252f47a37e17d99c59

自分の場合、どんな言語もたいてい、はじめに「はじめての○○」的なものを一冊やってみて、そのあとはひたすらプログラムを書くということを繰り返しました。参考書の良し悪しとかは気にしたことありませんねー。

本に書いてあることはどっちみち全てをカバーしているわけではないし、全てが書かれていたとしても、はじめてその言語に触れる機会では冗長だと思います。言語の特性を理解して、あとはそれを使ってプログラムを実際に書くということをひたすら繰り返すのが一番の近道です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/06 15:42

    頑張ってみます。
    回答ありがとうございました。

    キャンセル

checkベストアンサー

+1

Cは、主な実装はヘッダ、ライブラリでしたから、
言語の学習よりは、殆どの時間は、ヘッダとライブラリの機能確認、解析でした。
Cは、良くも悪くも、殆どをプログラマとプログラム任せる、
私には、当時から言われていたように、高級アセンブラでした。
コードの疑問は、アセンブリソースが結構解決してくれたり、
PC用途では、今では、出番がなくなりましたが、
現代的になって、結構役に立つワーニング、エラーメッセージ、
開発環境レベルでの注意も出るようになりました。(Microsoft Visual Studio)
一時辞めていた、モノづくりが、お小遣いレベルで出来るようになってきて、
マイコン用途では、現役ですが、開発環境がPC用程でなく、
昔の苦痛がそのままだったりが、楽を覚えた身には辛いかも。
C#は、生い立ちからして、ケアレスミス、型指定ミスなど、開発環境が積極的に関わって、
事前に、ある程度の正確さの要求をします。
なので、漫然とコードを書くと、結構五月蠅い事になります。
簡単でも良いので、処理の概要を事前に検討したり、テストコードを書いたり、
五月蠅い分、ロジック部分以外では、余り注意を払わなくても、それなりに動作するコードが出来ます。
最大の効用は、ケアレスミスによる、実行時エラーの激減です。
但し、.NetFramework ありきだけの原因ではありませんが、機能、出来る事などが、
覚えきれないので、何かにつけて、ネット検索または、MSDN検索が必須になっています。

御勉強、アンチョコサイト例
C# と VB.NET のサンプル:Wankumaさんの処
http://jeanne.wankuma.com/tips/
DOBON.NET プログラミング道:Dobonさんの処
http://dobon.net/vb/index.html
++C++; //未確認飛行 C:C#について粗網羅
http://ufcpp.net/study/csharp/
nonsoft :通信系サンプルで困ったら
http://homepage2.nifty.com/nonnon/
すぐ使えるADO.NET と、関連サイト:DB系含めサンプルが、C#用に書直ししやすい。お勉強用ネタ
http://park5.wakwak.com/~weblab/
MSDN:情報隠しの上手なMSなので、検索にはコツがあります。
https://msdn.microsoft.com/ja-jp/dn308572.aspx
TechNet:情報隠しの上手なMSなので、検索にはコツがあります。
https://technet.microsoft.com/ja-jp/
Visual Basic と Visual C#
https://msdn.microsoft.com/ja-jp/library/hh334523.aspx
https://msdn.microsoft.com/en-us/library/hh334523.aspx
ja-JP と en-us 同じ番号で公開されている事も多いです。


投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/06 15:38

    回答ありがとうございます。
    頑張ってみます。

    キャンセル

+1

ゲームが作りたいのであればUnityを使いながらC#に慣れるのはどうでしょう?

C#はシンプルなCに比べると言語的にも、ライブラリ(.net framework)的にも充実してますが、その分だけ全容はつかみ難いですが、目的があれば乗り越えやすいと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/06 15:41

    近いうちにUnityも触りつつ勉強していきます。
    回答ありがとうございました。

    キャンセル

+1

言語習得にはレベルに応じた学習方法が必要だと思います。
Leolさんが指す、「理解」とはどこまでのレベルでしょうか。

C#の言語仕様自体は難しくないと思いますが、
関連するフレームワークというか、アーキテクチャが多いために難しく感じるのではないでしょうか。
ASP.NETやWPF、WindowsRuntime、UnityやMonoなど多くの環境でC#は使用できますが
そのそれぞれに応じた学習が必要だと思います。
また、.NET Frameworkへの理解が基本的に必要です。
その辺りを踏まえると、C#でもVB.NETでも大差は無いと感じると思います。

あまり詳しくないですが…、ゲームであればXNAかUnityでしょうか。
その場合、C#の学習というよりもXNAやUnityの概念理解を目的に学習すると良いのではないかなと私は思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/06 15:40

    回答ありがとうございました。
    またTak1waさんのアドバイスを元に頑張ってみます。

    キャンセル

0

僕はN88 Basic -> Visual Basic -> C#という過程でプログラミングを独学で勉強してきました。
Visual BasicからVB.NETを習得するには仕様の変更が多すぎて新しい言語を習得するのと同じくらいの労力がいるようだったので、それならとC#を勉強したのが10年ほど前でしょうか。
勉強するにあたって下の入門書を購入しました。

C#入門―文法から学ぶ.NETプログラミング

文法からしっかり解説してくれる入門書だったのですごくわかりやすかったです。あの頃からC#も進歩してLinqや非同期処理の簡略化、Rxなど様々な機能が実装されコーディングの方法も当時と比べて楽な方法が出てきています。ただ、基本は重要だと思うのでまずは入門書を購入されて勉強されたほうがいいと思います。そしてそれから少しずつレベルアップして複数の本を読んでいったほうがいいと思います。

ネットで勉強したこともあります。@ITのC#の記事にもお世話になりました。
連載改訂版 C#入門

ただ話が脱線したり、話が複雑だったり、端折られていたりで、理解するのにすごく苦労しました。ところが本で勉強したら何で苦労してたのかと思うくらいあっけなく理解できました。

初心者だったときの僕は継承を理解するのに苦労しました。わかってはいるのですが、いざ現場で利用しようとしたときに、きちんと理解していなくて継承のトラブルに何度悩まされたことか。あとはデリゲートですかね。1冊の本では理解できずに、何冊か読んでやっと理解したくらいです。なので、質問者の方の悩みもすごく理解できます。

やはりはじめのうちは自分のレベルにあった本から読みはじめ、徐々にレベルをあげていくことをオススメします。

最終的には、オライリーの本が読めるようになればOKだと思います。
プログラミングC# 第7版

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/09 19:22

    丁寧な回答ありがとうございます。
    がんばります!

    キャンセル

同じタグがついた質問を見る

  • C#

    7700questions

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