X



ふらっと C#,C♯,C#(初心者用) Part130 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001ななしぃ♯ 転載ダメ©2ch.net (ワッチョイ 93aa-SrFS)
垢版 |
2017/07/18(火) 06:40:45.47ID:mH9qbH+m0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part129
http://mevius.2ch.net/test/read.cgi/tech/1497000961/

■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1492843013/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0066デフォルトの名無しさん (ワッチョイ 4769-I4wg)
垢版 |
2017/07/25(火) 18:46:59.69ID:IqsCpgPN0
CsvHelperでReadメソッド読んだら元の処理に差し替え出来た

ぐぐるとマッピング方式ばっかりなんだけどマッピングなんてしねーよボケがって状況なので
マッピング無し方式を見っけるのに時間かかった
0067デフォルトの名無しさん (ワッチョイ 7fa2-QK4i)
垢版 |
2017/07/25(火) 19:07:52.65ID:YE6zWRAr0
>>59
これなに?
OpenGLで高度なグラフィックコントロールができるってこと?
ってかLinux向けかな
0070デフォルトの名無しさん (ワッチョイ 8732-UCFQ)
垢版 |
2017/07/25(火) 22:02:34.46ID:Qr8ugTQa0
OpenGLをまともにサポートしていないIntelの古いオンボードビデオのPCがまだまだ生き残ってるから、
なるべく多くのPCで動かしたいアプリでOpenGLの採用は厳しいな。
0071デフォルトの名無しさん (ワッチョイ bf2a-ltyJ)
垢版 |
2017/07/25(火) 23:05:49.65ID:Voswq3dD0
いままでずっとVB.netでwinformアプリ作ってて
いい加減C#の勉強しようと思ったらnamespaceのせいでインデントが余分にいっこ右に行くんだけど
もちろんVBでも一見して見えないだけでNamespaceが宣言されてるのはわかってるんだが、インデント減らす方法ないかな
0075デフォルトの名無しさん (ワッチョイ 4769-I4wg)
垢版 |
2017/07/26(水) 10:02:54.88ID:0pf2o/yC0
TextFieldParserで思うんだけど
俺が不満なのは連続改行が処理されないことだけだったのに
このクラスは使えない認定せざるを得なかった
クラスの汎用性なんて幻想だよな
じゃ、仮にTextFieldParserの動作を今から変更ってきっとできないんだよな
少なくともそれを待っているよりはCsvHelperを使ったコードに変更したほうが話が早い
クラスなんて所詮こんなもんだよな
0076デフォルトの名無しさん (ワッチョイ a311-RAOX)
垢版 |
2017/07/27(木) 07:28:39.66ID:I7X5vmO00
ゲーム制作するためにc#を勉強しています。
確かな力が身につく「超」入門 シリーズのc#版が発売されたのですが、読まれた方はいませんか?
または他にプログラム初心者にオススメのc#の本などがあれば教えていただけますか?
0077デフォルトの名無しさん (ワントンキン MMda-VkdC)
垢版 |
2017/07/27(木) 07:34:29.37ID:SfFXzpg9M
少し古いがCLR via C#ってのがいいよ
細かいところまで嘘や誤魔化しをしないでしっかり書いてくれてる
いい入門書は初心者を煙に巻くような誤魔化しが少ない
俺はこれで入門した
0079デフォルトの名無しさん (ササクッテロロ Spb3-RAOX)
垢版 |
2017/07/27(木) 11:30:34.93ID:IIZaHOT6p
クラスとオブジェクトについてですが、クラス(雛形)に対して実体化されたものがオブジェクト(実態)と考えていいんですよね?

例えばRPGなんかでいうと

敵クラス
HP(変数)
攻撃力(変数)
HPがある数値を下回ると逃げる(関数)

スライム(敵オブジェクト)
HP 5 (メンバ変数)
攻撃力 3(メンバ変数)
HPが2以下になると逃げる(メンバ関数)

といった感じの理解で良いのでしょうか?また本によってはオブジェクトとインスタンスの説明が似ているので、違いがよくわかっていません。
0081デフォルトの名無しさん (ワッチョイ db6f-V1Wy)
垢版 |
2017/07/27(木) 11:50:59.30ID:2ra8985e0
オブジェクトはオブジェクト指向にかぎらず広い定義での「物 (変数に入れたり、引数で渡したりできる)」
でオブジェクト指向が出てきて、クラスを実体化したものがインスタンス

