トップページ⇒tech
1002コメント389KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 393a-3Vwo)2016/08/12(金) 21:28:07.93ID:V2s4z4io0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

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

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

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

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

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

■関連スレ
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467142749/

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

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0232デフォルトの名無しさん (ワッチョイ 753a-t1qj)2016/08/28(日) 14:03:42.99ID:xWdxGs/J0
>>231
>>220 で弟さんが書き込んだ質問のことだね
0233デフォルトの名無しさん (ワッチョイ 7dc9-qQHP)2016/08/28(日) 14:08:16.64ID:c2+tORve0
そのクラスがファイルパスを受け取ること前提の作りというか、必ず使うんだったらコンストラクタの引数にしちゃうね俺だったら
0234デフォルトの名無しさん (ワッチョイ 72c6-aGiZ)2016/08/28(日) 14:48:01.49ID:ZPntcgGW0
スップ Sdb8-t1qj
0235デフォルトの名無しさん (ワッチョイ de3c-t1qj)2016/08/28(日) 14:51:19.13ID:6k1z50dx0
>>229
その条件だけなら
> データをもう一度使いたいとか使いたくないとかって差だけかな?
でしょ
0236デフォルトの名無しさん (ブーイモ MM25-qQHP)2016/08/28(日) 15:00:50.32ID:14dFRx50M
>>229
何処からでもなんの形式でも良いからデータをとってくるクラスだったらコンストラクタで渡す
使う側が指定したファイルを読み取るクラスならメソッド引数で渡す

コンストラクタ形式は依存性注入でよく使うパターン
メソッド引数形式は基本的なライブラリやユーティリティで使うパターン
0237デフォルトの名無しさん (ワッチョイ 7998-FJIZ)2016/08/28(日) 15:16:45.15ID:sEQC69z60
ワッチョイおもろいな
0238デフォルトの名無しさん (スップ Sdc8-t1qj)2016/08/29(月) 19:17:53.06ID:EoJ4HrxVd
ワッチョイワッチョイ
0239デフォルトの名無しさん (スプッッ Sdc8-t1qj)2016/08/29(月) 19:18:28.76ID:Ygc5GEa7d
文字列を変数名にする方法ないかね
0240デフォルトの名無しさん (ワッチョイ 34cb-t1qj)2016/08/29(月) 19:49:03.32ID:iTXMu3d10
>>229
上一択だろ
下はソースを読んでもらわないと動作が把握できない点がクソ
ドキュメント書いてみれば異質さに気づく

コンストラクタの引数に設定されたファイルを読み込む

とか、いやそれなんだよ
そもそも今設定されてるファイルパスなんだよ
ソースの行数が多くなってメソッドもたくさん増えると
ソースを上から下まで読んでみないと現在filepathにはいってるパスがわからない
可読性わるいんぬ
0241デフォルトの名無しさん (ブーイモ MM25-qQHP)2016/08/29(月) 20:26:13.16ID:RwSm4WeTM
>>240
業務用アプリケーションとかだと頻繁に使うよ
読み込んだデータは欲しいけど具体的なパスは知りたくない場合
というかパスどころかそもそもそれがファイルかどうかも知りたくない
データベースかもしれないしWebAPIかもしれないけどデータをとってくるということだけ知っていて具体的なデータソースは煩わしいから考えたくない
そういう時は下のパターンを使う必要がある
上のパターンはそれがファイルである事と物理的なパスを知っていないと使えない
0242デフォルトの名無しさん (スプッッ Sdc8-t1qj)2016/08/29(月) 20:37:54.26ID:v+VBJ2wid
あとの事考えたら、分割して下かなぁ。
ストリーム食わすとか。
とりあえず抽象型で「データアクセス」だけ宣言して、実装は別けると思う。
0243デフォルトの名無しさん (ワッチョイ 7ddc-mxSp)2016/08/29(月) 20:41:48.75ID:HSXk2xhn0
>>241
StreamやIEnumerable<>渡すならわかるが、
>>240の下だと結局ファイルパスに依存してるだろ
0244デフォルトの名無しさん (アウアウ Sa47-1rH5)2016/08/29(月) 20:53:22.10ID:p/LyuZWra
要件次第でしょ。

