ふらっと C#,C♯,C#(初心者用) Part130 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
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
2017/08/27(日) 17:04:06.72ID:+4gR/MAE0
COMとドトネトの相性が良くないのは意外だったなあ
2017/08/27(日) 17:30:52.38ID:+kJVVvm3a
>>747
理論上触らなければバグらない以上
用も無いのに触る一手はないな
2017/08/27(日) 17:33:19.12ID:UU3MXRkga
>>749
だから、「用がある」から今更C#で書き直すんでしょw
間違った前提から間違った結論を導いてもしょうがないよww
2017/08/27(日) 17:35:20.33ID:QpZ6CaB1M
既存のクラスを触りたくないといって
間違った場所にコードを追加していったやつがおってな
気がつくと見事なスパゲティの塊が出来上がっていたんだとさ
2017/08/27(日) 18:26:10.44ID:QZuIwK0r0
>>747
詳細仕様が分かってないからコードを読もうとしてるんじゃ?
2017/08/27(日) 18:37:29.03ID:q8gbijSsa
>>750
それは現状が正解じゃない状態になったのかい?
754デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 19:20:19.44ID:+QB1TWiX0
技術的アプローチに対してアーティスト的アプローチもある。そもそも専門家が遣らないという
のは技術的に興味がない。もしくは打算的技術者なら経済的に見てもメリットがないということだ。
つまり儲からない。そういう結論がでている。

 しかしアーティストの見解は違う。アーティストにとっては技術とか打算とかの優先順位は
かなり低い。すべての仕事はどう料理するかがアーティストのアーティストたる能力の発揮し
どころだから、技術屋から見るとかなりリスキーであっても敢てやってみる。
755デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 19:24:45.57ID:+QB1TWiX0
>>752
表面的な仕様というかパラメータの設定とか動作などの取り扱い方法は客先で大体はわかる。
しかしメカの細かい動作なんかの部分は一切分からない。動作検証は客先でやってくれる。
結果が正しいかどうかは客先でわかる。
2017/08/27(日) 19:44:16.32ID:DBQBoW3m0
22回だと
2017/08/27(日) 19:46:36.23ID:hG554Uge0
もうNGでいいよ。作り話だろうから
2017/08/27(日) 20:58:41.04ID:QZuIwK0r0
>>754
あ〜〜、敢えてね・・・(察し)
2017/08/27(日) 21:35:03.08ID:htfhfzKBM
虚言は多弁にて構築する
2017/08/28(月) 21:24:49.09ID:jkZMoX4aM
>>720
昔、なんかのツール使ってVB6を.NETにしたよ。
急には上がらないから2005にして2008にして2010だったかな。
段階的に変えていく。
それぞれの.NETstudio使う。
前のバージョンを上げられるよ。
2005から2010とかは確かできない。