言い換えると、クラス(設計書)をインスタンス化(オブジェクトとして実体化)したものがインスタンスって感じでいいんじゃないかな
0085デフォルトの名無しさん (ササクッテロロ Spb3-RAOX)
垢版 |
2017/07/27(木) 12:10:08.71ID:IIZaHOT6p
凄い!短時間でこれだけ回答をいただきありがとうございます。
オブジェクトは設計図とか概念って考えた方がいいんでしょうか?
となるとさっきの敵クラスを継承したスライムクラスはオブジェクトというよりインスタンス?
0088デフォルトの名無しさん (ワッチョイ a311-5K3Y)
垢版 |
2017/07/27(木) 12:17:23.86ID:dUeJpjKg0
>敵クラスを継承したスライムクラスはオブジェクトというよりインスタンス?

class 派生クラス : 基底クラス{} // これはオブジェクト(クラス)

派生クラス 変数名 = new 派生クラス // これがインスタンス
0091デフォルトの名無しさん (ササクッテロロ Spb3-RAOX)
垢版 |
2017/07/27(木) 12:25:13.94ID:IIZaHOT6p
敵クラスもスライムも攻撃パターンもオブジェクトとして考えるみたいな感じがオブジェクト指向ですよね?(ざっくり)

c#はオブジェクト指向に基づいて作られているけど、オブジェクトという概念自体はあまり考えずともプログラムは組める、という考えでいいのでしょうか?
0092デフォルトの名無しさん (ワッチョイ a311-5K3Y)
垢版 |
2017/07/27(木) 12:27:22.18ID:dUeJpjKg0
>攻撃パターン
そこはメンバ関数じゃないかな

>オブジェクトという概念自体はあまり考えずともプログラムは組める、という考えでいいのでしょうか?
それでいいよ
正しいオブジェクト指向とは〜とか覚えなくていい 学者や思想家になるんでもなければ
覚えるべきなのは、C#での適切なコーディング
0095デフォルトの名無しさん (ササクッテロロ Spb3-RAOX)
垢版 |
2017/07/27(木) 12:37:22.98ID:IIZaHOT6p
ある本によると、
クラスを実体化したものをオブジェクトといい、実体化することをインスタンス化する、またはオブジェクトを生成する、などといいます。クラスはオブジェクトになってから初めて利用できるのです。

と書かれているのですが、実際にはクラスもオブジェクト指向で考えるとオブジェクトの一つだけれど、そこまで考えるとややこしいから無視してていいよ、って感じですかね?
0096デフォルトの名無しさん (ササクッテロロ Spb3-RAOX)
垢版 |
2017/07/27(木) 12:47:23.41ID:IIZaHOT6p
つまり

敵クラス(雛形クラス)
HP(変数)
攻撃力(変数)
HPがある数値を下回ると逃げる(関数)

スライムクラス(継承クラス)
HP 5 (メンバ変数)
攻撃力 3(メンバ変数)
HPが2以下になると逃げる(メンバ関数)

インスタンス化

スライムA、スライムB、スライムC・・・


でも言ってしまえば、これら全てオブジェクト。

という理解でよろしいでしょうか?
0099デフォルトの名無しさん (ワキゲー MMa2-1i8l)
垢版 |
2017/07/27(木) 13:12:19.93ID:xd52THukM
オブジェクトって言葉はふわふわしがちな印象だから
実際のプログラム言語ベースで考える場合とかは使わないほうが安全
C#ならクラス(構造体含む)とインスタンスで事足りる
0102デフォルトの名無しさん (ワッチョイ af69-t8sh)
垢版 |
2017/07/27(木) 14:19:50.11ID:XtIOKCvm0
リアルタイムゲームはすべてのパラメータをリアルタイムでエクセルで閲覧できるような構造で作らないとデバッグ間に合わない
縦軸インスタンス、横軸パラメータで
バグったら前後のデータを自動出力

オブジェクト指向(ツリー構造的な意味で)は合わないと思う
0103デフォルトの名無しさん (アウアウイー Saf3-qgku)
垢版 |
2017/07/27(木) 16:38:48.16ID:A+CF0/O/a
>>96
オブジェクトとは何か、みたいな哲学的疑問(笑)が気になるのは
よく分かるけど、そういうのは後回しで十分だし後回しにした方がいいと思うよw
たぶん、不毛なだけw