なんか訳の分からんこと言ってる人がいるけど、質問者(>>229)の2つのコードの違いは
データを読み出すクラスがデータのソースの情報を内部状態として持つかどうかでしょ。

まあ、パスを状態として持つとか普通はあんまりないよね。

設定ファイルなんか読む時に、パスが指定されないバージョンのメソッドが呼ばれた場合は
デフォルトのパスのファイルを読み出す、みたいなのはあると思うけど。
0245デフォルトの名無しさん (ブーイモ MM25-qQHP)2016/08/29(月) 20:54:25.43ID:r/JXef9/M
>>243
最終的には物理パスに依存するけどAを使う側のクラスはそれを知らなくていい
0246デフォルトの名無しさん (スプッッ Sdc8-t1qj)2016/08/29(月) 21:04:47.49ID:v+VBJ2wid
>>243
見るのは「データアクセス」だけなんだから、データアクセスだけ晒せば、そいつが何に依存してようが、
使う側はデータアクセスだけに依存するんじゃない?
0247デフォルトの名無しさん (ワッチョイ 34cb-t1qj)2016/08/29(月) 21:29:30.67ID:iTXMu3d10
>>241
いや、やっぱねーよ
特殊ケースなんかいくつもないだろ
それはそんときとして別途くむとして
普段は自分の読み込むファイルパスの保持なんかやめろ

そもそも入力と出力が明示されていない処理を書く奴はだいっきらいだ
a.unko();
これでファイル読込してるの?
どうやってわかるの?
もうソース読ませるの前提じゃん
0248デフォルトの名無しさん (ワッチョイ b7c0-gQqU)2016/08/29(月) 21:32:58.57ID:vgWDJ4LL0
なんかstaticメソッド好きそうやね
0249デフォルトの名無しさん (ワッチョイ de3c-t1qj)2016/08/29(月) 21:42:51.97ID:IVf1OSSE0
>>245-246
インスタンスは誰が生成するんだよ...
0250デフォルトの名無しさん (アウアウ Sa47-1rH5)2016/08/29(月) 21:43:18.04ID:p/LyuZWra
と言うより、質問者には悪いけど>>229はダメな初心者が
引数使わずにフィールドでデータを渡そうとする問題臭い。
0251デフォルトの名無しさん (ワッチョイ 7999-FJIZ)2016/08/29(月) 22:01:58.17ID:shRUR2oh0
Aの役務が判明しないことには何とも言えんだろ
FileStreamクラスならファイル名を保持しててもそれ程おかしくはない
初心者的なGodクラスだったら略

例外enumの話といい質問するのが下手くそだな
わざと急所に言及するのを避けてるようにすら見える
0252デフォルトの名無しさん (ワッチョイ 2dd6-dmM4)2016/08/29(月) 22:02:25.51ID:XJUgYycF0
毎度々々質問内容から離れて議論するよね
はっきり言って邪魔だから余所でやってくれよ
0253デフォルトの名無しさん (スプッッ Sdc8-t1qj)2016/08/29(月) 22:06:06.10ID:v+VBJ2wid
>>249
好きなやつがインスタンス起こせば良くない?
それすら使う側には感知しなくて良い事だと思うけど。

入力と出力が明示されてないとかナンセンスじゃない?
ポリモーフィズムの欠片も無いじゃん。
0254デフォルトの名無しさん (ワッチョイ ddcb-t1qj)2016/08/29(月) 22:47:13.84ID:hdD+Q5Ck0
>>253
入力と出力がわかるソースとわからないソースとどっちがいいの?
0255デフォルトの名無しさん (ブーイモ MM25-qQHP)2016/08/29(月) 23:20:12.78ID:wLwWuZngM
>>247
実装側のソースを読ませる前提じゃなくてむしろ実装側のソースなんてどうでもいいよってスタンス
パスをメソッド引数で渡す場合相手のクラスがファイルアクセスクラスでありファイルが何処にあってといった細かい情報を意識しないとコードが書けない
コンストラクタで渡せばそんな細かい情報は気にしないでも利用者側のコードが書ける
利用者側はそれがファイルである事すら知らなくてもコードが書ける