で、最後にC♯にすればよくね?
2017/08/28(月) 21:34:07.26ID:o3aBTh5N0
VB6から2010までは一気にいけたはず
そのあと2013までいったら2017まで共通
2017/08/28(月) 23:16:58.67ID:LI+9ess2a
上にすでに書いたけど、VB6のコンバーター(アップグレードウィザードとか言ったと思ったけど)
がついてたのはVS2008までだよw
2017/08/29(火) 00:32:19.56ID:TMhzTuGH0
マジか
VB6を2010で開いた記憶があったがボケちゃったな
すまんこ
2017/08/29(火) 00:56:21.39ID:BmkqqErg0
>>763
発言には責任を持って手で変換してね はぁと
2017/08/29(火) 07:36:26.75ID:X4Q/TPlHM
コンバーターってロクな結果にならないアレか
手で移植したほうがマシって有名なやつ
766デフォルトの名無しさん (ワッチョイ 86a2-2x4P)
垢版 |
2017/08/29(火) 07:50:29.80ID:se0bVMb80
前VB6を.NETに移行する案件あったなスルーしてよかった新人突っ込んだらしいし
配列要素の1始まりとか鬼門過ぎるVB6触ったこと無いが
2017/08/29(火) 08:00:33.67ID:4AYdjmhP0
>>766
だめな会社だな
そういう案件にこそ玄人を投入すべき
(玄人=知らない言語でもコードが読める能力を持つ者)
2017/08/29(火) 08:13:07.45ID:KBcajP1UM
VB.NETの配列はX(N)で宣言するとX(0)〜X(N)まで確保される仕様だから、
VB6からの移植の場合はX(0)を無視すればインデックスはだいたいそのままで動くぞ
汚いといえば汚いけどこの仕様を決めた奴は有能だと思う
2017/08/29(火) 14:29:00.01ID:z6aeY2gd0
逆にVBを1始まりにした奴はとんでもない無能だな
2017/08/29(火) 14:50:21.63ID:qDW+6cr0a
VB以前のBASICからの伝統なので、、、
2017/08/29(火) 14:52:25.47ID:qDW+6cr0a
いや、その前のCOBOL,FORTRANからか
2017/08/29(火) 15:06:42.27ID:r/k5/IVc0
MS-Basic書いたのはビル・ゲイツだな
2017/08/29(火) 15:41:44.42ID:/sqn3fx+a
BASICのBの意味を考えれば、その方がとっつきやすいという判断でしょう。
プログラマの視点で考えれば、0オリジンの方がきれいに実装できるに決まってるし
2017/08/29(火) 15:53:08.07ID:XtumNqBwH
VB6でもデフォルトはOption Base 0だろ?
2017/08/29(火) 16:14:24.95ID:/sqn3fx+a
>>774
そうらしいね
https://msdn.microsoft.com/ja-jp/library/office/gg264224.aspx
2017/08/29(火) 17:59:14.69ID:dKAQo2Vla
配列が0スタートのせいでバグが量産されてるという気もするが
それは個人の考え方次第

配列1個目が0番
配列2個目が1番

配列N個目がN-1番
2017/08/29(火) 20:03:57.06ID:zDssXbBFM
気になるなら下限も指定すればいいのに...
778デフォルトの名無しさん (アウアウカー Sa85-PSHs)
垢版 |
2017/08/29(火) 20:53:58.30ID:Vnq3Ax6Ua
配列の要素数があれ?ってなる
779デフォルトの名無しさん (ワッチョイ caea-dMKE)
垢版 |
2017/08/29(火) 21:20:52.33ID:BqQa7G9t0
>>768
ソースが出てこないが.Net化の際にゼロで統一するようにしたら
ベータ版の段階で世界中からクレームのフィードバックが沢山あったので
その折衷仕様になったはず。
780デフォルトの名無しさん (ワッチョイ caea-dMKE)
垢版 |
2017/08/29(火) 21:23:35.54ID:BqQa7G9t0
ゼロで統一じゃないや。C系に揃えるってことでした。
ExcelのCellオブジェクトと関連させる場合は
1スタートto要素数=最終行or列で合う
2017/08/29(火) 21:34:26.94ID:r/k5/IVc0
Cの基本はポインタで、配列ってのはポインタのシンタックスシュガーだからね
添字は*(p+x)のxだから0始まり
2017/08/29(火) 21:38:30.14ID:K1eHFhhta
折衷っていうか文化の違いでしょ
C系と違ってVBの配列作成時に指定する値は、添え字の最大値ってことになってたはず
783デフォルトの名無しさん (ワッチョイ fe6d-EUPY)
垢版 |
2017/08/29(火) 23:45:49.74ID:Z8GIMLiK0
抽象クラスのoverride で、型を変えるような事はできるでしょうか?

以下のようなコードが書けるかなと思ったのですが
戻り値はあくまでList<object>でないとダメみたいなので
書く方法があればお教えください

public class hoge { }
public class fuga { }

public abstract class Base
{
public abstract List<object> GetData();
}