初心者は具体的なコード例を見て、どういうコードがどう機能するか、
何が実現できるのか、そういうところに集中した方がいいと思う
0107デフォルトの名無しさん (アウアウイー Saf3-qgku)
垢版 |
2017/07/27(木) 19:25:46.31ID:okcLdcsWa
オブジェクトはともかく、インスタンスなんて変な例えや哲学的な話じゃなくて、
もっと現実のコード寄りに「newすると作られて使えるようになる何か」
ぐらいにに理解した方がいいよw

しつこいけど、初心者にとって重要なのは「インスタンスって何?」みたいな意味論じゃなくて
インスタンスを作るコードをどう書くか、どう記述したらインスタンスのメンバーにアクセスできるか、
っていう機能主義的な具体論
0110デフォルトの名無しさん (ワッチョイ a311-RAOX)
垢版 |
2017/07/27(木) 22:08:18.79ID:I7X5vmO00
みなさんありがとうございます。>>96です。

皆さんがおっしゃるように、とにかくオブジェクトが云々と考えるより構文をたくさん打って感覚で覚えていくのが一番の近道なのかもしれません。

でも皆さんの話を聞いて少し頭の中が晴れてきました。
ありがとうございました。
0111デフォルトの名無しさん (ブーイモ MM17-goPp)
垢版 |
2017/07/27(木) 22:12:49.28ID:h5VgGO8jM
オブジェクト指向って本来はモジュール設計のベストプラクティスに現実世界のアナロジーをこじつけたものだから、
高尚な理論なんか無視して単なるモジュール化の一手法として導入すべきなんだよな
C言語を使っていれば自然とlist_add(&list, item)のようなパターンに行き着いて、
そこからのオブジェクト指向への発展はきわめて自然なもの
0112デフォルトの名無しさん (ワッチョイ 0fe4-Tef8)
垢版 |
2017/07/27(木) 22:30:42.28ID:aAe8+IMH0
>>95
とりあえずその本のタイトルと筆者をさらせ

オブジェクト指向ってのもいくつかの流派があるから、一概には言えないが
C#ベースで説明してるならその本は焼き捨てた方が良い
0114デフォルトの名無しさん (アウアウイー Saf3-qgku)
垢版 |
2017/07/27(木) 22:45:52.46ID:zjuaYXLUa
>>112
誰に向かって何を威張ってるのか知らんけど、>>95にあるような記述は
初心者向けのざっくりとした説明としてはまあ妥当なもの。

最初から重箱の隅つつく勢いで厳密に矛盾がないように書いたら初心者は理解できないよ。
ばっかじゃないの
0117デフォルトの名無しさん (ワッチョイ bedb-iPV5)
垢版 |
2017/07/27(木) 23:20:12.49ID:OcfywRta0
classって、共通の性質や特徴を有するものの分類とかいう意味みたい。
オブジェクト指向の言語は、大体がobjectを基本として、そこから色んな性質に分けていったものをクラスにして「名前をつけて」あげる。
オブジェクト指向でいうクラスは「分類整理のやり方、結果」と言えるんじゃないかな。

動物とか車とかに例えたりする説明の仕方もありだと思う。けど、分類整理のやり方という文脈がないと、継承とか派生、つまり上下・並列の概念が分かりにくくなったりしないかな。
いま目の前にライオンが2匹いたとして、同じライオンとして分類していいのか、タテガミの長さが分類のポイントなのかとか、片方は外敵から身を守るために火を噴くとか。ペンギンと比べてどの程度同じ分類が出来て、どの程度違いがあるのかとか。

まとめると、モノでも生き物でも何かしらの特徴とか性質を持っていて、特徴で分けたのがクラス。
オブジェクト指向とは指向、言い換えると、方向性としてはモノを「最小の単位」として扱うことを表している。元素や光といった、もっと根本的な最小になる要素もあるけど、そのレベルで扱おうとすると色々細かすぎたり、人が理解しにくいから。

かな?俺もよく分からなくなってきた。
個人的には日本に来るとき訳する際に、継承とかいう普段使い慣れない概念語じゃなく、「環境適応」とか「マイナーチェンジ」とかがよかったのかなと勝手に思ってる。
0118デフォルトの名無しさん (ワッチョイ a311-5K3Y)
垢版 |
2017/07/27(木) 23:32:44.71ID:dUeJpjKg0
>>117
後半に行くに連れて、段々変になっていってるぞ