>>249
リゾルバーかファクトリー
ルートでnewしてもいい

>>253
必要な入出力がわかればいい
それ以外は知らなくて済むなら知らない方がいい
全ての入出力を明示しなければならないとしたらあっという間に引数が泥団子になり管理不能になる
0256デフォルトの名無しさん (ブーイモ MM25-qQHP)2016/08/29(月) 23:23:24.31ID:wLwWuZngM
もちろん>>236でも書いたように詳細まで入り込んで実装側のコードを書くとなった時はメソッドに引数を渡す形式の方が扱いやすい
0257デフォルトの名無しさん (ワッチョイ ddcb-t1qj)2016/08/29(月) 23:27:16.43ID:hdD+Q5Ck0
>>255
は?
いや、バグってる処理明らかにお前んとこなんだけど?
見えないことにメリットすでにないよね?
0258デフォルトの名無しさん (ブーイモ MM25-qQHP)2016/08/29(月) 23:34:58.10ID:wLwWuZngM
>>257
すまない
何を言いたいのかよくわからない
0259デフォルトの名無しさん (ワッチョイ ddcb-t1qj)2016/08/30(火) 01:22:01.52ID:I1jO9oPr0
>>258
だからぁ、隠して意味があるのって
あくまで俺がそのライブラリのユーザでソースの中身を絶対みない保証がある時だけだよな?
同じソースつついてチーム開発やってるときに隠すコードに意味なんかないよね?
としたときにさ、お前のコードって処理が終わったときに結果として何が変わったのか分かり難いどころか
全くわからない
入力は何でそれに対して出力は何なの?
これが把握できないとソースが追えない
組んだお前はわかるんかもしんないけど
テストもやりにくいっていうか出来ない
入力と出力が明示されていないから
0260デフォルトの名無しさん (ブーイモ MM25-qQHP)2016/08/30(火) 01:55:52.66ID:Pu1c7+TjM
>>259
・コンポーネントの疎結合と凝集性を維持するには実装詳細の隠蔽が常に不可欠でありメンテナであるかどうかは関係ない
・別チームの成果物の詳細を知らなければ自チームの開発ができないならばチームを分ける意味がない
・データ消費コンポーネントはデータの何が変わったのかを完全に知っているしデータアクセスコンポーネントは何が要求されて何を永続化するかを完全に知っている
ただしお互いの持つ知識を知る必要はなく契約のみを知っていれば良い
・もしもあるコンポーネントが別のコンポーネントの詳細を知らなければメンテできないとしたら実装への依存が発生している密結合な設計という事になる
・データアクセスコンポーネントの入力はなく出力はデータ消費コンポーネントの処理可能なデータであるという契約により明確である
・データ消費コンポーネントのソースを追うのにデータアクセスコンポーネントのソースを追う必要はない
逆も全く同様にソースを追う必要がない
・ファイルシステムに依存するうえにデータ消費コンポーネントとデータアクセスコンポーネントが密結合した設計の方が遥かにテストしにくい
0261デフォルトの名無しさん (アウアウ Sa47-1rH5)2016/08/30(火) 02:26:30.97ID:BDB9i/HHa
何か訳のわからんこと言い合ってるけど、上にも書いたけどあくまでケースバイケースとはいえ、
データのソースをオブジェクトの状態として保持しなきゃならない場合なんてむしろレアケースだよw

これも繰り返しだけど、質問者は恐らく、ダメな初心者にありがちな
「引数を使わずにフィールドでデータを渡そうとする病気」の一種にかかってるだけw
0262デフォルトの名無しさん (ワッチョイ 750c-dmM4)2016/08/30(火) 03:09:17.81ID:NRLFxuy60
.NET のクラスだと
StreamReader はコンストラクタで渡すタイプだね
メソッドで渡すタイプはなんだろ?
0263デフォルトの名無しさん (ワッチョイ 753a-t1qj)2016/08/30(火) 04:04:48.87ID:DZ7Cy/vX0
System.IO.File.ReadLines(string) とか?
static なので、今回の例示とはちょい違うかもしれないけど。
0264デフォルトの名無しさん (ワッチョイ 7dc9-qQHP)2016/08/30(火) 05:59:56.55ID:4ZBC1DOb0
>>263
それはコンストラクタで渡してるのと変わらない気がする
0265デフォルトの名無しさん (スップ Sdc8-t1qj)2016/08/30(火) 06:12:16.45ID:Is5DsxGEd
dynamic json = jsonConvert.DeseriarizeObject<dynamic>(jsonString)

