「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part127 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1489498042/
■関連スレ
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
探検
ふらっと C#,C♯,C#(初心者用) Part128 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/05/02(火) 22:05:40.13ID:OPFlvhxj489デフォルトの名無しさん
2017/05/25(木) 07:10:56.11ID:sTAredU3 現行で進んでるような専用の板が見付からなかったのでスレチかも知れないけど助けてくれませんか
概念的な話になります
http通信を行っているc#のサーバ側の開発に携わったんだけどリソースって言葉が曖昧すぎて困ってます
httpで通信するときに
put ←動作
uri ←対象
body ←引数
渡してるのはuriとbodyだからこの二つがリソースを指すのだろうか??
それともどちらか片方?
概念的な話になります
http通信を行っているc#のサーバ側の開発に携わったんだけどリソースって言葉が曖昧すぎて困ってます
httpで通信するときに
put ←動作
uri ←対象
body ←引数
渡してるのはuriとbodyだからこの二つがリソースを指すのだろうか??
それともどちらか片方?
490デフォルトの名無しさん
2017/05/25(木) 07:18:51.19ID:iDw56Z9j >>489
リソースの定義が曖昧だとしても実用上何か困る?
リソースの定義が曖昧だとしても実用上何か困る?
491デフォルトの名無しさん
2017/05/25(木) 07:26:10.80ID:sTAredU3 >>490
今あるやつを猿真似すれば良いだけだから開発には困らない
ただ理解して書かないと何を何のために追加したのかも説明できないから理解したい
言葉の整理がしたくて調べてたけどリソースについて全然記述が見つからず...
今あるやつを猿真似すれば良いだけだから開発には困らない
ただ理解して書かないと何を何のために追加したのかも説明できないから理解したい
言葉の整理がしたくて調べてたけどリソースについて全然記述が見つからず...
492デフォルトの名無しさん
2017/05/25(木) 07:26:53.04ID:Xlj75eVQ >>489
RESTのリソースっていうのは「顧客1」「5月25日の投稿」といった、名前によって識別される何かを指す抽象概念
Webならデータがサーバーに格納されてURLによってアクセス可能な状態になった時点でリソースとなる
RESTのリソースっていうのは「顧客1」「5月25日の投稿」といった、名前によって識別される何かを指す抽象概念
Webならデータがサーバーに格納されてURLによってアクセス可能な状態になった時点でリソースとなる
493デフォルトの名無しさん
2017/05/25(木) 07:31:04.00ID:iDw56Z9j494デフォルトの名無しさん
2017/05/25(木) 07:37:42.57ID:sTAredU3495デフォルトの名無しさん
2017/05/25(木) 07:45:57.64ID:Xlj75eVQ496デフォルトの名無しさん
2017/05/25(木) 07:49:43.64ID:72iDOUXT >>495
あ 書き方が悪かった
クライアントが上記のように通信してきたとしたら
サーバー側は上記を三つのように解釈して処理をする?
って聞いた意味だった
データをentityに受け取って、URLで識別してアクセス可能になった
この状態をリソースと呼ぶ?それともentityのことをリソースと呼ぶ...?
あ 書き方が悪かった
クライアントが上記のように通信してきたとしたら
サーバー側は上記を三つのように解釈して処理をする?
って聞いた意味だった
データをentityに受け取って、URLで識別してアクセス可能になった
この状態をリソースと呼ぶ?それともentityのことをリソースと呼ぶ...?
497デフォルトの名無しさん
2017/05/25(木) 07:55:41.69ID:a8axhl9c >>488
リポジトリの差し替えじゃなくてproviderの差し替えだろ
リポジトリの差し替えじゃなくてproviderの差し替えだろ
498デフォルトの名無しさん
2017/05/25(木) 07:56:41.84ID:Xlj75eVQ499デフォルトの名無しさん
2017/05/25(木) 08:01:40.11ID:72iDOUXT >>498
ああああああああああああああああああああああああああああああああああああああ
わかった 今わかったかも
Aのファイルがサーバーにあったとしたときに
クライアント
Aにputするよ
URLは取り決めでxxxxだよ
Aに操作する値はbodyだよ
こういうときにサーバーで言うリソースってのは
クライアントが送ってきた情報ではなく、その対象となるAか!!!
ああああああああああああああああああああああああああああああああああああああ
わかった 今わかったかも
Aのファイルがサーバーにあったとしたときに
クライアント
Aにputするよ
URLは取り決めでxxxxだよ
Aに操作する値はbodyだよ
こういうときにサーバーで言うリソースってのは
クライアントが送ってきた情報ではなく、その対象となるAか!!!
500デフォルトの名無しさん
2017/05/25(木) 08:02:52.71ID:iDw56Z9j 君がそのPJではリソースとはこういう意味で使ってますと決めればいいやん。
501デフォルトの名無しさん
2017/05/25(木) 08:09:40.42ID:Xlj75eVQ >>497
一緒だよ
アプリからのエンティティの操作がDBMSに依存しないことをEFが担保する
それをMSがproviderの差し替えで実装してようが、そんなことはどうでもいい
少なくともDapperを使って実装したリポジトリパターンではその責任をリポジトリに負わせているのだから、当然リポジトリを差し替えるのが筋
一緒だよ
アプリからのエンティティの操作がDBMSに依存しないことをEFが担保する
それをMSがproviderの差し替えで実装してようが、そんなことはどうでもいい
少なくともDapperを使って実装したリポジトリパターンではその責任をリポジトリに負わせているのだから、当然リポジトリを差し替えるのが筋
502デフォルトの名無しさん
2017/05/25(木) 08:14:47.64ID:72iDOUXT503デフォルトの名無しさん
2017/05/25(木) 08:25:23.90ID:a8axhl9c >>501
各DBの違いを吸収するためにproviderを作ってるのはあくまでもDBベンダーだからね。
各DBの違いを吸収するためにproviderを作ってるのはあくまでもDBベンダーだからね。
504デフォルトの名無しさん
2017/05/25(木) 11:34:34.78ID:OlDCYnHs WinFormでForm1.csで使用しているコントロールがデザインのどこにあるか探す方法って、
Form1.Designer.csの座標を見る以外にありますでしょうか?
また変数等を検索する時、コメント部分はスキップする方法はありますでしょうか?
Form1.Designer.csの座標を見る以外にありますでしょうか?
また変数等を検索する時、コメント部分はスキップする方法はありますでしょうか?
505デフォルトの名無しさん
2017/05/25(木) 11:40:39.74ID:WvpLhP2L アプリ終了時に手動で破棄するべきリソースとそうでないリソースの区別はどうつけたらいいのですか。
Disposeメソッドを持っているクラスのインスタンスは全部、アプリ終了時にDisposeすべきなのでしょうか。
Disposeメソッドを持っているクラスのインスタンスは全部、アプリ終了時にDisposeすべきなのでしょうか。
506デフォルトの名無しさん
2017/05/25(木) 11:57:56.72ID:QWlkLrx5507デフォルトの名無しさん
2017/05/25(木) 12:11:41.77ID:z/F8HTBQ 数値の配列(リスト)が30程度あって、その配列を要素ごとに加算して
一つの配列にしたいのですが、何かいい方法あるでしょうか。
一つの配列にしたいのですが、何かいい方法あるでしょうか。
508デフォルトの名無しさん
2017/05/25(木) 12:40:39.56ID:WvpLhP2L509デフォルトの名無しさん
2017/05/25(木) 12:48:52.27ID:z/F8HTBQ510デフォルトの名無しさん
2017/05/25(木) 13:28:09.73ID:WvpLhP2L あ、元になる数値配列の要素数がそれぞれ違う場合は、
public static int[] CombineArray(int[] dest, params int[][] source)
{
int n = dest.Length;
for(int i = 0; i < source.Length; i++)
{
for(int j = 0; j < source[i].Length; j++)
{
dest[j] += source[i][j];
}
}
return dest;
}
で
public static int[] CombineArray(int[] dest, params int[][] source)
{
int n = dest.Length;
for(int i = 0; i < source.Length; i++)
{
for(int j = 0; j < source[i].Length; j++)
{
dest[j] += source[i][j];
}
}
return dest;
}
で
511デフォルトの名無しさん
2017/05/25(木) 13:49:55.87ID:OlDCYnHs >>506
状況は引き継いだソフトが、テスト用のコントロールも貼りまくりで、
使用しているコントロール名も「label1」とか貼ったまま使ってて、
未使用のコントロールも沢山あるので、
未使用はコメントにしたり名前を付けて整理しているところです。
ドキュメントアウトラインで整理しながら簡単に見つけられますね。
参照の検索で使用しているか確認出来ますね。
ありがとうございました。
状況は引き継いだソフトが、テスト用のコントロールも貼りまくりで、
使用しているコントロール名も「label1」とか貼ったまま使ってて、
未使用のコントロールも沢山あるので、
未使用はコメントにしたり名前を付けて整理しているところです。
ドキュメントアウトラインで整理しながら簡単に見つけられますね。
参照の検索で使用しているか確認出来ますね。
ありがとうございました。
512デフォルトの名無しさん
2017/05/25(木) 13:57:53.66ID:Pu7QS8L6 未使用は果たして本当に未使用かな?
ってぐらい動的に変わるコントロールがあったりして作った奴ぶっ殺したくなることもしばしば
ってぐらい動的に変わるコントロールがあったりして作った奴ぶっ殺したくなることもしばしば
513デフォルトの名無しさん
2017/05/25(木) 14:09:25.89ID:QWlkLrx5514デフォルトの名無しさん
2017/05/25(木) 17:42:16.87ID:KYr+IXo2 yield returnした方がスマート
515デフォルトの名無しさん
2017/05/25(木) 22:18:41.97ID:GaW0ueJ6516デフォルトの名無しさん
2017/05/26(金) 10:09:45.86ID:oMsVEL65 C#の言語的な話じゃないので入れ違いかもしれないですけど
パワポをC#から弄ろうとしてますが、ファイルを掴んだままになってしまいます。
using System.Windows.Forms;
using DocumentFormat.OpenXml.Packaging;
PresentationDocument ppt = PresentationDocument.Open(@"D:\A.pptx", true);
ppt.SaveAs(@"D:\B.pptx");
ppt.Close();
ppt.Dispose();
MessageBox.Show("できました");
A.pptx を読み込んで B.pptx に書き込むだけでテストしてますが
この実行プロセスを終了させないと(「できました」の表示の時点では) B.pptx が掴まれているらしく
開いたりコピーしたりできません。
誰が掴んでるか調べる手段はありませんでしょうか。
パワポをC#から弄ろうとしてますが、ファイルを掴んだままになってしまいます。
using System.Windows.Forms;
using DocumentFormat.OpenXml.Packaging;
PresentationDocument ppt = PresentationDocument.Open(@"D:\A.pptx", true);
ppt.SaveAs(@"D:\B.pptx");
ppt.Close();
ppt.Dispose();
MessageBox.Show("できました");
A.pptx を読み込んで B.pptx に書き込むだけでテストしてますが
この実行プロセスを終了させないと(「できました」の表示の時点では) B.pptx が掴まれているらしく
開いたりコピーしたりできません。
誰が掴んでるか調べる手段はありませんでしょうか。
517デフォルトの名無しさん
2017/05/26(金) 10:28:52.28ID:wx4ZD6yu518デフォルトの名無しさん
2017/05/26(金) 10:53:24.42ID:oMsVEL65 そうじゃなくて、Close と Dispose を明示しているにも関わらず
内部で保存先のファイルを掴んだままになっちゃってて弄れない、って意味です。
プロセス(EXE)を落とせば解放されるんですけど、続きの処理があるもんで。
内部で保存先のファイルを掴んだままになっちゃってて弄れない、って意味です。
プロセス(EXE)を落とせば解放されるんですけど、続きの処理があるもんで。
519デフォルトの名無しさん
2017/05/26(金) 10:58:38.55ID:YpZka8l7 SaveAsがOpenXmlPackageオブジェクト返すじゃん? これIDisposable
520デフォルトの名無しさん
2017/05/26(金) 11:02:29.39ID:oMsVEL65 なんと!
まさにビンゴでした。
ppt.SaveAs(@"D:\B.pptx").Dispose();
で無事に目的を果たせました!
ありがとうございました!!
まさにビンゴでした。
ppt.SaveAs(@"D:\B.pptx").Dispose();
で無事に目的を果たせました!
ありがとうございました!!
521デフォルトの名無しさん
2017/05/26(金) 11:07:25.38ID:wx4ZD6yu Disposeが実行された != オブジェクトが解放された
522デフォルトの名無しさん
2017/05/26(金) 11:09:43.92ID:2W2wzaM7 そういやusing使っても明示的にCloseする必要ってあるのかね?
523デフォルトの名無しさん
2017/05/26(金) 11:12:46.50ID:VZJYvcQe524デフォルトの名無しさん
2017/05/26(金) 11:15:03.63ID:2W2wzaM7 >>523
ありがとう
ありがとう
525デフォルトの名無しさん
2017/05/26(金) 14:46:54.86ID:F6wIZe6/ すみません
Char.IsNumber()メソッドは文字列の内の一桁しか判別できないのですか?また2桁以上を判別したい場合はどのメソッドを使うと良いのでしょうか
Char.IsNumber()メソッドは文字列の内の一桁しか判別できないのですか?また2桁以上を判別したい場合はどのメソッドを使うと良いのでしょうか
526デフォルトの名無しさん
2017/05/26(金) 14:53:33.20ID:YpZka8l7 文字と文字列は区別付けよう
ところでChar.IsNumberはいわゆる全角の数字とかローマ数字とかもtrueって評価するけどその辺どうすんの?
ところでChar.IsNumberはいわゆる全角の数字とかローマ数字とかもtrueって評価するけどその辺どうすんの?
527デフォルトの名無しさん
2017/05/26(金) 15:15:25.80ID:V0QADimW >>525
先ず何がしたいのか言えよ
先ず何がしたいのか言えよ
528デフォルトの名無しさん
2017/05/26(金) 15:21:51.18ID:B4KqQKUi529デフォルトの名無しさん
2017/05/26(金) 15:22:13.46ID:sdCJMym9 テキストボックスに突っ込まれた文字列が数値かそうでないか判断したいんだきっと
でもisnumberじゃ駄目だったよイマココ
int.parseだきっとint.parseが求める答えだったんだよ!
シラネ( ´∀`)b
でもisnumberじゃ駄目だったよイマココ
int.parseだきっとint.parseが求める答えだったんだよ!
シラネ( ´∀`)b
530デフォルトの名無しさん
2017/05/26(金) 15:26:56.97ID:V0QADimW 俺だったらconvert.toint32だな
531デフォルトの名無しさん
2017/05/26(金) 15:32:43.39ID:/9nVrKkw 俺なら正規表現を使う
532デフォルトの名無しさん
2017/05/26(金) 15:39:55.03ID:nLIvGLmM なんでお前等は嫌みな回答しかできないの?
533デフォルトの名無しさん
2017/05/26(金) 15:44:35.17ID:IbAmlhQI534デフォルトの名無しさん
2017/05/26(金) 15:59:29.40ID:IgcvauO6 符号付きとか全角とかアラビア数字とかHとかどう判定したいのっと
535デフォルトの名無しさん
2017/05/26(金) 16:30:48.38ID:F6wIZe6/536デフォルトの名無しさん
2017/05/26(金) 16:42:29.54ID:sdCJMym9537デフォルトの名無しさん
2017/05/26(金) 17:21:30.79ID:VWRnjUMH アルファベットのIVX使ってギリシャ数字書くやつが居るから面倒なんだわ
538デフォルトの名無しさん
2017/05/26(金) 18:23:18.38ID:bEaQUHBT >>535
ないと思うけど、国外向けのプログラムを作る時はロケールも意識しないとあかんよ
ないと思うけど、国外向けのプログラムを作る時はロケールも意識しないとあかんよ
539デフォルトの名無しさん
2017/05/26(金) 18:44:14.72ID:YpZka8l7 >>535
> Char.IsNumberに渡すのはstring のような文字列型も渡せるのではないのですか?
Char.IsNumberにStringを渡せるオーバーロードの引数は
Char.IsNumber(String, int)
この文字列の何番目の文字を判定しますか? ってこと
> Char.IsNumberに渡すのはstring のような文字列型も渡せるのではないのですか?
Char.IsNumberにStringを渡せるオーバーロードの引数は
Char.IsNumber(String, int)
この文字列の何番目の文字を判定しますか? ってこと
540デフォルトの名無しさん
2017/05/26(金) 18:51:35.84ID:bEaQUHBT そんなオーバーロードあるのかw
stringのインデクサがあれば要らないはずだけど
stringのインデクサがあれば要らないはずだけど
541デフォルトの名無しさん
2017/05/26(金) 19:03:32.42ID:2W2wzaM7 最近.net2.0の案件ばかりで泣きたくなってくる
542デフォルトの名無しさん
2017/05/26(金) 19:15:44.49ID:4GVMWdle >>541
かわいそうに…
かわいそうに…
543デフォルトの名無しさん
2017/05/26(金) 19:16:58.08ID:C1R8iru0 古いものの方が安心感がある
って人多いよね
何の根拠もないんだけどw
って人多いよね
何の根拠もないんだけどw
544デフォルトの名無しさん
2017/05/26(金) 19:58:52.45ID:w0WYW3h/545デフォルトの名無しさん
2017/05/26(金) 20:13:06.21ID:bEaQUHBT546デフォルトの名無しさん
2017/05/26(金) 21:39:41.16ID:Ym5et5f0547デフォルトの名無しさん
2017/05/26(金) 22:02:23.90ID:Heb9aC5z 失敗の可能性にお金を払いたくないだけですな
とても便利になろうとも失敗の可能性があるからには手を出したくないって方が多い印象
とても便利になろうとも失敗の可能性があるからには手を出したくないって方が多い印象
548デフォルトの名無しさん
2017/05/26(金) 22:24:11.81ID:Ym5et5f0 それが最大の失敗だよな
ミスを恐れて何もしないで結果、損をする
ダメ人間そのままじゃないか
ミスを恐れて何もしないで結果、損をする
ダメ人間そのままじゃないか
549デフォルトの名無しさん
2017/05/26(金) 22:26:22.91ID:bEaQUHBT 子供の論理だねそれw
550デフォルトの名無しさん
2017/05/26(金) 22:27:57.00ID:bEaQUHBT っていうか、どんな会社でも君が無給の勤労奉仕でやるっていうのならダメだって言わないと思うよ。
コストなんか問題じゃないんだって本気で思ってるのなら是非やったら?w
コストなんか問題じゃないんだって本気で思ってるのなら是非やったら?w
551デフォルトの名無しさん
2017/05/26(金) 22:30:46.44ID:wJyNnfgg スレの主旨とそれ以前に板のローカルルールくらい守れよ
552デフォルトの名無しさん
2017/05/26(金) 22:34:19.73ID:V0QADimW >>541
なんでそんな古い.netを使うの?
なんでそんな古い.netを使うの?
553デフォルトの名無しさん
2017/05/26(金) 22:40:09.73ID:6mvWqLXP >>549
スレのルールすら守れない子供は余所に行こうね
スレのルールすら守れない子供は余所に行こうね
554デフォルトの名無しさん
2017/05/26(金) 23:13:53.33ID:6Pwsd9SO >>552
昔作ったから
昔作ったから
555デフォルトの名無しさん
2017/05/27(土) 01:19:14.36ID:rsPE4izq 使用しているapiをすべて記録してあればバージョンアップ時に楽なのかもな
556デフォルトの名無しさん
2017/05/27(土) 08:05:10.08ID:2waTjXRv 記録しても変更できないんじゃ意味ないよ
変更を容易にするために日頃からリファクタリングをすること
これが唯一の正解なんだよ
塩漬けは最もやってはいけない行為
変更を容易にするために日頃からリファクタリングをすること
これが唯一の正解なんだよ
塩漬けは最もやってはいけない行為
557デフォルトの名無しさん
2017/05/27(土) 08:13:13.30ID:MuqnBgBV558デフォルトの名無しさん
2017/05/27(土) 09:01:34.21ID:SDTaiU/Z async await つかってますか
559デフォルトの名無しさん
2017/05/27(土) 09:54:28.11ID:2waTjXRv Taskをラップした方がわかりやすいし他の言語にも移植しやすい
560デフォルトの名無しさん
2017/05/27(土) 09:58:59.18ID:dfyKY7Wk UWPに至っては、半ば強制的にasync await使わされます
ライブラリがそれ前提で作られているからね
ライブラリがそれ前提で作られているからね
561デフォルトの名無しさん
2017/05/27(土) 10:24:26.01ID:reRwAhMh 今時PythonやJavaScriptにもasyncがあるのに何を言っているのか
なんだかんだC#のやり方は正しくて他の言語もすぐに追従する
なんだかんだC#のやり方は正しくて他の言語もすぐに追従する
562デフォルトの名無しさん
2017/05/27(土) 10:25:05.62ID:IYBRhAj3 使いはするけど仕組みはよくわかってない人が多いんじゃないかな
実際はreturnしてるけどそういう風には見えない
実際はreturnしてるけどそういう風には見えない
563デフォルトの名無しさん
2017/05/27(土) 10:36:00.65ID:IYBRhAj3 async awaitの説明サイトがあんまり初心者もは優しくないんだよな
どれもいまいちというか
何故かTaskの説明ばかり
重要な事にはほとんど触れてない
どれもいまいちというか
何故かTaskの説明ばかり
重要な事にはほとんど触れてない
564デフォルトの名無しさん
2017/05/27(土) 10:39:17.27ID:8fRknhmf C#は突出して新しいことをやっているわけではないが
まだマイナーだけど光るものを見つけてきてメインストリームに持ってくるときの
取捨選択とデザインのセンスが神がかっているという印象
まだマイナーだけど光るものを見つけてきてメインストリームに持ってくるときの
取捨選択とデザインのセンスが神がかっているという印象
565デフォルトの名無しさん
2017/05/27(土) 10:45:11.69ID:2waTjXRv >>561
Java
Java
566デフォルトの名無しさん
2017/05/27(土) 13:41:30.68ID:p4c408zN >>563
非同期(スレッド)を理解せずに非同期メソッドが使えるはずがなく、
そもそも非同期自体が初心者が気軽に使えるような機能じゃないんだから当たり前だw
っていうか、@ITの記事はちょっと説明が足りない部分はあるけどよく書けてるでしょ
あれで何が不満なんだ?
非同期(スレッド)を理解せずに非同期メソッドが使えるはずがなく、
そもそも非同期自体が初心者が気軽に使えるような機能じゃないんだから当たり前だw
っていうか、@ITの記事はちょっと説明が足りない部分はあるけどよく書けてるでしょ
あれで何が不満なんだ?
567デフォルトの名無しさん
2017/05/27(土) 13:59:40.73ID:gzircrhE C#でintの配列を保存したファイルを読み込んでint配列に設定したいんですが
まずbyte[]に読み込んでそれを変換するという形になりますか?
一番効率の良い方法ってどんなでしょうか?
System.IO.FileStream fs = System.IO.File.OpenRead(path);
byte[] b = new [4*32];
fs.Read(b, 0, 4*32);
fs.Close();
int[] = n = new [32];
コピーはひとつずつする以外にどういうやり方があるでしょうか?
まずbyte[]に読み込んでそれを変換するという形になりますか?
一番効率の良い方法ってどんなでしょうか?
System.IO.FileStream fs = System.IO.File.OpenRead(path);
byte[] b = new [4*32];
fs.Read(b, 0, 4*32);
fs.Close();
int[] = n = new [32];
コピーはひとつずつする以外にどういうやり方があるでしょうか?
568デフォルトの名無しさん
2017/05/27(土) 14:10:30.20ID:VKoRAsZa >>567
var buffer = new int[ 32 ];
using( var fs = File.OpenStream( path ) )
using( var reader = new BinaryReader( fs, Encoding.Ascii, true ) )
{
for ( int i = 0; i < buffer.Length; ++i )
{
buffer[ i ] = reader.ReadInt32();
}
}
var buffer = new int[ 32 ];
using( var fs = File.OpenStream( path ) )
using( var reader = new BinaryReader( fs, Encoding.Ascii, true ) )
{
for ( int i = 0; i < buffer.Length; ++i )
{
buffer[ i ] = reader.ReadInt32();
}
}
569デフォルトの名無しさん
2017/05/27(土) 14:34:06.49ID:gzircrhE >>568
そういう読み込み方があるんですね。ありがとうございます。
そういう読み込み方があるんですね。ありがとうございます。
570デフォルトの名無しさん
2017/05/27(土) 14:51:03.74ID:djXMvCo4 >>567
一番効率が良いというとやはりポインタにしてC++で言う所のreinterpret_castだけど
C#ではunsafeになり非推奨なので、基本形は>>568のようなBinaryReader/Writerになると思う
汎用的な所だとバイト配列と数値型の変換を行うBitConverter、IntPtrを介して遣り取りするMarshal.Copy
UnmanagedMemoryAccessorのバックエンドとなるSafeBuffer(ジェネリック及び構造体配列が指定可能)など
うちSafeBufferは抽象クラスなので http://ideone.com/P6ZpjV みたいな実装を自前で書く必要あり
一番効率が良いというとやはりポインタにしてC++で言う所のreinterpret_castだけど
C#ではunsafeになり非推奨なので、基本形は>>568のようなBinaryReader/Writerになると思う
汎用的な所だとバイト配列と数値型の変換を行うBitConverter、IntPtrを介して遣り取りするMarshal.Copy
UnmanagedMemoryAccessorのバックエンドとなるSafeBuffer(ジェネリック及び構造体配列が指定可能)など
うちSafeBufferは抽象クラスなので http://ideone.com/P6ZpjV みたいな実装を自前で書く必要あり
571570
2017/05/27(土) 15:29:18.13ID:djXMvCo4 1つ忘れてた、Buffer.BlockCopyでバッファ自体をコピー可能、プリミティブ配列同士ならこれが最もシンプルだったような
Stream.Readの一部実装はArrayなら何でも読み込めた気がするけど、無理矢理渡す方法がアレなので…
あとSafeBufferの配列読み書きはMarshal.AlignedSizeOf<T>(内部メソッド)のバイトサイズでアライメントされる
Stream.Readの一部実装はArrayなら何でも読み込めた気がするけど、無理矢理渡す方法がアレなので…
あとSafeBufferの配列読み書きはMarshal.AlignedSizeOf<T>(内部メソッド)のバイトサイズでアライメントされる
572デフォルトの名無しさん
2017/05/27(土) 15:40:23.00ID:IYBRhAj3 ポインタ操作ってリトルエンディアンは保証されてるのか?
573デフォルトの名無しさん
2017/05/27(土) 16:00:40.64ID:5EjoFYzo574デフォルトの名無しさん
2017/05/27(土) 17:01:09.52ID:uuvh7wIS 質問の主語がわからんが、int配列のデータをWriteして、1バイトづつReadしたら、もちろん逆になってるよ
575デフォルトの名無しさん
2017/05/27(土) 17:45:11.27ID:gIqbrIjJ 環境依存じゃないかって言ってるならたぶん理念的には環境依存なんだろうね
68kみたいにビッグエンディアンのC#の動作環境があったとしたら、
その環境ではbyte[]を*intで正常に読めないと思う
68kみたいにビッグエンディアンのC#の動作環境があったとしたら、
その環境ではbyte[]を*intで正常に読めないと思う
576デフォルトの名無しさん
2017/05/27(土) 18:16:22.09ID:dfyKY7Wk まあファイルI/Oはメモリー操作に比べると思いっきり遅いから
何やっても大して早くならんけどね
何やっても大して早くならんけどね
577デフォルトの名無しさん
2017/05/27(土) 18:26:00.76ID:eydHjhDC 話題とは関係ないけどこれC#にあったっけ?
>File.OpenStream
>File.OpenStream
578デフォルトの名無しさん
2017/05/27(土) 18:27:21.11ID:gIqbrIjJ >>576
だからこそパフォーマンスが必要なら1つずつチビチビじゃなくて一度になるべくまとめて読み書きするんですよw
だからこそパフォーマンスが必要なら1つずつチビチビじゃなくて一度になるべくまとめて読み書きするんですよw
579デフォルトの名無しさん
2017/05/27(土) 18:32:14.66ID:S8Hvv/fS >>578
基本的なことだけど、バッファがあるからアプリケーションレベルで小細工する必要はないよ
基本的なことだけど、バッファがあるからアプリケーションレベルで小細工する必要はないよ
580デフォルトの名無しさん
2017/05/27(土) 19:01:40.80ID:gIqbrIjJ >>579
Windowsのアーキテクチャーに詳しいわけじゃないけど、
書き込みは確かにディスクキャッシュにバッファリングされるから
プログラム側でまとめて書いても効果薄いかもしれないけど、
読み出し時にはHWレベルでもOSレベルでも大きなキャッシュなんか
用意してないはずだから、プログラム側でまとめて読む意味はあると思うよ
Windowsのアーキテクチャーに詳しいわけじゃないけど、
書き込みは確かにディスクキャッシュにバッファリングされるから
プログラム側でまとめて書いても効果薄いかもしれないけど、
読み出し時にはHWレベルでもOSレベルでも大きなキャッシュなんか
用意してないはずだから、プログラム側でまとめて読む意味はあると思うよ
581デフォルトの名無しさん
2017/05/27(土) 19:10:38.40ID:nge3QdkF >>577
Java と勘違いしてるか IO.FileStream( ) 辺りと混同してるんでしょ
Java と勘違いしてるか IO.FileStream( ) 辺りと混同してるんでしょ
582デフォルトの名無しさん
2017/05/27(土) 19:12:01.62ID:nge3QdkF >>579-580
それ以前にメソッド呼び出しだってコストはかかるわけで
それ以前にメソッド呼び出しだってコストはかかるわけで
583デフォルトの名無しさん
2017/05/27(土) 19:22:03.52ID:PYJf2o92 >>567
なんでそんな事したいのか言えよ
なんでそんな事したいのか言えよ
584デフォルトの名無しさん
2017/05/27(土) 19:29:20.90ID:VKoRAsZa585デフォルトの名無しさん
2017/05/27(土) 20:12:08.55ID:VKoRAsZa >>580
検証したことないけど、FileOptions.SequentialScan指定してFileStreamを作成したらprefetch効かないかな。
検証したことないけど、FileOptions.SequentialScan指定してFileStreamを作成したらprefetch効かないかな。
586デフォルトの名無しさん
2017/05/27(土) 20:52:47.13ID:dfyKY7Wk >>580
ディスクの読み書きってさ、最小限でもセクターって単位で処理するんだが今のWindows10だと4096バイト有るんだわ
だから1バイト読んでもメモリーには最小でも4096バイト入るわけだね
ディスクの読み書きってさ、最小限でもセクターって単位で処理するんだが今のWindows10だと4096バイト有るんだわ
だから1バイト読んでもメモリーには最小でも4096バイト入るわけだね
587デフォルトの名無しさん
2017/05/27(土) 20:59:07.50ID:gIqbrIjJ >>586
HDDの物理層の知識はゼロだけど、セクターってのはファイルシステム上の概念であって
最小の読み出し単位じゃないと思うよw
SSDみたいなフラッシュメモリーには最小の書き換え単位が存在するけど
最小の読み出し単位は存在しない
HDDの物理層の知識はゼロだけど、セクターってのはファイルシステム上の概念であって
最小の読み出し単位じゃないと思うよw
SSDみたいなフラッシュメモリーには最小の書き換え単位が存在するけど
最小の読み出し単位は存在しない
588デフォルトの名無しさん
2017/05/27(土) 21:03:14.20ID:WiwmRK76 物理層も高速化のためにセクタ単位で読んでるはずよ
ファイルシステムより低位の概念
ファイルシステムより低位の概念
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 自民・麻生太郎 副総裁 石破政権の1年は「どよーん」 高市政権の発足で「何となく明るくなった」「世の中のことが決まり動いている」 [Hitzeschleier★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 【27歳会社員】「自慰行為に使うために」コインランドリーの乾燥機から24歳女性の下着など計11点(時価8万2080円相当)盗んだ疑い [nita★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★3
- ジャップ「カントの純粋理性批判読むお!!!」⇒全員上巻で挫折 俺恥ずかしいよ…😭 [731544683]
- トランプ、G7に代わるcore 5を発表 [805596214]
- 麻生太郎が石破政権の1年を酷評「どよーんとして何も動かない感じだったな。それに引き換え高市政権は物事が動いている」 [597533159]
- 【速報】室井佑月、米山隆一との離婚を決意wwwwwwwwwwwwwwwwwwww [802034645]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★4