public class SubOne : Base
{
public override List<hoge> GetData()
{
return null;
}
}

public class SubTwo : Base
{
public override List<fuga> GetData()
{
return null;
}
}
2017/08/30(水) 00:17:18.47ID:RiHZq49u0
それはシグニチャが違うから別メソッドじゃ?
overrideはずしてみ
2017/08/30(水) 00:21:31.70ID:M/4qyBdLa
これじゃいかんの?
public abstract class Base<T>
{
public abstract List<T> GetData();
}
2017/08/30(水) 00:30:38.41ID:aQB+rR710
同じGetDataメソッドで別のデータ取得させたいのはなんか理由あるのかね
hogeとfugaが抽象化できるならともかく
2017/08/30(水) 01:23:10.88ID:ZNhSKe/9a
typescriptやjavascriptから流れてきたんだろうな
と勝手に妄想
2017/08/30(水) 01:26:58.62ID:ZNhSKe/9a
>>784
戻り値の型だけ違うシグネチャは判定ができないから設定できない
2017/08/30(水) 01:31:51.49ID:RP2OopsU0
ジェネリック使え
2017/08/30(水) 01:43:21.54ID:DqOxxcW/0
関係ないけど戻り値はインタフェースで返してくれよな
2017/08/30(水) 02:22:24.13ID:RiHZq49u0
>>788
他言語で実現できてるのは戻り値型の共変性ってやつなんやね。
勉強になったわ。ありがと。
2017/08/30(水) 04:42:52.63ID:RyepnT5X0
>>785
これ
2017/08/30(水) 12:13:11.62ID:ZNhSKe/9a
本来は継承で解決すべき事柄じゃないものも何でも継承で
解決しようとする
2017/08/30(水) 13:29:51.66ID:flwVYOal0
一見>>785でよさそうに思えるが
よくよく考えると使い道が分からん
Base<hoge> と Base<piyo> は違う型になるので
それらを継承したクラス同士も違うクラスから派生しているっつーことで
統一的には扱えなくなる
差分プログラミングがしたいならそれでよいが
なら、Baseクラスのabstractの意味は何だ?
2017/08/31(木) 07:11:58.47ID:uXMS1+GuM
783ですが、抽象化したテーブルクラスを作って、テーブル単位で選択結果を返す具象クラスを作りたかったのですが、Dapperを使うのでメソッドの戻り値がList<T>となり戻り値の型が具象クラス毎に違っています

こういう例が無さそうということはアンチパターンやってるでしょうか
2017/08/31(木) 07:23:02.32ID:ukHSVGRna
目的を明確にしていらねーもん全部捨てろよ
2017/08/31(木) 07:53:46.13ID:5L4gV5sHM
>>795
interface IDao<TEntity, TId> {
TEntity ReadOne(TId id);
IEnumerable<TEntity> ReadPage(int pageSize, int pageIndex);
void Create(TEntity e);
void Update(TEntity e);
void Delete(TEntity e);
}
class FooDao : IDao<Foo> { ... }

これじゃいかんのか?
2017/08/31(木) 18:48:22.38ID:RNa0QExKM
>>797
テーブルのみを扱うので同様の属性という意味で抽象クラス使ったのですが、インターフェイスで選択したデータを返す機能として定義した方が良いでしょうか