で受けたjson形式の中から任意の配列を取り出す方法ない?
json.netで出来ればやりたいんだが俺にはできなかった
dynamicJsonなどでもできるならその手解きしてほしいどうやって入れるのかさっぱりわからん

http://stackoverflow.com/questions/30804299/querying-json-with-jsonpath-or-selecttokens-with-json-net-in-c-sharp
この辺を参考にしています
id== 99176901と指定したら

"video": { "local_recording_device":
{ "codecs": null },
"preferred_string": "___PREFERRED___", "streams":
{ "99176901":
{ "id": "99176901",
"name": "PTZ Camera",
省略
"y": 737, "window_id": "197302", "camera_id": null
}
が返ってくるような処理
0266デフォルトの名無しさん (スップ Sdc8-t1qj)2016/08/30(火) 06:29:25.55ID:Is5DsxGEd
こっちのが見やすいかも
http://www.newtonsoft.com/json/help/html/QueryingLINQtoJSON.htm
ここも参考にして一つの要素は取ることはできたんだけども

item配列の中のタイトルで一致させて
一致した以下の中身を取りたい
title == Json.NET 1.3 + New license + Now on CodePlex みたいに処理させたい

{ 'title': 'Json.NET 1.3 + New license + Now on CodePlex',
'description': 'Annoucing the release of Json.NET 1.3, the MIT license and the source on CodePlex',
'link': 'http://james.newtonking.com/projects/json-net.aspx',
'categories': [ 'Json.NET', 13 'CodePlex' ] }
0267デフォルトの名無しさん (ワッチョイ 7ddc-t1qj)2016/08/30(火) 06:44:08.93ID:vcGs2dWd0
JSONPath使えば
0268デフォルトの名無しさん (ワッチョイ 1e7b-FJIZ)2016/08/30(火) 06:50:17.14ID:9vXZ0KL70
ありません
次の方
0269デフォルトの名無しさん (スップ Sdc8-t1qj)2016/08/30(火) 06:54:25.29ID:Is5DsxGEd
>>267
jsonpathってjson.NETの機能?
調べても英語サイトしか出てこんくて読めんかった
0270デフォルトの名無しさん (ワッチョイ 7ddc-mxSp)2016/08/30(火) 06:58:22.58ID:vcGs2dWd0
>>269
http://www.newtonsoft.com/json/help/html/QueryJsonSelectTokenJsonPath.htm
仕様はググればいくらでも出てくる
英語は必須だから諦めて読め
0271デフォルトの名無しさん (スップ Sdb8-t1qj)2016/08/30(火) 07:17:13.44ID:Dvd/HI/Id
>>270
ふえええ…
"$.Manufacturers[?(@.Name == 'Acme Co')]"のNameとかを変数にできんのかねこれ
C#色々と便利だけども使いこなせてない俺からすると難解すぎる
0272デフォルトの名無しさん (ワッチョイ 7ddc-mxSp)2016/08/30(火) 07:30:13.27ID:vcGs2dWd0
>>271
普通に $”$.Manufacturers[?(@.Name == ‘{変数名}’)]” (VS2015でないならString.Format)でいいでしょ
インジェクション脆弱性になる恐れがあるからWebから受け取った値を使って結果をWebに返すようなアプリならエスケープが必要
0273デフォルトの名無しさん (ワッチョイ ddcb-t1qj)2016/08/30(火) 07:34:30.37ID:I1jO9oPr0
>>260
その思想なら入力も出力もないメソッド呼び出させるぐらいなら完全にバックグラウンドで動けよ
newした時点でほかのメソッド呼び出させる自体が不具合
それができないなら内部の処理を呼び出し側が把握していないとお前のメソッドは呼べない
0274デフォルトの名無しさん (ワッチョイ b7c0-gQqU)2016/08/30(火) 10:20:54.70ID:+0POpDn70
>>262
.netのReader/Writer系はコンストラクタでファイルパスやStream渡すからそれが当たり前だと思ってた
スレの先生方はこの手のソースをどう書いているのか一度見てみたいところ
0275デフォルトの名無しさん (アウアウ Sa45-1rH5)2016/08/30(火) 10:31:45.95ID:bAuY2Feoa
>>274
何か相変わらず訳わからんこと言ってるけど、それらがコンストラクタでストリームを取るのは
生きている間それを使いまわすつまり保持している必要があるからだw

何度も言ってるように、データソースのパスを保持する必要があるかどうかはケースバイケースだが、
普通はそんな必要はない。
0276デフォルトの名無しさん (ワッチョイ 753a-t1qj)2016/08/30(火) 11:03:22.19ID:DZ7Cy/vX0
例示も無しに『普通は』とか言い切っちゃうのは残念やね。
自分でコードを書く場合は、ってことかな?
0277デフォルトの名無しさん (ワッチョイ 7a23-gQqU)2016/08/30(火) 11:33:59.30ID:XXcHCJl60
抽象化は美しいけど大して役に立たないんだよな
0278デフォルトの名無しさん (アウアウ Sa45-1rH5)2016/08/30(火) 11:45:15.42ID:bAuY2Feoa
>>276
何か頭悪そうだけど、そもそも質問者が「どちらがいいか」と聞いてる時点で、
答えは出てる。意味分かる?

少なくとも質問者の要件を満たすうえでパスを保持しておく必要はないってことだ。
0279デフォルトの名無しさん (オイコラミネオ MM34-t1qj)2016/08/30(火) 12:09:36.71ID:fVgKPSWmM
>>277
それはシステムの組み方によるな。
0280デフォルトの名無しさん (アウアウ Sa01-hMGK)2016/08/30(火) 13:19:43.33ID:Kix2dOMra
実務レベルで
そういうクラス分けについての判断は
やり始める時にある程度決めるのか
やってる途中で帰るのか
気になる
どっちもなんだろうけど
0281デフォルトの名無しさん (ワッチョイ 753a-t1qj)2016/08/30(火) 13:21:38.04ID:DZ7Cy/vX0
>>278
>>229 のことなら、何回か同じパスを使うか、そうでないかは明示してないな。

あと、自分はFile.ReadLines()みたいなパターンを認めてるよ?
0282デフォルトの名無しさん (アウアウ Sa45-1rH5)2016/08/30(火) 13:42:31.90ID:bAuY2Feoa
>>281
だから、同じファイルを少しずつ読む必要があるとかランダムアクセスする必要があるなら、
>>229の最初のコードは最初から選択肢にならないよね。

もちろんやってできないことはないけど普通はしないよね。
もちろん質問者が普通じゃない可能性もあるわけだけど、その可能性は無視すれば
質問者の要件は自ずとわかるでしょ。
0283デフォルトの名無しさん (ワッチョイ 7cd4-hifv)2016/08/30(火) 14:34:52.62ID:/OGdet/T0
受けるわけじゃないけど試験 70-483Programming in C#の試験項目を見てたんだけどさ
https://www.microsoft.com/ja-jp/learning/exam-70-483.aspx
項目を見ると売れ筋の入門書って試験範囲の2割ぐらいしかカバーしてないのね
これみんな分かるもんなの?
0284デフォルトの名無しさん (ワッチョイ 79d9-FJIZ)2016/08/30(火) 17:16:57.96ID:qsOxDjRb0
>>271
ところでお前の息子二人が書き込んだ質問で荒れてんだけどどう思う?
お前っていつもそういう態度取ってんの?
0285デフォルトの名無しさん (ワッチョイ 79d9-FJIZ)2016/08/30(火) 17:18:44.03ID:qsOxDjRb0
そういう態度ってのは、質問に対してリアクションが帰っているのにスルーして違う質問を始めるって舐めた態度のことな
せめて質問を取り下げろ、カス
0286デフォルトの名無しさん (アウアウ Sa45-1rH5)2016/08/30(火) 17:19:49.06ID:bAuY2Feoa
変なの来たなw
0287デフォルトの名無しさん (ワッチョイ 7cd4-hifv)2016/08/30(火) 18:29:06.24ID:/OGdet/T0
高卒フリーターだらけの世の中になってから、にちゃんは統合失調症だらけだよ
こんなの驚くことじゃありません
0288デフォルトの名無しさん (ワッチョイ 7999-4yR4)2016/08/30(火) 18:50:14.16ID:34wg0DNp0
スップ Sdc8-t1qj
0289デフォルトの名無しさん (スプッッ Sdc8-t1qj)2016/08/30(火) 19:38:27.94ID:h7mqDNBAd
>>272
サンクスありがとう
一応予定のは取れたよ
0290デフォルトの名無しさん (ワッチョイ 7939-4yR4)2016/08/30(火) 19:43:53.59ID:q9MYe/9f0
質問してたのはスプッ Sdc8-t1qjだろ
なりすましは止めとけ
0291デフォルトの名無しさん (アウアウ Sa01-FiSL)2016/08/30(火) 20:22:52.29ID:tVyn06Qka
つーかさー
C#の入門書でまともな本なくね?
マジでブチ切れそう
日本語不自由なの多すぎ
0292デフォルトの名無しさん (ワッチョイ 7c7b-aGiZ)2016/08/30(火) 20:29:23.95ID:KZWXOdr20
プログラミング言語なんて習うより慣れよ
手段であって目的ではないんだよ
0293デフォルトの名無しさん (ワッチョイ 7141-FiSL)2016/08/30(火) 20:35:25.17ID:n1CqpYHX0
自分なりに調べてなんとか慣れつつあるとはいえ
ちゃんとした書籍を持ってたいなと思ってるんだけど
じゃあこのまま突っ走るわい
0294デフォルトの名無しさん (ワッチョイ ddcb-t1qj)2016/08/30(火) 21:02:55.93ID:I1jO9oPr0
>>292
言語のマイナー機能をあえて使う奴って設計ヘタクソだよな
0295デフォルトの名無しさん (ワッチョイ 753a-t1qj)2016/08/30(火) 21:21:28.20ID:DZ7Cy/vX0
implicitとかさぞかし意味が有るのだろうと思って書いてみたのを思い出す……
0296デフォルトの名無しさん (ワッチョイ 9c5e-dmM4)2016/08/30(火) 21:36:26.37ID:EHChjX9a0
>>294
初心者のスレだし、そういうのが趣味の人もいるかもしれないw
コード書く前に手法であれこれ悩んでいるの見るとイラッとするけど
0297デフォルトの名無しさん (アウアウ Sa45-1rH5)2016/08/30(火) 21:53:29.11ID:Q9l6tJm0a
>>295
暗黙変換は普通に使いまくるよw
0298デフォルトの名無しさん (ワッチョイ 2dd6-dmM4)2016/08/30(火) 22:05:54.75ID:FkhIllLo0
変態的なライブラリを作る時にはお世話になる
0299デフォルトの名無しさん (ワッチョイ 753a-t1qj)2016/08/30(火) 22:42:29.99ID:DZ7Cy/vX0
>>298
常用しない機能をたまに書くと楽しいよね
0300デフォルトの名無しさん (ワッチョイ 7679-t1qj)2016/08/31(水) 10:50:08.29ID:EN4ZQTF90
>>291
C#自体は最初は覚える事が多いけどそんなに難しい言語じゃない
C#の入門書にまともなものがないと書いているけどそれはお前がまだ入門書も読めない位知識が無いってこと
まずどっかで軽くオブジェクト指向勉強してこい
話しはそれからだ
0301デフォルトの名無しさん (ワッチョイ 7cd4-oLrM)2016/08/31(水) 11:40:54.21ID:x8Mu4zVi0
インターフェイスについて教えてください
インターフェイスはよくインスタンス化できないと説明されていますが
IEnumerable<string> myString = new{
0302デフォルトの名無しさん (ワッチョイ 7cd4-oLrM)2016/08/31(水) 11:44:31.17ID:x8Mu4zVi0
ごめんなさい、サニタイジングされているのか途中で書き込みが切られてしまいました

インターフェイスはよくインスタンス化できないと説明されていますが
IEnumerable myString = new{(省略しないと書き込めない・・・・!?)
このような宣言を見ます
あたかもインターフェイスをインスタンス化しているかのように見えてしまいますが、一体どういうことが起きているのか教えていただけないでしょうか
よろしくお願いします
0303デフォルトの名無しさん (アウアウ Sa45-1rH5)2016/08/31(水) 11:52:41.19ID:97WvllZya
>>302
そのレベルならこんなところで質問するより真面目に入門書でも読んだ方がいいと思うw
本じゃなくてもC#のチュートリアルなんてweb上にもいくらでもあるよね
0304デフォルトの名無しさん (ワッチョイ 7cd4-oLrM)2016/08/31(水) 12:06:50.43ID:x8Mu4zVi0
本を読んでいてよくわからないんです
よろしくお願いします
0305デフォルトの名無しさん (ワッチョイ 3d94-12yH)2016/08/31(水) 12:34:47.53ID:lVEp965D0
そのインターフェースを持ったクラスをインスタンス化してる
0306デフォルトの名無しさん (ワッチョイ 725b-Ptq2)2016/08/31(水) 12:51:18.96ID:sHLzsEsl0
実態を抽象的(インターフェース)に扱っている。

インターフェースは実装をもたないが、
実装(オブジェクト)はインターフェースを持つことができる。

結局は、インターフェースを介して、実態を扱っている。
0307デフォルトの名無しさん (ワッチョイ 0448-40Y4)2016/08/31(水) 13:17:05.93ID:/t7yyFm+0
IEnumerableはすごく良く使うのでMSDNを熟読すべし
0308デフォルトの名無しさん (アウアウ Sa45-1rH5)2016/08/31(水) 13:58:18.12ID:97WvllZya
それで通じるならこんな質問はしないと思うよw
0309デフォルトの名無しさん (JP 0Hcd-MmRS)2016/08/31(水) 14:29:09.86ID:mqymnS7ZH
複雑すぎる実体に対して最小限の情報(の窓口)を求めている

タクシーに乗る時にどこの会社くらいは気にするけど
運転手が結婚しているかとか余分な情報はいらない
0310デフォルトの名無しさん (ワッチョイ 68ee-Knxq)2016/08/31(水) 14:58:51.05ID:6xfbGy8w0
クラスとメソッドってなんですか?
0311デフォルトの名無しさん (シャチーク 0C34-RDkh)2016/08/31(水) 19:00:04.92ID:NdFTvm0OC
string[] input;
string[] Name;
〜〜

Name = new input;

やりたいことは、inputの値渡しなのですが、こういうことはできないの〜〜?
0312デフォルトの名無しさん (ワッチョイ b77b-Ne3O)2016/08/31(水) 19:23:40.95ID:TqtXovwc0
配列をコピーしたいってこと?
ならCloneメソッドとか シャローコピーだけど
0313デフォルトの名無しさん (シャチーク 0C34-RDkh)2016/08/31(水) 19:38:21.91ID:NdFTvm0OC
>>312 ありがとうございます!
0314デフォルトの名無しさん (アウアウ Sa01-FiSL)2016/08/31(水) 20:09:09.62ID:HmEUyXpka
普通にリモコンでいいんじゃないの?
電化製品をリモコン使って動かせるけど
内部の電圧だったりチップを直接は動かせないわけで
限定された操作を使用者に提示するというか
0315デフォルトの名無しさん (アウアウ Sa45-1rH5)2016/08/31(水) 20:16:51.60ID:97WvllZya
>>314
それは普通隠蔽とかカプセル化とかって言うんだよね。
普通はそれをインターフェイスが提供する機能とは言わないよね。
0316デフォルトの名無しさん (ドコグロ MM1c-Ptq2)2016/08/31(水) 20:24:53.36ID:F//NfMCdM
>>312
シャローコピーを使う場面ってどこですか?
変数が同じ参照持ってるなら、同じ実態扱うのとほぼ変わらないような。
0317デフォルトの名無しさん (ブーイモ MMb8-qQHP)2016/08/31(水) 22:41:12.43ID:4jzGw3cJM
>>316
ディープコピーを実装する時とか
少しだけ変更した新しい値オブジェクトが欲しい時とか
並行処理の排他処理とか
0318デフォルトの名無しさん (ワッチョイ f3dc-OoDU)2016/09/01(木) 00:05:55.99ID:Xz8sejsg0
string[]ならシャローコピーでいいだろ
0319デフォルトの名無しさん (ワッチョイ 777b-UYCy)2016/09/01(木) 00:25:50.14ID:nGqVI4Wr0
基本的に、C/C++以外の言語は、参照のコピー(シャローコピー)になる

それでは困る場合だけ、Cloneやディープコピーを考えればよい

ディープコピーでは、オブジェクト内にオブジェクトがあって、
その中にもオブジェクトがあって、再帰的に何階層まで、ディープコピーするかも考える
0320デフォルトの名無しさん (ササクッテロ Sp8f-yYxc)2016/09/01(木) 06:32:14.88ID:50/1x8Mup
system.timers.timer
について質問です
system.timers.timerを使って一定時間後にダイアログを表示するプログラムを作りました
しかしダイアログが表示されるのは一定時間+10〜20秒です
ちゃんと一定時間後にダイアログを表示させたいのですどうすればいいでしょうか?
0321デフォルトの名無しさん (ワッチョイ 931e-RETc)2016/09/01(木) 07:41:52.97ID:lrlraAVg0
最小限の再現コード出さずになぞなぞするのやめてくれぇ?
0322デフォルトの名無しさん (ササクッテロ Sp8f-yYxc)2016/09/01(木) 08:01:06.85ID:50/1x8Mup
>>321
他に同様な症状に陥った方はおりませんかね?
もしくは僕だけの問題なのでしょうか?
0323デフォルトの名無しさん (ドコグロ MM1f-TXi9)2016/09/01(木) 08:22:02.35ID:rDaq2EciM
>>322
私もよくダイアログが出ずに、プログラムが落ちてしまいます。

心当たりあれば教えて欲しいです。
0324デフォルトの名無しさん (ササクッテロ Sp8f-iG4w)2016/09/01(木) 08:27:09.11ID:Uci5d0kTp
あれなんなんだろうな
0325デフォルトの名無しさん (ワッチョイ 6730-l4Vs)2016/09/01(木) 09:49:34.21ID:tRE5XnQ90
思った通りに動くのではなく
書いた通りに動くって話でせう

タイマーの件は何となく想像がつくが
俺もなぞなぞはしたくない
0326デフォルトの名無しさん (アウアウ Sacf-NO8Q)2016/09/01(木) 16:20:07.57ID:L3a4bYLCa
文字列にサロゲートペアが含まれる場合でも正確な文字数を返すメソッドって
やっぱりBCLには存在しない?
0327デフォルトの名無しさん (ワッチョイ 9319-Z7wn)2016/09/01(木) 16:22:19.24ID:aazltn1Z0
StringInfo
0328デフォルトの名無しさん (アウアウ Sacf-NO8Q)2016/09/01(木) 16:50:51.41ID:L3a4bYLCa
>>327
あーなるほど、こんなのあったのか。

しかし何だか存在意義のよくわからんクラスだな。
何でStringに実装されてないんだろう。
0329デフォルトの名無しさん (ササクッテロ Sp8f-yYxc)2016/09/01(木) 17:53:52.76ID:Yvhf9dDVp
タイマーの剣ですけど
ソース出すんで待っててください!
0330デフォルトの名無しさん (アウアウ Sacf-NO8Q)2016/09/01(木) 18:01:48.26ID:L3a4bYLCa
今脳内で剣の舞が再生された件
0331デフォルトの名無しさん (ワッチョイ 8fbd-vSVO)2016/09/01(木) 18:33:18.37ID:pyrbLu4p0
http://ideone.com/ahJjSD
■ このスレッドは過去ログ倉庫に格納されています