最も重要な点は、
「データ(プロパティ)」と「振る舞い(メソッド)」を1つにパッケージする事だろう
一々現実世界の物体に例えて説明する必要は無い
0120デフォルトの名無しさん (ワッチョイ bedb-iPV5)
垢版 |
2017/07/27(木) 23:52:55.67ID:OcfywRta0
>>118
データと振る舞い、そこが理解できたらパッと先が開ける感あるんだけど、灯台元暗し的に回り道しちゃうよね。

質問者の人には、その疑問は忘れず、さりとて目の前の事をこなしてみて、たまーにまた疑問に立ち返って欲しいなあ。試行錯誤してるある瞬間に、パッと思い出してすんなり受け入れられる時が来ると思う。

オブジェクト指向だとかなんだとか、結局はどっかのオッチャンインスタンスが考えたものだろうし、完全な答えはないんだろうなぁ。
0121デフォルトの名無しさん (アウアウウー Sa9f-HJpE)
垢版 |
2017/07/27(木) 23:54:43.51ID:iQBWuJsZa
厳密な定義も元からないし実装によって変わるし
そもそもクラスベースじゃないものまである
設計段階と実装段階でも別のことがある
ひとくくりに語るのは難しい

でも意思の疎通はかなりできてしまうという曲者
0122デフォルトの名無しさん (アウアウイー Saf3-qgku)
垢版 |
2017/07/28(金) 00:24:58.46ID:EhJxrJBra
哲学的な話は初心者には意味ないって自分で書いておいてあれだけど、
あえてそういう話をすれば、オブジェクトっていうのは「〜であるかのように振舞う仮想機械」
だと考えるのが一番いいと思うよ。

従来の構造体+関数より分かりやすく仮想機械を記述するための仕組みがクラス。
仮想機械の組み合わせでプログラムを作りましょう、っていうのが(もっとも素朴な)オブジェクト指向
0125デフォルトの名無しさん (ドコグロ MM22-gqKx)
垢版 |
2017/07/28(金) 07:18:09.76ID:jwLN5n78M
>>117
> classって、共通の性質や特徴を有するものの分類とかいう意味みたい。
IT系(に限らんのかも知らんが)の用語は結構元の意味と違う使い方されてるから気を付けた方がいいよ
例えばネットワークカードでパケットキャプチャするためにPromiscuousモードって言うのがあるんだがあるときふとどういう意味だろう?って辞書引いて笑たし
https://dictionary.goo.ne.jp/ej/67118/meaning/m0u/
0127デフォルトの名無しさん (アークセー Sxb3-RAOX)
垢版 |
2017/07/28(金) 10:27:48.91ID:dynW8EUsx
皆さん、float、double、intの使い分けはどうされてますか?例えばドラクエのようなRPGでせいぜい4桁程度の整数しか使わない場合でしたら、intを使っておけば間違いはありませんか?
0129遊園地 (ワッチョイ be96-ywSo)
垢版 |
2017/07/28(金) 10:59:03.19ID:asrj9iFF0
bool a = true;
bool b = false;

bool c = null; // error CS0037: Null 非許容の値型であるため、Null を 'bool' に変換できません
bool d = 0; // error CS0029: 型 'int' を 'bool' に暗黙的に変換できません
0130デフォルトの名無しさん (ブーイモ MM17-goPp)
垢版 |
2017/07/28(金) 11:22:46.32ID:epWJgUcsM
>>127
普通に整数が使いたければint
アニメーションなどで込み入った計算をするときは無理に整数でやるよりdoubleの方が職人芸がいらなくて楽floatは精度の低さが問題になりやすいから描画などの最終的な出力以外には使わない方がいい
0136デフォルトの名無しさん (アウアウカー Safb-yXEd)
垢版 |
2017/07/29(土) 00:13:16.03ID:2gt99MhJa
doubleの演算って結構誤差でない?
0144デフォルトの名無しさん (ブーイモ MM17-goPp)
垢版 |
2017/07/29(土) 12:26:02.64ID:VZ2r/0rxM
double/frort(笑)の表現が2進数だからdicimal(笑)と違って誤差が…みたいな話をする奴は本質を理解してないよな
実数型は常に連続な近似値として扱うべきで、最終的には要求される精度に応じて必ず丸めて使うんだよ
decimalとは扱う問題の性質が違う
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況