抽象とインターフェイスの使い分けに今ひとつ自信がなくて
2017/08/31(木) 19:00:57.90ID:knvUk5zeM
>>798
使い分ける必要はない
is Aだのcan Aだの言ってたのは昔の話で、今時はどうしても実装を継承する必要がある場合以外は基本的にインターフェースを使う
もっというと、実装継承のために抽象クラスを使う場合はインターフェース継承とは本来区別して考えるべきで、
インターフェース←抽象クラス←具象クラス
という継承関係にするのが理想
抽象クラスはあくまで実装の共通化のためのツールに過ぎない
2017/08/31(木) 21:53:11.25ID:gYg3phKFa
Table<T>を作ってGetData<T>
それ以上の機能を使いたかったら適当なクラスを作ってTable<T>をコンポジション
2017/08/31(木) 22:03:15.27ID:rtd0E2rY0
>>800
単体テストで差し替えできなくね
2017/08/31(木) 22:22:29.61ID:izluyX1Ma
>>799
何が良くてそんなことやってんの?
変更があったら変更すればいいじゃん
803デフォルトの名無しさん (ワッチョイ cfa2-X0kF)
垢版 |
2017/09/01(金) 05:13:10.52ID:JBM8M4Dg0
MariaDBってデフォで接続できたりする?
2017/09/01(金) 07:26:54.74ID:swl6M8kLM
>>799
それはDIってデザインパターンでしょうか

なんか教科書のインターフェイスと使い方が違うので理解出来なかったのですが
2017/09/01(金) 14:07:02.06ID:RTadbuNn0
インターフェースは、has-a、部品化。車とハンドル。
抽象クラスは、is-a、継承。車と消防車

継承は、クラスに親子関係がある。
非常に似ているもの同士

部品化は、全く異なるもの同士

DI は、XMLなどの設定ファイルから、クラスを自動的に作る、ジェネレーター
2017/09/01(金) 15:17:36.03ID:sKG/CNAU0
>インターフェースは、has-a、部品化。車とハンドル。
↑これマジ?
でも>>799では「can A」って書いてあるよ
大マジ?
そんな説、聞いたことないんだけど
2017/09/01(金) 15:18:46.48ID:sKG/CNAU0
てかそんな(脳の)状態でプログラム書けるものなの?
C#優秀すぎだろ
2017/09/01(金) 15:27:41.14ID:RTadbuNn0
スッキリわかる Java入門 第2版、2014

Javaの人は皆、この本で、オブジェクト指向を学ぶ。
というか、日本では、この本しか無い

だから皆、C#をやる前に、Javaから勉強する

オブジェクト指向の最初のクイズが、is-a, has-a の例題
2017/09/01(金) 15:38:08.33ID:HIaJQCDW0
>>808
外国人みたい言葉遣いしてんな
いつの間にか2chもグローバル化してたのか
そして謎の熱いjavaのステマ付き
2017/09/01(金) 15:51:33.77ID:sKG/CNAU0
で、最初のクイズで間違ってたら、どうしようもなくね?
has-aはコンポジションであってインターフェースは関係ない
2017/09/01(金) 15:59:59.83ID:olFLJFhOM
この人あちこちのスレに突如出現しては的外れで一方的な持論とともに書籍を紹介する変な人だよね
書籍宣伝のボットなんじゃないかという気もするけど、もし人工知能だとしたらかなり優秀だと思う
2017/09/01(金) 16:39:36.84ID:RTadbuNn0
「たのしいRuby」「みんなのPython」とか、
掌田津耶乃の「はじめてのJavaScript」では、
オブジェクト指向の説明は、数十ページ

一方「スッキリわかる Java入門」では、250ページ!
他を圧倒してる

漏れは、10言語・数十冊以上は読んでる

本を読む順番は、
1. スッキリわかる Java入門
2. たのしいRuby
3. みんなのPython

C# なんかは、後の方
2017/09/01(金) 16:42:51.82ID:Gpi3WshSa
>>812
文法解説ばっかりで作って覚える系の本が無いな
なんか具体的にアプリケーション作れる本があった方がいいんじゃないか?
2017/09/01(金) 16:44:01.49ID:dv5tNHSMH
Javaが一番スッキリしてないと思うが
2017/09/01(金) 16:46:00.19ID:JdxtetydM
>>812
>10言語・数十冊以上は読んでる
バカじゃねぇの?
2017/09/01(金) 16:59:37.83ID:G1MJZtxwa
java,ruby,pythonの入門書に共通してるのが作って覚える系の本があまりない
javaはandroidのアプリの本が数冊だが出ているがandroidなんだよね
エミュでしか動かせなかったりイマイチ

