「どんなにくだらない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
探検
ふらっと C#,C♯,C#(初心者用) Part130 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1ななしぃ♯ 転載ダメ©2ch.net (ワッチョイ 93aa-SrFS)
2017/07/18(火) 06:40:45.47ID:mH9qbH+m0513デフォルトの名無しさん (ワントンキン MMd3-3iWW)
2017/08/19(土) 13:25:33.54ID:cYLfyEivM でもそれメタプロで遅いし型チェック効かなくなるじゃん
だったらスクリプト言語を使いなよ
だったらスクリプト言語を使いなよ
514デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
2017/08/19(土) 13:49:29.79ID:pqlrWbIe0 http://ideone.com/RUcYj6 速度はこれでだいぶまともになると思う
515デフォルトの名無しさん (ブーイモ MM35-I7lA)
2017/08/19(土) 13:54:04.95ID:y3ZCFtJSM516デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
2017/08/19(土) 14:32:05.62ID:pqlrWbIe0517デフォルトの名無しさん (ワッチョイ 816e-I7lA)
2017/08/19(土) 14:39:34.62ID:GJ9v1oeu0518デフォルトの名無しさん (ワントンキン MMd3-hOer)
2017/08/19(土) 15:01:44.09ID:cYLfyEivM 遅すぎわろた
public struct TupleWrapper<T> {
public TupleWrapper(object tuple) { tupleOrValue = tuple; }
public T Value => (T) tupleOrValue;
public int Length => CountItemField() < 8 ? CountItemField() : 7 + GetRest().Length;
public TupleWrapper<T> this[int index] => GetItem(index + 1);
private TupleWrapper<T> GetItem(int i) => i < 8 ? new TupleWrapper<T>(GetItemField(i).GetValue(Tuple)) : GetRest().GetItem(i - 7);
private FieldInfo GetItemField(int i) => Tuple.GetType().GetField($"Item{i}");
private TupleWrapper<T> GetRest() => new TupleWrapper<T>(GetRestField().GetValue(Tuple));
private FieldInfo GetRestField() => Tuple.GetType().GetField("Rest");
private int CountItemField() => Tuple.GetType().GetGenericArguments().Length;
private object Tuple => tupleOrValue;
private readonly object tupleOrValue;
}
var t = (
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20),
(11, 22, 33, 44)
);
var w = new TupleWrapper<int>(t);
for (int i = 0; i < w.Length; ++i) {
for (int j = 0; j < w[i].Length; ++j) {
Console.Write($"{ w[i][j].Value } ");
}
Console.WriteLine();
}
public struct TupleWrapper<T> {
public TupleWrapper(object tuple) { tupleOrValue = tuple; }
public T Value => (T) tupleOrValue;
public int Length => CountItemField() < 8 ? CountItemField() : 7 + GetRest().Length;
public TupleWrapper<T> this[int index] => GetItem(index + 1);
private TupleWrapper<T> GetItem(int i) => i < 8 ? new TupleWrapper<T>(GetItemField(i).GetValue(Tuple)) : GetRest().GetItem(i - 7);
private FieldInfo GetItemField(int i) => Tuple.GetType().GetField($"Item{i}");
private TupleWrapper<T> GetRest() => new TupleWrapper<T>(GetRestField().GetValue(Tuple));
private FieldInfo GetRestField() => Tuple.GetType().GetField("Rest");
private int CountItemField() => Tuple.GetType().GetGenericArguments().Length;
private object Tuple => tupleOrValue;
private readonly object tupleOrValue;
}
var t = (
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20),
(11, 22, 33, 44)
);
var w = new TupleWrapper<int>(t);
for (int i = 0; i < w.Length; ++i) {
for (int j = 0; j < w[i].Length; ++j) {
Console.Write($"{ w[i][j].Value } ");
}
Console.WriteLine();
}
519デフォルトの名無しさん (ブーイモ MM35-cIbb)
2017/08/19(土) 15:31:46.04ID:5zKij7dqM >>518
初心者スレであんたどうしたいの?
初心者スレであんたどうしたいの?
520デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
2017/08/19(土) 15:40:55.40ID:pqlrWbIe0 >>517 矩形しか使わないわけないやろ
まあ一行の個数が決まってるなら普通にTuple指定すれば型安全にちゃちゃっと書ける
まあ一行の個数が決まってるなら普通にTuple指定すれば型安全にちゃちゃっと書ける
521デフォルトの名無しさん (アウアウウー Sa85-JJVS)
2017/08/19(土) 19:40:18.23ID:zNHilmkoa csv読み込め
522デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
2017/08/19(土) 19:50:47.56ID:pqlrWbIe0 たとえば1回目の実験では15人の被験者がいました
2回目では13人で3回目は20人でN回目はM人でしたと
一人分のデータには名前とか年齢とかいろんな型のデータが使われます
これを一気に処理しようとすれば一人分のデータの型は固定の2次元ジャグ配列になるよね
このデータを書く時にVisual Studioで書けば、データ型のエラーは即検知してくれるしデータを修正するときにもエクセルとか立ち上げなくて済むしJSONみたいな冗長な型式にして可読性を犠牲にしなくてもいい
別のスクリプト言語を実行するための環境を用意しなくても済むしその言語の変な仕様に足をすくわれることもない
いいことづくめでしょ タプルを使えばね
2回目では13人で3回目は20人でN回目はM人でしたと
一人分のデータには名前とか年齢とかいろんな型のデータが使われます
これを一気に処理しようとすれば一人分のデータの型は固定の2次元ジャグ配列になるよね
このデータを書く時にVisual Studioで書けば、データ型のエラーは即検知してくれるしデータを修正するときにもエクセルとか立ち上げなくて済むしJSONみたいな冗長な型式にして可読性を犠牲にしなくてもいい
別のスクリプト言語を実行するための環境を用意しなくても済むしその言語の変な仕様に足をすくわれることもない
いいことづくめでしょ タプルを使えばね
523デフォルトの名無しさん (ブーイモ MM35-I7lA)
2017/08/19(土) 20:09:37.64ID:y3ZCFtJSM524デフォルトの名無しさん (ワッチョイ f94b-jLVh)
2017/08/19(土) 20:10:28.00ID:xJNDdKxb0 >>522
そのケースだとタプル使う意味なくね?
そのケースだとタプル使う意味なくね?
525デフォルトの名無しさん (ブーイモ MM35-I7lA)
2017/08/19(土) 20:17:26.15ID:y3ZCFtJSM まあ実験IDか実験日を持たせるわな
重複が嫌なら正規化するべきだし
重複が嫌なら正規化するべきだし
526デフォルトの名無しさん (ワッチョイ 61e2-WUop)
2017/08/19(土) 20:24:22.85ID:FWLPt1pK0 バカが例を出すとこうなるよな
527デフォルトの名無しさん (ワッチョイ 9391-jLVh)
2017/08/19(土) 20:34:08.67ID:xhyE7NbO0 Nが少ないなら高速処理要らないんだしファイル経由でいい
N多いならそもそもデータベースかファイル群として格納しとけっていうデータやね
数値計算で扱うデータではないよ
N多いならそもそもデータベースかファイル群として格納しとけっていうデータやね
数値計算で扱うデータではないよ
528デフォルトの名無しさん (アウアウウー Sa85-JJVS)
2017/08/19(土) 20:34:56.03ID:zNHilmkoa だからデータはソースじゃなくて外に出せよ
c#入門したてでファイルの読み込みできないのかもしれないけど
勉強したほうがいいぞ
最低でもcsvにしとけば他でも使いやすい
c#入門したてでファイルの読み込みできないのかもしれないけど
勉強したほうがいいぞ
最低でもcsvにしとけば他でも使いやすい
529デフォルトの名無しさん (ブーイモ MM35-I7lA)
2017/08/19(土) 20:51:46.08ID:y3ZCFtJSM なるべく細かく設計するならこんな感じだな
実験(実験ID, 実験日, …)
実験結果(実験ID, 被験者ID, 項目1の結果, 項目2の結果, …)
被験者(被験者ID, 氏名, 年齢, …)
1項目ごとに結果の値が複数個あるなら項目ごとに別々の実験結果テーブルを作ったしたほうがいいかもね
実験(実験ID, 実験日, …)
実験結果(実験ID, 被験者ID, 項目1の結果, 項目2の結果, …)
被験者(被験者ID, 氏名, 年齢, …)
1項目ごとに結果の値が複数個あるなら項目ごとに別々の実験結果テーブルを作ったしたほうがいいかもね
530デフォルトの名無しさん (ワンミングク MMd3-3iWW)
2017/08/19(土) 21:17:47.49ID:khsltEiUM 実験するたびに手作業でタプル書いてリビルドするとか斬新な修行方法だな
531デフォルトの名無しさん (ワッチョイ 9391-jLVh)
2017/08/19(土) 21:22:03.91ID:xhyE7NbO0 データは流石に機器制御で自動取得なのでは
532デフォルトの名無しさん (アウアウウー Sa85-JJVS)
2017/08/19(土) 21:34:04.23ID:zNHilmkoa 最近は横着しだしてcsvじゃなくてタブ区切りにしてる
533デフォルトの名無しさん (ワッチョイ c932-6J24)
2017/08/19(土) 23:16:55.78ID:6Hx+8ODk0534デフォルトの名無しさん (アウアウウー Sa85-JJVS)
2017/08/19(土) 23:23:29.02ID:hlM8r5U9a535デフォルトの名無しさん (ワッチョイ 81c0-oL0b)
2017/08/19(土) 23:40:22.90ID:L0VsKhKh0536デフォルトの名無しさん (アウアウイー Sacd-4GJO)
2017/08/20(日) 00:32:23.71ID:ZcNe1uIUa どっとも同じにしか思えないけどw
CSVで起こるトラブルは全部起こるんじゃないの?
セパレーターが違うだけじゃんw
ただ、TSVってクリップボード経由でエクセルに矩形(N列×M行)のデータ
貼り付けに使えるんだよね。
それ以外の用途で使ったことないなあ
CSVで起こるトラブルは全部起こるんじゃないの?
セパレーターが違うだけじゃんw
ただ、TSVってクリップボード経由でエクセルに矩形(N列×M行)のデータ
貼り付けに使えるんだよね。
それ以外の用途で使ったことないなあ
537デフォルトの名無しさん (アウアウウー Sa85-JJVS)
2017/08/20(日) 01:18:43.49ID:sHrA4xR7a538デフォルトの名無しさん (ワッチョイ d319-oL0b)
2017/08/20(日) 01:21:28.72ID:ry172e0x0 TVで報道されない真実
集計マシーン ムサシ
作ってる会社は?
wwww
一番触れられたくない部分www 税金垂れ流しで身内がばぶってる糞安倍特需
集計マシーン ムサシ
作ってる会社は?
wwww
一番触れられたくない部分www 税金垂れ流しで身内がばぶってる糞安倍特需
539デフォルトの名無しさん (アウアウイー Sacd-4GJO)
2017/08/20(日) 01:53:56.95ID:dZsjl021a540デフォルトの名無しさん (ワッチョイ 81c0-oL0b)
2017/08/20(日) 02:16:19.45ID:g2LxWR3u0 >>537
それを区別するためにダブルクォーテーションを先頭と末尾につけて更にドツボにハマるケースとかあるしな
それを区別するためにダブルクォーテーションを先頭と末尾につけて更にドツボにハマるケースとかあるしな
541デフォルトの名無しさん (ブーイモ MMc5-VWtH)
2017/08/20(日) 03:12:20.91ID:sDPteTwuM そう、C#ならね
542デフォルトの名無しさん (ブーイモ MMc5-VWtH)
2017/08/20(日) 03:14:12.06ID:sDPteTwuM >>535
え、もしかしてcsvのcって、カンマで、tsvのtってタブなの??
え、もしかしてcsvのcって、カンマで、tsvのtってタブなの??
543デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
2017/08/20(日) 05:20:55.44ID:Z/sZ4AZQ0 だから言ってるだろ
ソースに書いたほうが何もかもいいんだよ
いちいち別ファイルにして読み込んで混乱してもなんにもいいことはないし
修正にも手間がかかる
仮想的にデータを修正して結果がどうなるか調べていって新たな実験のプランを立てたりもするのだから
デリケートでミスが多い型式にするのも可読性を犠牲にするのも何も合理的じゃない
ソースにデータを書いてはいけないというのはただの思いこみに過ぎない
ソースに書いたほうが何もかもいいんだよ
いちいち別ファイルにして読み込んで混乱してもなんにもいいことはないし
修正にも手間がかかる
仮想的にデータを修正して結果がどうなるか調べていって新たな実験のプランを立てたりもするのだから
デリケートでミスが多い型式にするのも可読性を犠牲にするのも何も合理的じゃない
ソースにデータを書いてはいけないというのはただの思いこみに過ぎない
544デフォルトの名無しさん (ワキゲー MMa3-Gskc)
2017/08/20(日) 05:41:01.10ID:MYcnjkMXM >>543
データ変わるときには再コンパイル?
データ変わるときには再コンパイル?
545デフォルトの名無しさん (ワッチョイ 13c4-WUop)
2017/08/20(日) 08:23:09.88ID:NOqm8CtN0 引っ込みつかなくなったガキ
546デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
2017/08/20(日) 09:11:36.31ID:Z/sZ4AZQ0547デフォルトの名無しさん (ワッチョイ 5966-oL0b)
2017/08/20(日) 09:18:37.94ID:WBEiN1za0 TSVを使えると言うならソース側のソフトもいじれることを示すわけで
両方いじれるならIPCでも使ったほうが使い勝手が良さそう
ケースバイケースだけどね
両方いじれるならIPCでも使ったほうが使い勝手が良さそう
ケースバイケースだけどね
548デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
2017/08/20(日) 09:19:33.42ID:Z/sZ4AZQ0 もっと根本的なことを言えば、なぜこの世にスクリプト言語があるかと言えば
プログラミングの外側にスクリプティング 作ったライブラリをただ呼び出すフェーズがあり
その外にさらにデータを作るフェーズ これはプログラミング言語を使う必要もなく
データ記述に特化したアプリを使うことが多いわけだが
出来るものは全部C#でやったほうがいい Visual Studioはそれだけ優れた記述環境だ
ライブラリを呼び出す時のインテリセンスのサポートは圧倒的だし
データの型式エラーもリアルタイムに発見できる
言語自体の記述の冗長性の低さもタプルで一段先に進んだ
プログラミングの外側にスクリプティング 作ったライブラリをただ呼び出すフェーズがあり
その外にさらにデータを作るフェーズ これはプログラミング言語を使う必要もなく
データ記述に特化したアプリを使うことが多いわけだが
出来るものは全部C#でやったほうがいい Visual Studioはそれだけ優れた記述環境だ
ライブラリを呼び出す時のインテリセンスのサポートは圧倒的だし
データの型式エラーもリアルタイムに発見できる
言語自体の記述の冗長性の低さもタプルで一段先に進んだ
549デフォルトの名無しさん (ワッチョイ 816e-I7lA)
2017/08/20(日) 09:25:57.99ID:02zgg1Cu0 こういう時期あるよね
俺も経験あるわ
君が言っているようなことは誰でもみんな一度は考えて試したことがあるんだよ
プログラミングのベストプラクティスは自分の考えでやってみて壁にぶち当たって初めて身につくものだから、君はそのままでいいと思うよ
俺も経験あるわ
君が言っているようなことは誰でもみんな一度は考えて試したことがあるんだよ
プログラミングのベストプラクティスは自分の考えでやってみて壁にぶち当たって初めて身につくものだから、君はそのままでいいと思うよ
550デフォルトの名無しさん (ワッチョイ 994d-jLVh)
2017/08/20(日) 09:28:02.98ID:4v9fraNU0 こういう時期あるよね
俺も経験あるわ
君が言っているようなことは誰でもみんな一度は考えて試したことがあるんだよ
プログラミングのベストプラクティスは自分の考えでやってみて壁にぶち当たって初めて身につくものだから、君はそのままでいいと思うよ
俺も経験あるわ
君が言っているようなことは誰でもみんな一度は考えて試したことがあるんだよ
プログラミングのベストプラクティスは自分の考えでやってみて壁にぶち当たって初めて身につくものだから、君はそのままでいいと思うよ
551デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
2017/08/20(日) 09:47:38.37ID:Z/sZ4AZQ0 自演はするのに書き込みにロジックはない
恥ずかしいなお前
恥ずかしいなお前
552デフォルトの名無しさん (ワキゲー MMa3-Gskc)
2017/08/20(日) 09:54:32.77ID:MYcnjkMXM >>546
お前がそれでいいならいいけど俺ならそんなどうでもいいことまで保守しなきゃならないプログラムは避けるなぁ
お前がそれでいいならいいけど俺ならそんなどうでもいいことまで保守しなきゃならないプログラムは避けるなぁ
553デフォルトの名無しさん (ワッチョイ 816e-I7lA)
2017/08/20(日) 09:58:05.52ID:02zgg1Cu0 >>551
君の言っていることは理屈の上では正しいからな
教科書的な否定意見を述べることはもちろんいくらでもできるけど、君がそれを受け入れないことも分かってる
なぜなら俺自身がそうだったからね
これはプログラムというものがどういう状況で使われたりどういう理由で変更されたりすることが多いか、といった、
きわめて経験的な問題であって、演繹的なロジッで白黒付けられるような問題じゃないの
君の言っていることは理屈の上では正しいからな
教科書的な否定意見を述べることはもちろんいくらでもできるけど、君がそれを受け入れないことも分かってる
なぜなら俺自身がそうだったからね
これはプログラムというものがどういう状況で使われたりどういう理由で変更されたりすることが多いか、といった、
きわめて経験的な問題であって、演繹的なロジッで白黒付けられるような問題じゃないの
554デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
2017/08/20(日) 10:16:08.57ID:Z/sZ4AZQ0555デフォルトの名無しさん (ワッチョイ 81c0-oL0b)
2017/08/20(日) 10:22:57.60ID:g2LxWR3u0 ソース管理履歴が入力データの数値変更とかある意味斬新な使い方だな
556デフォルトの名無しさん (ブーイモ MM35-I7lA)
2017/08/20(日) 10:43:36.19ID:xUVeBm+tM >>554
その使い方を他人に教えるのは少なくとも最初はお前の仕事なんだぞ?
VSのインストール方法、ソースの変更箇所や変更方法、ビルド方法、全部教えるの?
外部のスクリプトから毎回パラメータを変更して繰り返し実行したいときはどうするの? 実験データの処理なんかだとよくあるよね
毎回本体に手を入れるの? 他人にもそれを求めるの?
その使い方を他人に教えるのは少なくとも最初はお前の仕事なんだぞ?
VSのインストール方法、ソースの変更箇所や変更方法、ビルド方法、全部教えるの?
外部のスクリプトから毎回パラメータを変更して繰り返し実行したいときはどうするの? 実験データの処理なんかだとよくあるよね
毎回本体に手を入れるの? 他人にもそれを求めるの?
557デフォルトの名無しさん (アウアウウー Sa85-JJVS)
2017/08/20(日) 10:55:39.20ID:IkwItTHKa データが変わったり増えたりするたびにコンパイルしなおす環境を
是とするのは初心者だけ
コンパイル5分とかのプロジェクトが普通にあるんだけど
是とするのは初心者だけ
コンパイル5分とかのプロジェクトが普通にあるんだけど
558デフォルトの名無しさん (ワッチョイ 61a0-WUop)
2017/08/20(日) 10:57:55.80ID:VzkR/TOU0 実際初心者なんだからいいだろ
何をムキになってんの
お前も初心者Lv2くらいなんしゃねーの
何をムキになってんの
お前も初心者Lv2くらいなんしゃねーの
559デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
2017/08/20(日) 11:29:10.12ID:Z/sZ4AZQ0 だからプロジェクトを分ければそこだけしかコンパイルされない
VSの使い方は別に難しくない しかもデータを書くだけなんだから使う機能はほんの一部
データほどバックアップが必要なものはないからバージョン管理するのも当然
上書きしたデータはしばしば必要になるがデータは消えたらまず戻らない
ソースコードの変更履歴なんてのは消えても必要なら書き直せばいいだけだからな
パラメータを変えながら繰り返し実行したいならC#で書けばいい
繰り返しになるがそこだけプロジェクトを分ければそこしかコンパイルされない
スクリプト層のように一方的に使う側は書き換えても何も他に影響を及ぼさない
データのように書き換えてもプログラム上のインターフェースが変わらないものも同じだ
VSの使い方は別に難しくない しかもデータを書くだけなんだから使う機能はほんの一部
データほどバックアップが必要なものはないからバージョン管理するのも当然
上書きしたデータはしばしば必要になるがデータは消えたらまず戻らない
ソースコードの変更履歴なんてのは消えても必要なら書き直せばいいだけだからな
パラメータを変えながら繰り返し実行したいならC#で書けばいい
繰り返しになるがそこだけプロジェクトを分ければそこしかコンパイルされない
スクリプト層のように一方的に使う側は書き換えても何も他に影響を及ぼさない
データのように書き換えてもプログラム上のインターフェースが変わらないものも同じだ
560デフォルトの名無しさん (ワッチョイ 994d-jLVh)
2017/08/20(日) 11:33:38.19ID:4v9fraNU0561デフォルトの名無しさん (ドコグロ MMb3-x4Vn)
2017/08/20(日) 11:38:29.95ID:RoSv4OHrM >>555
データをバージョン管理ツールに突っ込むのはたまにやる
データをバージョン管理ツールに突っ込むのはたまにやる
562デフォルトの名無しさん (スップ Sdb3-jXEI)
2017/08/20(日) 12:01:00.60ID:8rqqhxmUd >>557
コンパイル5分はさすがに設計が悪いとしか
コンパイル5分はさすがに設計が悪いとしか
563デフォルトの名無しさん (アウアウウー Sa85-JJVS)
2017/08/20(日) 12:08:47.92ID:IkwItTHKa >>559
だからこそ外に出したほうがいいんではないかと普通に思うんだけど
外に出しておけばほかのツールなどでも使えるし
馬鹿な初心者はなんで食い下がりたがるんだろうか?という疑問はいつか解消されるのか
だからこそ外に出したほうがいいんではないかと普通に思うんだけど
外に出しておけばほかのツールなどでも使えるし
馬鹿な初心者はなんで食い下がりたがるんだろうか?という疑問はいつか解消されるのか
564デフォルトの名無しさん (アウアウイー Sacd-4GJO)
2017/08/20(日) 12:20:57.09ID:TOwE0eF8a なんかしょうもないことで揉めてるなあ。
こんなの要件その他しだいのケースバイケースでしょ。
まさか文字列や数値のリテラルまで否定する人はいないわけで、
そういう感覚で複雑なデータをコードに直書きした方が好都合な場合もそりゃないことはないと思うよ。
いつでもどんな場合もそうした方がいいと言ってるならお馬鹿さんだけどさ
こんなの要件その他しだいのケースバイケースでしょ。
まさか文字列や数値のリテラルまで否定する人はいないわけで、
そういう感覚で複雑なデータをコードに直書きした方が好都合な場合もそりゃないことはないと思うよ。
いつでもどんな場合もそうした方がいいと言ってるならお馬鹿さんだけどさ
565デフォルトの名無しさん (スップ Sdb3-jXEI)
2017/08/20(日) 12:20:57.99ID:8rqqhxmUd566デフォルトの名無しさん (ワッチョイ f932-jLVh)
2017/08/20(日) 12:40:50.18ID:3qMRQsNA0 c#でjsonにシリアライズしたいんですが、キーは文字、値は文字と数字としたい場合
どのような型を使えばいいのでしょうか?
例えば、jsonの表記を以下のようにしたいということです。
{
"test": [
{
"a": "aaaa",
"b": 123456789,
"c": "ccc",
"b": "987654321,
},
{
"a": "aaaa",
"b": 123456789,
"c": "ccc",
"b": "987654321,
}]
}
どのような型を使えばいいのでしょうか?
例えば、jsonの表記を以下のようにしたいということです。
{
"test": [
{
"a": "aaaa",
"b": 123456789,
"c": "ccc",
"b": "987654321,
},
{
"a": "aaaa",
"b": 123456789,
"c": "ccc",
"b": "987654321,
}]
}
567デフォルトの名無しさん (ワッチョイ f94b-jLVh)
2017/08/20(日) 13:02:04.31ID:/Yfo0eFx0 >>562
6年ほど前に某F通のフレームワーク使ったときはビルドに10分とかかかってたわ
6年ほど前に某F通のフレームワーク使ったときはビルドに10分とかかかってたわ
568デフォルトの名無しさん (ブーイモ MMab-I7lA)
2017/08/20(日) 13:04:52.88ID:+32tL3aOM >>566
objectかdynamic
objectかdynamic
569デフォルトの名無しさん (ブーイモ MMab-I7lA)
2017/08/20(日) 13:10:16.81ID:+32tL3aOM いや訂正
>>566なら普通にa, b, c, dをプロパティとして定義した型を使えばいいな
>>566なら普通にa, b, c, dをプロパティとして定義した型を使えばいいな
570デフォルトの名無しさん (ワンミングク MMd3-bETP)
2017/08/20(日) 13:57:47.29ID:dgrWF/1pM >>566
var obj = new {
test = new [] {
new {
a = "aaaa",
b = 123456789,
c = "ccc",
d = "987654321"
},
new {
// ry
}
}
};
var s = NewtonSoft.Json.JsonConvert.SerializeObject(obj);
var obj = new {
test = new [] {
new {
a = "aaaa",
b = 123456789,
c = "ccc",
d = "987654321"
},
new {
// ry
}
}
};
var s = NewtonSoft.Json.JsonConvert.SerializeObject(obj);
571デフォルトの名無しさん (ワッチョイ f932-jLVh)
2017/08/20(日) 14:03:08.79ID:3qMRQsNA0 お二方とも、ありがとうございました。
オブジェクトを使って無事にやりたいことができました。
オブジェクトを使って無事にやりたいことができました。
572デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
2017/08/20(日) 15:36:32.78ID:Z/sZ4AZQ0 >>563
データを別の環境から使いたいならJSON.NETでも使えばいいだけ
しかしJSONは冗長だから管理には向かないが
CSVみたいなのも自分が何の値を触ってるのかわからなくなりがちだから難しい
だから元データにはC#&VSを使うべき
タプルのいいところはもうひとつあるな こっちの方が重要かもしれないが
コードでデータを書こうとする場合、データの型とプログラムに依存関係が発生してしまう場合がある
C#でデータを書くには型が必要で プログラムで処理するにも入力する型が必要
「プログラムは再利用するものだ」という観念があるとここで型を使いまわして依存関係が発生してしまう
プログラムで処理したい型に合わせて元データを書いていると、プログラムの方の仕様変更で型が変わっても元データをいじるわけにはいかず対応が難しくなる
もともとデータはデータであってデータの汎用性を最大にするためにも変更に強くするためにもプログラムと依存関係は持つべきじゃない
依存関係はコンパイルにも影響する
しかし同じ型を二つ作ってやりとりするのはめんどくさかった
(まあJSONやCSVを使える型に直すよりはずっと楽だが)
この問題はタプルで解決する
タプルの型が使いまわせるうちはそのまま渡せばいいし
使いまわせなくなったら必要な変換コードを書けばいい
データを別の環境から使いたいならJSON.NETでも使えばいいだけ
しかしJSONは冗長だから管理には向かないが
CSVみたいなのも自分が何の値を触ってるのかわからなくなりがちだから難しい
だから元データにはC#&VSを使うべき
タプルのいいところはもうひとつあるな こっちの方が重要かもしれないが
コードでデータを書こうとする場合、データの型とプログラムに依存関係が発生してしまう場合がある
C#でデータを書くには型が必要で プログラムで処理するにも入力する型が必要
「プログラムは再利用するものだ」という観念があるとここで型を使いまわして依存関係が発生してしまう
プログラムで処理したい型に合わせて元データを書いていると、プログラムの方の仕様変更で型が変わっても元データをいじるわけにはいかず対応が難しくなる
もともとデータはデータであってデータの汎用性を最大にするためにも変更に強くするためにもプログラムと依存関係は持つべきじゃない
依存関係はコンパイルにも影響する
しかし同じ型を二つ作ってやりとりするのはめんどくさかった
(まあJSONやCSVを使える型に直すよりはずっと楽だが)
この問題はタプルで解決する
タプルの型が使いまわせるうちはそのまま渡せばいいし
使いまわせなくなったら必要な変換コードを書けばいい
573デフォルトの名無しさん (アウアウイー Sacd-eC16)
2017/08/20(日) 15:38:29.83ID:zHhVJRDSa574デフォルトの名無しさん (アウアウイー Sacd-eC16)
2017/08/20(日) 15:44:09.85ID:zHhVJRDSa575デフォルトの名無しさん (ブーイモ MMab-I7lA)
2017/08/20(日) 15:48:19.19ID:+32tL3aOM576デフォルトの名無しさん (アウアウイー Sacd-eC16)
2017/08/20(日) 15:52:41.50ID:zHhVJRDSa pythonのお仕事が来ると
あまりにも変態的な使い方をするやつが多かったのか
使用禁止例もいっしょに出るので注意な
あまりにも変態的な使い方をするやつが多かったのか
使用禁止例もいっしょに出るので注意な
577デフォルトの名無しさん (ブーイモ MMab-I7lA)
2017/08/20(日) 15:56:43.69ID:+32tL3aOM Pythonのタプルが要素の取り違えを非常に起こしやすいのは確か
C#のタプルは常にフィールド名を型に含めておけるからだいぶマシだと思うよ
C#のタプルは常にフィールド名を型に含めておけるからだいぶマシだと思うよ
578デフォルトの名無しさん (アウアウイー Sacd-eC16)
2017/08/20(日) 15:59:24.89ID:zHhVJRDSa579デフォルトの名無しさん (ワンミングク MMd3-bETP)
2017/08/20(日) 16:01:29.91ID:dgrWF/1pM >>572
素晴らしいアイデアだ
是非とも世界中に広めてくれ
ちなみにこのスレのみんなはもう君の素晴らしいアイデアは理解したから
別のコミュニティに行って啓蒙した方がいいと思うぞ
業界のデファクトスタンダードになったら業務にも導入するよ
素晴らしいアイデアだ
是非とも世界中に広めてくれ
ちなみにこのスレのみんなはもう君の素晴らしいアイデアは理解したから
別のコミュニティに行って啓蒙した方がいいと思うぞ
業界のデファクトスタンダードになったら業務にも導入するよ
580デフォルトの名無しさん (アウアウイー Sacd-eC16)
2017/08/20(日) 16:08:54.30ID:zHhVJRDSa なんでもできちゃう仕組みは実は何にもしない
これがわからんうちは素人
俺らは制限を加える代わりに機能を作成している
これがわからんうちは素人
俺らは制限を加える代わりに機能を作成している
581デフォルトの名無しさん (ワキゲー MMa3-Gskc)
2017/08/20(日) 16:09:34.46ID:MYcnjkMXM582デフォルトの名無しさん (ワッチョイ d319-oL0b)
2017/08/20(日) 16:16:50.41ID:ry172e0x0 LINUX あきらめた人がC#やってるってまじ?
583デフォルトの名無しさん (アウアウイー Sacd-eC16)
2017/08/20(日) 16:18:08.23ID:zHhVJRDSa >>581
せめて客と打ち合わせして
誰向けにどんな頻度で読み込むのか
相談しろよ
しかしやはりテスト工数とか超無駄
頼んでもいねー機能が入っちゃってるし
コードレビューやるとこだと
会議室静まり返るわ
せめて客と打ち合わせして
誰向けにどんな頻度で読み込むのか
相談しろよ
しかしやはりテスト工数とか超無駄
頼んでもいねー機能が入っちゃってるし
コードレビューやるとこだと
会議室静まり返るわ
584デフォルトの名無しさん (ワキゲー MMa3-Gskc)
2017/08/20(日) 16:24:22.45ID:MYcnjkMXM >>583
で?
で?
585デフォルトの名無しさん (アウアウイー Sacd-eC16)
2017/08/20(日) 16:31:05.69ID:zHhVJRDSa586デフォルトの名無しさん (アウアウイー Sacd-eC16)
2017/08/20(日) 16:39:10.31ID:zHhVJRDSa 加不足なくキッチリ作ってこそプロ
塗装屋に屋根だけじゃなく壁も塗られたら嫌だろ
塗装屋に屋根だけじゃなく壁も塗られたら嫌だろ
587デフォルトの名無しさん (ブーイモ MMab-I7lA)
2017/08/20(日) 16:47:40.00ID:+32tL3aOM588デフォルトの名無しさん (ワンミングク MMd3-bETP)
2017/08/20(日) 17:07:58.90ID:dgrWF/1pM >>582
LinuxできないのにC#は今後キツイぞ
LinuxできないのにC#は今後キツイぞ
589デフォルトの名無しさん (ワッチョイ 13c4-WUop)
2017/08/20(日) 17:24:54.81ID:NOqm8CtN0 素人さんにそんなこと言っても分からんだろ
590デフォルトの名無しさん (ワッチョイ d319-oL0b)
2017/08/20(日) 17:35:16.04ID:ry172e0x0591デフォルトの名無しさん (ワッチョイ f94b-jLVh)
2017/08/20(日) 17:43:20.05ID:/Yfo0eFx0 まーた流れが変になったきた
592デフォルトの名無しさん (ワッチョイ 2ba2-oL0b)
2017/08/20(日) 17:57:07.82ID:lAN4MCjV0 Linux出来ないってなんだよ
593デフォルトの名無しさん (ブーイモ MM35-VWtH)
2017/08/20(日) 18:19:33.30ID:qRBovfU3M >>570
library使ってるの言わなきゃわかんねーだろw
library使ってるの言わなきゃわかんねーだろw
594デフォルトの名無しさん (ブーイモ MM35-VWtH)
2017/08/20(日) 18:22:32.24ID:qRBovfU3M タプルって必要?
595デフォルトの名無しさん (ワッチョイ c16f-jLVh)
2017/08/20(日) 18:24:23.09ID:RTInNZ8f0 Linux出来ないの意味がわからない
596デフォルトの名無しさん (ブーイモ MM35-VWtH)
2017/08/20(日) 18:24:46.30ID:qRBovfU3M タプル使っても結局戻り値の受け皿となる型用意しなきゃいけないし、だったら最初からその型で返却すればいいとおもうのですが。
597デフォルトの名無しさん (アウアウウー Sa85-JJVS)
2017/08/20(日) 18:39:05.96ID:hUYAcmEda598デフォルトの名無しさん (ワッチョイ 5966-oL0b)
2017/08/20(日) 19:02:37.86ID:WBEiN1za0 >>596
var
var
599デフォルトの名無しさん (ワッチョイ 93ea-7xTZ)
2017/08/20(日) 19:16:42.28ID:CkRUpBQZ0 タプルはその型にちょうどいい名前がつかない時が使いどころ
なくてもそんなに困らないけどあると便利な場面は多い
なくてもそんなに困らないけどあると便利な場面は多い
600デフォルトの名無しさん (アウアウイー Sacd-eC16)
2017/08/20(日) 19:21:32.83ID:6SP869Cna 全部タプルで組まれるテロ
601デフォルトの名無しさん (ワッチョイ 110b-wwH0)
2017/08/20(日) 20:04:50.98ID:5Qhm1OO+0 タプルは7.0のタプル型になってから戻り値で使うようになった
602デフォルトの名無しさん (アウアウイー Sacd-4GJO)
2017/08/20(日) 20:29:11.34ID:9QhbSfl9a からだすこやか茶〜
603デフォルトの名無しさん (ワッチョイ b111-m0BB)
2017/08/20(日) 20:32:10.39ID:TNLMpcMk0 C#はバージョン毎に結構あれこれ追加されて常識が変わってくからな
最新バージョンを追い掛け続けてる人とそうでない人で、話が通じなくなる事もしばしば
俺も割りと4.0くらいで頭の中が止まってるかもしれない
最新バージョンを追い掛け続けてる人とそうでない人で、話が通じなくなる事もしばしば
俺も割りと4.0くらいで頭の中が止まってるかもしれない
604デフォルトの名無しさん (ワッチョイ 61e3-jLVh)
2017/08/20(日) 20:35:21.31ID:PJX+MB9c0 せっかくJavaやCが戻り値はひとつにしようと糞コード撲滅の努力をしてきたのに
605デフォルトの名無しさん (ワッチョイ 13c4-WUop)
2017/08/20(日) 20:38:12.45ID:NOqm8CtN0 JavaやCみたいな前世紀の遺物
606デフォルトの名無しさん (ワッチョイ ab6f-oL0b)
2017/08/20(日) 20:41:00.60ID:WpPKXiqN0 クラスじゃなくてタプルで返すべき場面てある?
607デフォルトの名無しさん (ワッチョイ 93ea-jXEI)
2017/08/20(日) 20:47:43.32ID:tm2H9Mai0 >>604
JavaやCワロタwww
JavaやCワロタwww
608デフォルトの名無しさん (ワッチョイ 61e3-jLVh)
2017/08/20(日) 21:17:50.95ID:PJX+MB9c0 >>606
戻り値のためにクラス作るのがなんか心理的に重い
戻り値のためにクラス作るのがなんか心理的に重い
609デフォルトの名無しさん (アウアウイー Sacd-eC16)
2017/08/20(日) 21:33:13.87ID:6SP869Cna610デフォルトの名無しさん (ワッチョイ 2b61-oL0b)
2017/08/20(日) 21:38:30.65ID:woceXaSP0611デフォルトの名無しさん (アウアウイー Sacd-4GJO)
2017/08/20(日) 21:53:44.36ID:9QhbSfl9a >>610
全然適切な例になってない気が
それ、明らかにクラスまたは構造体にまとめるべきデータでしょ
まあ、一つの型にまとめたくない複数のデータを一つのメソッドから返したい、
なんて率直に言ってうんこの臭いしか感じないね。
全然適切な例になってない気が
それ、明らかにクラスまたは構造体にまとめるべきデータでしょ
まあ、一つの型にまとめたくない複数のデータを一つのメソッドから返したい、
なんて率直に言ってうんこの臭いしか感じないね。
612デフォルトの名無しさん (ワッチョイ 2b61-oL0b)
2017/08/20(日) 21:59:18.22ID:woceXaSP0■ このスレッドは過去ログ倉庫に格納されています