そういう意味で入門書にはc#をオススメしたい
これならwindowsアプリが具体的に作って動かせるので絶対に初心者にはこちらのがいい
csvやxlsファイルの処理やDB接続の処理が書いてあったりするのもGood
2017/09/01(金) 18:15:16.28ID:e0+gOffZM
スッキリは詳しい説明をはぐらかして初心者を誤魔化そうって思惑が透けて見えんだよね
2017/09/01(金) 18:35:46.75ID:UZeCG1ZbM
>>812
ちゃんとコテハン登録しとけよ
NG登録しとくから
2017/09/01(金) 20:50:25.60ID:A4rxsWGh0
>>806
has-a capability

部品化とは違うけどね
2017/09/01(金) 21:08:27.70ID:v3Wg48+ra
真面目に言ってるのかボケてるのか何なんだろうねw
2017/09/01(金) 21:51:22.37ID:li9KR7ak0
UnityのためにC#もちょこちょこ勉強し始めたけど、Javaと大分似てるんだなこれ
本買おうと思ったけど、完全な新規向けのじゃなくて
言語仕様についてわりとがっつり書いてあるような本でお勧めってあります?
2017/09/01(金) 21:58:15.49ID:bJwSdbz60
入門書に移譲って書いてなかったんだろうか?
2017/09/01(金) 21:59:42.54ID:sKG/CNAU0
求めているものとは違うかもだけど
だいぶん古いけど

連載  改訂版 C#入門
http://www.atmarkit.co.jp/ait/subtop/features/dotnet/csharp_abc2_index.html

はわりとがっつりC#の文法を網羅的に説明している
筆者の語りはうざいが・・・
2017/09/01(金) 22:03:23.25ID:sKG/CNAU0
Wikipediaでも

has-a
https://ja.wikipedia.org/wiki/Has-a
日本語では集約やコンポジション集約関係を意味する。

って書いてあるからね
2017/09/01(金) 22:08:01.94ID:XixvX44ca
クラスの機能はできるだけ簡素にを守っていると
is-aでいられるのは本当に基本的なクラスだけになる
普通にやってると絶対has-aの関係になる

継承を有効に使えるのはほんの一部
2017/09/01(金) 22:12:18.08ID:lXz+XipAa
>>823
c#最新?
で無いなら折角買ってもなぁ
2017/09/01(金) 22:35:02.89ID:ocN7XlE1M
>>821
少し古いがCLR via C#
C#やってて読んでないとモグリと言われる一冊
2017/09/02(土) 01:20:27.66ID:OFiHW9Qt0
javaは重い上にゴミ吐いて死ぬから嫌い
2017/09/02(土) 01:30:22.70ID:bF0cAHIp0
>>822
委譲ってなんですか?
2017/09/02(土) 04:34:44.87ID:tnM/ItCw0
>>826
イディオムの本、よかったけどなぁ。
2017/09/02(土) 09:49:42.44ID:TQXuPiZd0
約一年ぶりにプログラミングをしようと思いC#を選らびました
学生の頃にJavaやCは学習したため参考書の購入にあたって相談があります
今はこの三冊から購入を検討しています

http://www.sbcr.jp/products/4797347081.html
http://www.shoeisha.co.jp/book/detail/9784798122205
http://gihyo.jp/book/2017/978-4-7741-8758-7

最後の一冊の購入はほぼ決めているのですが、上の二冊のどちらかを読了した後読もうと考えています
Cのポインタ、Javaのオブジェクト等は理解しているつもりですので、今後辞書のように使えそうな独習C#に傾いています

上記以外でも適切な本やWebサイトがあれば教えていただきたいです。
2017/09/02(土) 09:59:09.48ID:5q6bBvmPM
>>831
独習c#ってc#のバージョン的に最新出てんの?
2017/09/02(土) 10:18:37.96ID:u30btijYd
>>831
c#で何をしたいの?
2017/09/02(土) 10:32:48.98ID:O1j4weutM
>>831
どれもハズレだな
CLR via C#
まずはこれを読もう
2017/09/02(土) 10:47:06.25ID:TQXuPiZd0
>>832
出版日から見るに最新のバージョンには対応していないように見えます

>>833
ひとまずはコンソール上で動くプログラムを作ってみようと思ってます
後々はデスクトップアプリやUnityなどに手が出せるという理由でC#にしました

>>834
英語に疎いおかげで良書でも読めません・・
2017/09/02(土) 10:50:46.46ID:oXM/ZCZp0
C#7.1なら本どころかMSDNのリファレンスじゃないと無理だろ
>>831
上に出ているじゃないか>>823
基本部分網羅してあってタダで見られるのだから本買う必要はない
2017/09/02(土) 11:08:34.82ID:TQXuPiZd0
>>836
最新版を追うなら本では厳しいということですね
目次を流し見してみましたが確かに入門には十分すぎる内容でした
ここで勉強してから本の購入を検討してみようと思います
2017/09/02(土) 11:16:20.91ID:oDByz4eYM
今のC#ってgithubで言語仕様決めてるからな
もうプログラミング言語は本で覚える時代じゃない
2017/09/02(土) 11:30:45.92ID:TQXuPiZd0
>>838
githubってそんなに活発なんですね
仕様が議論させるとは
2017/09/02(土) 12:13:28.97ID:KSbwYPK00
>>835
"CLR via C#"は和訳本出てるよ。
タイトルは"プログラミング .NET Framework"。
最新のは第4版。
2017/09/02(土) 12:50:09.28ID:TQXuPiZd0
>>840
和訳ありましたか、ありがとうございます
.NETとやらが必要になったタイミングで買おうと思います
2017/09/02(土) 13:47:13.38ID:GeyJWChH0
書籍もいいがM$燻製のChannel9とかもありじゃね
偶に裏話とかあるし
なんでC#(名称)になったとか(あっ知ってたらスルーね)
2017/09/02(土) 15:49:15.96ID:u30btijYd
>>841
.NETが必要じゃないc#の用途の方が珍しいと思われ
2017/09/02(土) 19:11:00.76ID:h042tsov0
>>837
えーでも結局誰かが書いたコードを辞書的に調べたいからそういう本欲しいんでしょ?
最新に対応してないのは困るなぁ
タプルとか出てこないね
最近書籍の対応遅いよね
2017/09/02(土) 19:55:06.66ID:9/Pt0bz9M
>>844
小さなバージョンアップを繰り返すようになったからね
C#開発のメインストリームがWeb系のバリバリな連中の方に移ってしまって、
書籍の主な購買層であったドカタ系が完全に取り残されて新機能に興味を示さなくなってしまったのも大きい
2017/09/02(土) 20:56:25.71ID:tnM/ItCw0
>>831
独習とイディオム読んだ独学だけど、一通りの事はできるようになったよ。
api呼んでみたり、データベース連携したりね、
独学やったあと、イディオム読めばええんちゃう?
2017/09/02(土) 21:24:01.88ID:RAK1J/Hs0
http://iup.2ch-library.com/i/i1846363-1504354345.png
このプログラムを作りたいんだけど
仕様が

・ルートフォルダ
手入力でディレクトリ先のパスフォルダを削除する事ができる
・参照
押してフォルダを選択してパスをルートフォルダのテキストボックスに表示

start
・クリックするとカレンダーが出てきて、そこから日付を選択
End
・start〜Endの期間の日付フォルダをまとめて削除できる

上記二つはできたけどstart〜endが分からん…
新人プログラマーで入ってまだ4日目なんですが
20時間以上やってるけど全くできない…
みんなこんなの本当にできるの?
入ってすぐ社内ではもう既に無能扱いされてますヾ(。>?<。)ノ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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