ふらっと C#,C♯,C#(初心者用) Part125at TECH
ふらっと C#,C♯,C#(初心者用) Part125 - 暇つぶし2ch262:デフォルトの名無しさん (ワッチョイ e63c-DGmA)
16/11/03 23:37:31.91 NjbREez30.net
>>258
> 文字列処理する度にあちこちに埋め込むつもりなの君たち?
意味わからん

263:デフォルトの名無しさん (スップ Sd78-DGmA)
16/11/03 23:50:23.32 HfUe3JFnd.net
nullと空文字列を区別できるのは便利だよな

264:デフォルトの名無しさん (ワッチョイ bd76-8Y51)
16/11/03 23:53:37.53 q/VeKpe70.net
>>257
もともとパンピーの利用を想定してないと思う。
DTDとか定義して厳密データ交換とかXPath/XSLTでの二次利用想定してたけど
あまりにも面倒なのでJSONとかYAMLに取って代わられてしまったな
HTML4の次を策定したときにXHTMLが主流になれなかった時に終わったと思う

>>258
nullが来ない前提で書いてぬるぽはテストで潰し切るけどなあ。
nullで問題あるなら突っ込んだ時点でNGなんだから
DB絡みならDBの型を全部NOT NULLにしておけばそう発生しないし
全部NOT NULLで定義できないなら結局nullable型(または判定処理)は必要ってことだし

265:デフォルトの名無しさん (スップ Sd78-DGmA)
16/11/04 00:12:02.56 j7dIV/6vd.net
>>257
CSVは階層構造に出来ないから扱いにくい

266:デフォルトの名無しさん (ワッチョイ 34ce-uTye)
16/11/04 00:16:43.73 0ODaAY820.net
階層構造は必要ない

267:デフォルトの名無しさん (スップ Sd78-DGmA)
16/11/04 00:22:15.02 j7dIV/6vd.net
必要ある

268:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/04 00:25:49.04 S7YCyC790.net
>>262
階層にする意味ねーし

269:デフォルトの名無しさん (スップ Sd78-DGmA)
16/11/04 00:30:11.38 j7dIV/6vd.net
意味あるよ

270:デフォルトの名無しさん (ワッチョイ fd4a-DGmA)
16/11/04 00:31:18.26 t9kfIjwC0.net
struct のフィールドにする。

271:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/04 00:33:20.91 S7YCyC790.net
最終的にはどうしたってDBに突っ込む将来が予想できるなら
階層構造なんて取っ払っておいたほうがいい

272:デフォルトの名無しさん (スップ Sd78-DGmA)
16/11/04 00:35:34.02 j7dIV/6vd.net
DBに突っ込む予定のデータの話なんかしてません

273:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/04 00:38:47.72 S7YCyC790.net
>>269
でもね
世の中そーなってんの
なのでツリーを積極的に作る奴はそれだけで無能
まあ、一度xmlで書いてみれば本当に必要だった構造が見えていいかも新内

274:デフォルトの名無しさん (スップ Sd78-DGmA)
16/11/04 00:41:52.66 j7dIV/6vd.net
今時XMLやJSON使わないなんて変わった人だねえ

275:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/04 01:07:31.20 S7YCyC790.net
部品Pを扱う建屋A,C,D,Eとか考えるともうツリーとか邪魔になる

276:デフォルトの名無しさん (ワッチョイ 653c-DGmA)
16/11/04 01:18:45.12 l35mknxG0.net
>>272
じゃあとりあえず、適当なcsprojをCSVで書いてごらん

277:デフォルトの名無しさん (ワッチョイ 3ee1-umBA)
16/11/04 01:36:14.39 9ZtkjL7R0.net
>>219
みんな頓珍漢なこと言ってるけど、nullを返さないことを保証するのは需要もあるし、すでに標準ライブラリには導入されてる。
もちろん、空文字を返すよりもnullを返すほうが合理的なこともあるから常にnullを返さないわけではないけど
契約プログラミング(Code Contract)
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
例えば、String.Concatのソースを見ると
URLリンク(referencesource.microsoft.com)
に以下のような契約が書いてある
Contract.Ensures(Contract.Result<String>() != null);
これは、戻り値がnullではないと保証する、ということ。
逆に、これがない場合はnullを返す可能性を考慮したほうがよい
現状言語仕様レベルでは契約プログラミングは組み込まれていないので、静的な処理をコンパイラの外で行う必要がある
もちろん言語仕様に組み込む要望は出てるが、やることが多すぎて手が回ってないのでまだ入りそうにはない
URLリンク(github.com)

Swiftみたいに新しい言語ではnullを許容しない型とかもあるんだけど、なんせC#は15年前の仕様を破壊するわけにいかないので

278:デフォルトの名無しさん (ワッチョイ 3ee1-umBA)
16/11/04 01:43:43.03 9ZtkjL7R0.net
あ、
>空文字を返すよりもnullを返すほうが合理的なこともあるから常にnullを返さないわけではないけど
っていうのは、非null契約が無いメソッドではってことね
非null契約があれば絶対にnullは返さない
非null契約に違反してnullを返そうとすると、静的処理でエラーになるとか、実行時に例外や強制終了になるはず(自分の認識では)

279:デフォルトの名無しさん (ワッチョイ 7213-DGmA)
16/11/04 01:44:56.97 fGBbyDJX0.net
XMLやJSONを使わせないとか老害もいいとこだな

280:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/04 08:12:03.85 S7YCyC790.net
>>276
データをDBに移しますね
の一言でend
そしてそれはあるあるNo1

281:デフォルトの名無しさん (スフッ Sd28-DGmA)
16/11/04 08:13:58.66 eeRk3Y1vd.net
DBに入れるならDBnullなんでは?

282:デフォルトの名無しさん (スフッ Sd28-DGmA)
16/11/04 08:15:29.14 eeRk3Y1vd.net
あ、言葉足らずだったな。
DBnullに相当する値か状態を表現したクラスしかないのでは?って。
重いとは思うが、それをXMLにあてればいいと思うけど。

283:デフォルトの名無しさん (ワッチョイ b0da-uTye)
16/11/04 08:19:28.81 Oa4odGBb0.net
複数の少数があります
1.5, 3.25, 6.75, 3.375 ....
これら全てが整数になる共通の値を見つけたいのですが、何かいい方法はないでしょうか?
単純に小数点以下が一番長い物に合わせて、1000倍などにしてもいいのかもしれませんが、
できるだけ最小の値にしたいと考えています

284:デフォルトの名無しさん (ワッチョイ b0da-uTye)
16/11/04 08:22:04.24 Oa4odGBb0.net
あ、↑は小数を乗算して整数になる、共通で最小の値という意味です
乗算について抜けていましたすみません

285:デフォルトの名無しさん (ワッチョイ 91dc-dKGq)
16/11/04 08:37:27.49 Fu63hJgb0.net
10^n倍して全部整数にしてから最大公約数で割れば

286:デフォルトの名無しさん (ワッチョイ e63c-DGmA)
16/11/04 08:40:47.32 sU8qFob40.net
>>268
リレーションがなんのためにあると思ってるんだ? w

287:デフォルトの名無しさん (ワッチョイ 3223-8n5s)
16/11/04 08:41:56.32 Nv4A79J/0.net
>>281
小数点以下を分数に変換して最小公約数を求めたら良いんじゃないの?

288:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/04 08:53:29.87 S7YCyC790.net
>>283
それでいいんだよ
xmlで階層にすると悲劇が始まる
idかkey置いて階層は作らないのが正解

289:デフォルトの名無しさん (スップ Sd78-DGmA)
16/11/04 08:56:20.60 jjNRFD+ud.net
>>285
>>273

290:デフォルトの名無しさん (ササクッテロレ Spbd-m5qj)
16/11/04 08:59:28.30 cFPdUXQMp.net
>>280
単純に10のn乗をかけると循環小数で詰むので分数化するに一票

291:デフォルトの名無しさん (ワッチョイ 7213-DGmA)
16/11/04 09:01:06.22 fGBbyDJX0.net
環境設定ファイルとかクラスをシリアライズするだけで済むのにわざわざDB化するとか馬鹿馬鹿しいわ

292:デフォルトの名無しさん (スフッ Sd28-DGmA)
16/11/04 10:48:32.91 eeRk3Y1vd.net
120120掛けて、それでもだめなら17掛けて、あとは2から割っていくと良いのでは?
それで端数が出たら、素数で割ってけば良いよ。
だいたい23くらいまで持ってたらきれいな数字になる。
分数化は面倒だろ。

293:デフォルトの名無しさん (アウアウオー Sade-MAch)
16/11/04 12:29:37.50 whUy0fqsa.net
>>280
宿題スレかお題スレの方がいいと思うけど、
a = 1.5, b = 3.25, c = 6.75, ....
与えられたすべての小数を整数にする最小の10の乗数をRとする
求める共通の値xが見つかったとき、a * x, b * x, c *x, ....は1以外の公約数を
持たないはずだから(ただしa, b, c, ....がすべて同じ値である場合を除く)
a * R, b * R, c * R, ....の最大公約数をGとするとき、
x = R / G
でいいような気がする。
厳密な証明は知らん

294:デフォルトの名無しさん (ドコグロ MMde-DGmA)
16/11/04 14:08:33.75 T6Zzc5iHM.net
>>285
お前は Excel 使っとけ w

295:デフォルトの名無しさん (ドコグロ MMde-DGmA)
16/11/04 14:10:31.34 T6Zzc5iHM.net
>>287
単純に分数にすると無理数で詰むので...

296:デフォルトの名無しさん (ワッチョイ d30d-uTye)
16/11/04 14:56:57.15 al1IuUx20.net
WPF、MVVMで
ファイルやフォルダの一覧を階層構造のTreeViewで表示したいのですが
EnumerateFileSystemEntries を使って実装する方法を教えてください
参考になるサイトやサンプルでも構いません
自分で探してみても単に取得する処理だけのもの(Viewへの適用などが無い)などしか見当たらず困っています

297:デフォルトの名無しさん (アウアウカー Sab5-DGmA)
16/11/04 15:41:50.56 zqM+jrKca.net
>>292
数学的に無理数の範囲でこの問題って解けるのか?
有理数じゃないと無理な気がするけど

298:デフォルトの名無しさん (アウアウカー Sab5-DGmA)
16/11/04 15:47:46.77 zqM+jrKca.net
解けないっていうか、特殊な場合を除きほとんど場合解なしが解になると思う

299:デフォルトの名無しさん (ワッチョイ bcdc-dKGq)
16/11/04 16:23:04.07 V0keAHui0.net
>>293
オブジェクトツリーが作れたらItemsSourceに放り込んでHierarchicalDataTemplateを定義するだけ

300:デフォルトの名無しさん (ワッチョイ 8a02-2mfK)
16/11/04 21:51:02.32 tYyOp6nC0.net
>>294-295
そもそも求める数が整数とか有理数に限るとはどこにも書いてないがな

301:デフォルトの名無しさん (ワッチョイ 3223-8n5s)
16/11/04 22:23:15.39 Nv4A79J/0.net
分数の上下桁数を2桁とか3桁程度の実用的な範囲にして、近似値で分数に変換すれば問題ないでしょ
求めたいものが何であるかによるけどね

302:デフォルトの名無しさん (ワッチョイ bcdc-DGmA)
16/11/05 00:26:17.96 u9ZZUUBm0.net
>>298
当てずっぽうでやるんならわざわざ分数化しなくても
最初から試しに乗算してみて整数っぽくなったらOKでいいだろw

303:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/05 09:41:59.67 OZKlek+X0.net
ストレージの評価のため、ファイルを同時書き込みするメソッドを
asyncで書いてみたのですが、100回くらいfor文でコールすると
logx.txtが12個とかしか作られません
処理時間で処理が打ち切られたりするのでしょうか?
private static async void TestM(string i)
{
using (FileStream fs=new FileStream(@"F:\work\log" + i + ".txt",
FileMode.Append,
FileAccess.Write,
FileShare.ReadWrite))
{
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8);
TextWriter tw = TextWriter.Synchronized(sw);
tw.WriteLine("test");
tw.Flush();
}
}
static void Main(string[] args)
{
for(int i = 0; i < 100; i++)
TestM(i.ToString());
}

304:デフォルトの名無しさん (ワッチョイ bcdc-dKGq)
16/11/05 09:56:26.86 u9ZZUUBm0.net
async(というかTask)はデフォルトではスレッドプールを使うから
同時に使用されるスレッド数には限りがあり、残りのタスクはキューに溜まるだけ
普通にnew Threadしたら

305:デフォルトの名無しさん (ワッチョイ e63c-DGmA)
16/11/05 10:06:58.71 6wNzhQFs0.net
>>297
> そもそも求める数が整数とか有理数に限るとはどこにも書いてないがな
えっ?
>>280
> これら全てが整数になる共通の値を見つけたい

306:301 (ワッチョイ bcdc-dKGq)
16/11/05 10:09:53.89 u9ZZUUBm0.net
>>300
いやそもそもasyncの使い方がおかしいな
戻り値voidの場合、awaitが無いとasyncキーワードは全く何の意味も持たない
ワーニング出てるだろ?
(意図とは違うだろうけど)TestMは普通に同期で順番に実行されてるはずだから、
単にswやtwを閉じてないために出力されてないだけじゃないか?
あとasync void使うな

307:デフォルトの名無しさん (ワッチョイ 5194-rqdB)
16/11/05 10:38:43.04 9mC8a8qM0.net
>>300
>>303の言うとおり非同期実行ではなく順番に一個ずつ書き込んでいってるはずだから
Mainのforループがエラーなく最後まで回っているかを確認してみたら

308:300 (ワッチョイ 7220-8n5s)
16/11/05 19:19:50.22 OZKlek+X0.net
根本的に非同期処理のやり方が間違っていただけなんですね
精進します

309:デフォルトの名無しさん (ワッチョイ 0117-7tG6)
16/11/05 20:30:25.56 ds+C0ndM0.net
まあネットで調べただけだと勘違いしやすいよね。
そういう風にしか書かれてないとこ多いもん。

310:デフォルトの名無しさん (ワッチョイ 1541-nJsM)
16/11/05 21:34:08.85 q4/6QuN40.net
書き散らしてるクソブログ多いもんなぁ
分かったフリして書く

それを読んで分かった気になる
以下ループ

311:デフォルトの名無しさん (ワッチョイ 9030-Tcji)
16/11/05 21:42:26.72 BoxZvYjG0.net
最近だとQiitaの「自分用メモ」がひでえ
お前用のゴミを公開するな
非公開で保存できるんだから

312:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/05 22:52:00.60 iEc26fmZ0.net
昔は公開しておくといちいち指摘してくれてそれで正しい情報になっていったが
いまブログ書いてるやつがどういうつもりかわからんし触りにくいってのあるよなぁ
お節介やいてストーキングまでされたらたまらんし
殴り合い上等でブログやってる人ならいいが
最近打た


313:れ弱いくせに公開するアホ増えたからなぁ



314:デフォルトの名無しさん (ワッチョイ 21c8-umBA)
16/11/06 17:53:34.18 RAhQzM620.net
WPFでデータバインドする際の INotifyPropertyChanged の実装方針について教えてください。
GUIにバインドするクラスに以下のような2つのプロパティがあるとき
int Value { set; get; }
int Value2 { get { return this.Value * 2 } }
Value の値が変わると自動的に Value2 の結果も変動するため、
Value の setter で、Value、Value2 の2つの PropertyChanged を投げる実装をしました。
しかし、Value が Value を利用してるプロパティの面倒まで見ることに違和感を覚えます。
これは INotifyPropertyChanged の仕様として仕方が無いのでしょうか。

315:デフォルトの名無しさん (ワッチョイ 01d6-8n5s)
16/11/06 19:37:13.87 jO0QNoEc0.net
仕方ない
氏名と名字、名前でも同じだしね

316:デフォルトの名無しさん (ワッチョイ 137b-A9qr)
16/11/06 20:19:58.80 A8MT+yST0.net
どうしてもってなら自分自身のPropertyChangedにイベント引っかけて
Valueが変更されてたらValue2のPropertyChanged起こすとかできるけど
同一クラス内でそんなの別に気にする必要もないんじゃね?

317:310 (ワッチョイ 21c8-umBA)
16/11/06 20:34:01.49 RAhQzM620.net
>>311 >>312
ありがとうございます。そのままの実装で作ってみます。

318:デフォルトの名無しさん (オッペケ Srbd-X2H6)
16/11/07 16:48:49.99 oxea6kUxr.net
>>252
コードレビューで散々ごねて書き直しさせた人がいましたww

319:デフォルトの名無しさん (オッペケ Srbd-X2H6)
16/11/07 16:51:52.12 oxea6kUxr.net
>>274
こんな事まで勉強してる人は滅多にいないかな。
それを言って理解出来る人も極めた少数派。

320:デフォルトの名無しさん (オッペケ Srbd-X2H6)
16/11/07 16:55:30.10 oxea6kUxr.net
>>307
あるあるww

321:デフォルトの名無しさん (アウアウオー Sade-MAch)
16/11/07 17:15:04.36 RVVbQ4DBa.net
>>315
悪いけど、その程度のことは知ったうえでその質問者を批判してる人の方が多いと思うよw

322:デフォルトの名無しさん (ワッチョイ 9823-KjJO)
16/11/07 19:06:22.15 JC+EsK6v0.net
うん…言葉尻を捉えるようだがContractで極めたは言い過ぎだな
実装が気になればReferenceSourceを見るのは普通だし
解説としてメジャーなufcpp.netでも触れられている
言語の詳細に興味がない、学ぶ気概がない人はそもそも…

323:デフォルトの名無しさん (オッペケ Srbd-DGmA)
16/11/07 19:10:13.37 Msy9mjY5r.net
変数名規則どうしてる?
フィールド
publicなのは大文字開始でいいけど
privateなのをどうするか悩む
m_Hogeまたはm_hoge
f_Hogeまたはf_hoge
_Hogeまたは_hoge

324:デフォルトの名無しさん (ワッチョイ e9dc-DGmA)
16/11/07 19:52:43.99 07KTk/ms0.net
一番人気はJavaのスタイルに合わせてhoge
10馬身差で_hogeとm_hogeじゃないか

325:デフォルトの名無しさん (アウアウオー Sade-MAch)
16/11/07 19:53:21.45 RVVbQ4DBa.net
バッキングフィールドは_hoge
それ以外のフィールドはmHoge

326:デフォルトの名無しさん (ワッチョイ 45bd-bOSl)
16/11/07 20:47:02.70 PlwpY0UQ0.net
Qiitaですげえイラッとする内容で、
ライブラリやツールつかって、やたら「簡単にできる」みたいなことを押す論調で、
紹介している奴。
「簡単にできる」 = 「自分自身で何やってるか、何が変わったかよくわからなく
なる」ということであって、
どうなるかの仕組みを考察したり解説したりするならいいが、
その盲点を無視して、
「ね?猿でもこんなこと簡単にできるでしょ?」
「使わなきゃ損でしょ?」とかはしゃいでいるガキには、物事を説明する
資格はない。そんな有害な記事はネットに上げるな。

327:デフォルトの名無しさん (アウアウオー Sade-MAch)
16/11/07 21:36:50.71 RVVbQ4DBa.net
誰と戦ってるおつもりなのかねw
ばっかじゃなかろうか

328:デフォルトの名無しさん (オッペケ Srbd-X2H6)
16/11/07 22:21:11.52 JoerH3dAr.net
>>318
ごめんなさい。
極めて少数派
の打ち間違いです。

329:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/07 23:00:37.04 geFZXkbd0.net
JSONで、”[[[1,2],[2,3]]]”のようなアウトプットがしたく
いろいろ探して下記のようなコードで出力できることは
解ったのですが
JavaScriptSerializer seri = new JavaScriptSerializer();
var list = new[] { new[] { new[] {1,2 }, new[] { 2, 3 } } };
string json = seri.Serialize(list);
//出力結果:[[[1,2],[2,3]]]
これを [[[1,2],[2,3],[3,4]...]] のように動的に追記していくには
どのように書いたら良いのでしょうか?
コレクションのように .Add() で次々書けたら良いなと思うのですが
よろしくお願いします

330:デフォルトの名無しさん (ワッチョイ e9dc-dKGq)
16/11/07 23:09:18.73 07KTk/ms0.net
>>325
本題の前に、
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
> Json.NET should be used serialization and deserialization.
とMS様もぶっちゃけてる通り、.NETでJSONを使うならJavaScriptSerializerではなく
デファクトスタンダードであるJson.NETを使いましょう
でJson.NETについて言うと、普通にList<T>をシリアライズすればJSONの配列になる。
事前に配列にしたいならToArrayすればいい。

331:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/07 23:15:49.87 geFZXkbd0.net
根本的にJavaScriptSerializerは推奨されない技術だったのですね
Json.NETを検討してみます
ありがとうございます

332:デフォルトの名無しさん (ドコグロ MMde-DGmA)
16/11/08 07:59:18.34 kkRkk3iCM.net
>>322
お前もQiitaとやらで
超難しい!超時間掛かる!
簡単とか言ってるやついるけどぶっちゃけ難解!
人類には早すぎた!
って記事かけや

333:デフォルトの名無しさん (ワッチョイ 7b49-XA/h)
16/11/08 21:00:12.94 360M0HJP0.net
>>301
TaskCreationOptions.LongRunningオプション付けてTaskを生成すれば専用のThreadになるから、生のThreadを使う必要ないよ。
それかスレッドプールの同時実行数をチューニングする方法もある。

334:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/08 21:46:12.39 xSnQLWcm0.net
昨日、jsonの質問をした者ですが
json.netに変更した所で、やはり同じところで悩んでいます
下記コードで出力結果が"[[[1,2],[2,3]]]"となるのですが
var list = new[] { new[] { new[] {1,2 }, new[] { 2, 3 } } };
string json = Newtonsoft.Json.JsonConvert.SerializeObject(list);
これを [[[1,2],[2,3],[3,4]...]] のように動的に追記していくには
どのように書いたら良いのでしょうか?
色々調べても、jsonはキーバリューの形が一般的で
配列でどう表現するのか解りませんでした
よろしくお願いします

335:デフォルトの名無しさん (ワッチョイ e9dc-dKGq)
16/11/08 22:10:11.42 ic1oOtKi0.net
だからList<T>使えよ
JSON云々以前の問題

336:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/08 23:23:57.86 xSnQLWcm0.net
List<T>のアドバイスをもとに
以下のようなコードで良い感じになってきたのですが
もう一つ配列の外カッコを表現することができませんでした
List<int[]> list = new List<int[]>();
list.Add(new[] { 1, 2 });
list.Add(new[] { 2, 3 });
list.Add(new[] { 3, 4 });
string json = Newtonsoft.Json.JsonConvert.SerializeObject(list);
//[[1,2],[2,3],[3,4]]
List<int[][]> list = new List<int[][]>();にすると
[[[1,2]],[[2,3]]]となってしまい
詰まっております
根本的に考え方が間違っているのでしょうか?

337:デフォルトの名無しさん (ワッチョイ 653c-m5qj)
16/11/08 23:35:34.26 qV47zIVg0.net
だからなぜ配列使うのかと…

338:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/08 23:55:21.12 xSnQLWcm0.net
すみません
経験不足で、配列以外でやる方法が
想像つきません
どういうイメージでやれば良いのか
教えて頂きたいです

339:デフォルトの名無しさん (ワッチョイ 0117-7tG6)
16/11/09 00:02:28.77 hsAPe+Q00.net
そこは置いとくとして。これで解決したりしてな。(試してない)
解決なら変数の内容というか意味を考えるべきだな。
var list2 = (new List<int[][]>());
list2.Add( list.ToArray() );
// list2 をシリアライズ

340:デフォルトの名無しさん (ササクッテロレ Spbd-m5qj)
16/11/09 03:15:10.85 qcMduGDNp.net
JSONの形だけでいいならこんなのでもいい
List<int[]>[] list3= {list};
int[][][] list4= {list.ToArray()};

341:デフォルトの名無しさん (ワッチョイ e93a-DGmA)
16/11/09 03:33:35.81 KnEUpDo20.net
>>332
List<List<List<int>>>

342:デフォルトの名無しさん (ワッチョイ 517b-8n5s)
16/11/09 05:25:22.53 moqMbmIT0.net
>>332
とりあえずその部分に納得したいならこうやれば形になるよw
var list = new[] { new List<int[]>() };
list[0].Add(new[] { 1, 2 });
list[0].Add(new[] { 2, 3 });

343:デフォルトの名無しさん (ササクッテロレ Spbd-m5qj)
16/11/09 14:02:25.71 qcMduGDNp.net
多分これ>>332は理解できないだろw
前提1: JSONはJavaScript Object Notationの略でjavascriptの文法をベースにした記法である
前提2: javascriptは動的型付け原語であり、C#は
静的型付け原語である
前述3: JSONにおける配列は[]で表され、C#のList<T>と配列はJSONの配列に変換される
前提1,2からC#で必要な型の情報はJSONには記述されないため、JSONをC#に変換する場合この型情報を補完しなければならない
前提3から動的な操作を行う個所はList<T>それ以外を配列で記述するといい

学習または理解のために
C#でもコンパイラによる型推論によって型宣言を省略できるが、理解するまでは省略せずに型をきちんと書く方が理解しやすい
よってvar禁止、初期化時の型宣言の省略禁止でそれぞれを書き換えてみると多少理解が進むんでないかな?
例として>>338のlistと>>336のlist3は省略せずに書くと以下のようになり同じものであるとわかる。
List<int[]>[] list = new List<int[]>[] { new List<int[]>() };
※ List<int[]>[] は intの配列(int[]) の リスト(List<T>) の 配列(末尾の[]) という意味
※ varは、右辺で型が明らかな場合コンパイラが型を推定して補完してくれる。コンパイル時に展開されるので省略せずに型を書くのと等価になる

344:デフォルトの名無しさん (ワッチョイ 3e4c-DGmA)
16/11/09 14:19:57.52 ESFv9usG0.net
>>339
優しいなおめぇ

345:332 (ラクッペ MM2d-DGmA)
16/11/09 17:18:24.33 ItbFMo65M.net
試行錯誤の結果
教えて頂いたList<T>にて
希望のjsonを作れました
基礎的な理解もなく
ネットで得る断片的なソースの
コピペでは応用が効かないと痛感しています
ありがとうございます

346:デフォルトの名無しさん (オッペケ Srbd-X2H6)
16/11/09 19:36:58.06 z4p8v0swr.net
コピペは止めとけ。
Ctrl-C,Vを禁止するだけでプログラミング能力が上がるとか何とか。

347:デフォルトの名無しさん (ブーイモ MM31-m5qj)
16/11/09 20:18:59.79 GH2RO7KKM.net
コピペした回数により残業代減額

348:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/09 21:32:55.41 xe8Gs44h0.net
LINQのSelectで、メンバ「txt」が"a"の場合、
メンバ「intdata」の符号を反転するということをしたいのですが、
どのように書けば良いのでしょうか?
LINQで条件式が書けるとコードが随分小さくなるので
助かります!!!
class testClass
{
public string txt { get; set; }
public int intdata { get; set; }
}
static void Main(string[] args)
{
List<testClass> ts = new List<testClass>();
ts.Add(new testClass { txt = "a", intdata = 1 });
ts.Add(new testClass { txt = "b", intdata = 2 });
var tsFnc = ts.Select(e => e.txt == "a" ? e.intdata = e.intdata * -1); //←エラー
}

349:デフォルトの名無しさん (ブーイモ MM31-m5qj)
16/11/09 21:46:02.27 GH2RO7KKM.net
e.txt == "a"
? new testClass() { txt = e.txt , intdata = -e.intdata }
: e

350:デフォルトの名無しさん (ワッチョイ e9dc-dKGq)
16/11/09 21:58:25.28 EZkCstT40.net
それインラインのラムダで書いてしまうとコードの意図がわかりにくいから
static testClass Hoge(testClass e) => (>>345);
のようにメソッドとして外出しした上で ts.Select(Hoge) と書くのがいいんじゃないかな
メソッド本体をラムダの形式でスマートに記述できるようになったことだし、
ちょっと複雑なラムダには積極的にメソッド名を付けることを心がけるといい

351:デフォルトの名無しさん (ササクッテロレ Spbd-m5qj)
16/11/09 22:25:47.94 qcMduGDNp.net
>>344
そりゃ値を返さなければエラーになるよな
ts.Select( (e) =>{
if(e.txt=="a") e.intdata*=-1;
return e;
});

352:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/09 22:41:05.99 xe8Gs44h0.net
>>347
期待した結果が出ました。
ありがとうございます!!!
色んなサイトを回ったのですが、なかなか条件式を書いているサンプルが無かったもので、助かります!!!

353:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/09 22:44:01.71 xe8Gs44h0.net
>>346
従来のやり方を単純にラムダに変えるのではなく、
ラムダ的なスマートさも追及すべきということですね。
参考になります。

354:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/09 22:49:39.71 xe8Gs44h0.net
ラムダというかLINQは凄い便利なんですけど、
なんか重いんですよね。
やぼったく書いていた処理をラムダにしたら
可読性が上がった反面、処理に倍の時間がかかるようになってしまい。。。
便利ゆえの宿命なのか、
使いこなせてないだけなのか、
その両方かって気がしています。

355:デフォルトの名無しさん (ワッチョイ 5eed-DGmA)
16/11/09 22:52:28.34 GViSYmlw0.net
適宜ToArrayしろってResharperが言ってた

356:デフォルトの名無しさん (ワッチョイ 8a02-2mfK)
16/11/09 23:09:04.87 xK7OwzcU0.net
LINQにしたら倍ほど遅くなるコードって例えばどんなん?

357:デフォルトの名無しさん (ワッチョイ e9dc-dKGq)
16/11/09 23:23:27.68 EZkCstT40.net
>>347はないわ
インプレースで更新するんなら普通に
foreach (var e in ts) if (e.txt == “a”) e.intdata *= 1;
でいいだろ
副作用がないように見えてこっそり更新してるってのは罠に近い極めてタチの悪いコード

358:デフォルトの名無しさん (ブーイモ MM31-m5qj)
16/11/09 23:31:35.24 GH2RO7KKM.net
>>352
実処理がメソッド呼び出しオーバーヘッドより少ない時かな
ボトルネックにはならないけど倍以上にはなる

359:デフォルトの名無しさん (ワッチョイ f023-8n5s)
16/11/09 23:31:54.26 0UIYYtz/0.net
もしLinqでやりたいのならForEachの拡張メソッドを書くか、IxをNuGetで入れるほうが健全だな

360:デフォルトの名無しさん (ワッチョイ 9f02-u2pL)
16/11/10 01:11:52.00 gZ1S6RPu0.net
>>354
サンプルコードある?
その論理でいくと、実処理がゼロの時が最も顕著で
通常のループよりLINQでのループ(列挙)が倍以上遅いってことになるんだが
繰り返し判定が遅いのかループの準備が遅いのか知らんが
LINQのほうが多少遅いとしても、どれだけ回したら有意な差がでるほどオーバーヘッドあるんだ

361:デフォルトの名無しさん (ワッチョイ 8fe1-PwKp)
16/11/10 01:38:07.59 zCCtWAZL0.net
何万回も回すとか、コンパイラを作るとかじゃなければメソッド呼び出しのコストはほぼ無視できるはず
たぶん、無駄のある書き方してるか、最適化を邪魔するような記述になってるんじゃないかな

362:デフォルトの名無しさん (ブーイモ MM6f-9MLS)
16/11/10 01:48:41.09 4pFcdHJlM.net
>>356
だからボトルネックにはならないって書いたじゃん
倍になろうが大したことない
遅い派の人は処理オーダー違うアルゴリズムと比較してるんだろ

363:0-WVKM)
16/11/10 02:05:10.17 wdbpo9Rt0.net
倍遅いって記述がアレで単にループ倍増しているだけじゃね

364:347 (ワッチョイ 033c-9MLS)
16/11/10 02:45:22.58 BAuxaWeL0.net
>>353
いや俺に言われても>>344が求めてるのは "LinqのSelectで~メンバ「intdata」の符号を反転する" 方法だからな
要求仕様がLinqのSelectで行うことを明示していて、intdataの反転した別インスタンスを返すではなくメンバ変数を反転すると定義しているならそう書くだけだ
こんな書き方するべきじゃないってのはその通りだがそれは>>344に言ってくれ

365:デフォルトの名無しさん (オッペケ Sr2f-WFrU)
16/11/10 03:27:07.24 +tyQ2nEUr.net
副作用は書かないのがコツ。
>>345が考え方としてはよろしい。

366:デフォルトの名無しさん (オイコラミネオ MMdf-h9op)
16/11/10 09:30:47.14 SIcifk3eM.net
IxとRxってどう違うの

367:デフォルトの名無しさん (アウアウオー Saff-IeI3)
16/11/10 10:49:41.41 otGHoxmha.net
普通に考えてそもそもSelectを使うのがおかしいw
>>353は途中まで普通のこと言ってるのに>>345は否定しないのはおかしいw

368:デフォルトの名無しさん (ワッチョイ b3dc-PwKp)
16/11/10 12:52:58.94 +0vOVL7/0.net
>>347は副作用ないしインスタンスの同一性に拘らないなら目的は果たせてるだろ
分かりにくい糞コードかもしれないが、コードの形をした糞である>>347のように完全否定されるほどのものではないよ

369:デフォルトの名無しさん (ワッチョイ 033c-9MLS)
16/11/10 13:14:42.66 BAuxaWeL0.net
こういう議論が面倒だから>>344の要求に忠実に書いた訳だが…
そもそもSelectを使うのが間違いというのは議論の余地がないからいいとして、副作用を避けるなら>>345はないわw
元のインスタンスと別インスタンスとを混在させて返すってのは罠じゃないのかと
new testClass() { txt = e.txt , intdata = e.intdata*(e.txt=="a"?-1:1) };
別インスタンスを返すなら符号の反転の有無に関わらず必ず別インスタンスで返すべき

370:デフォルトの名無しさん (ワッチョイ a723-teht)
16/11/10 13:43:53.32 o8sMendu0.net
つか、select使わずに拡張メソッド作ったほうがよくね
例えばこんなやつ
URLリンク(ideone.com)

371:デフォルトの名無しさん (ワッチョイ a70d-Cgco)
16/11/10 20:14:55.52 jVtZ8e8U0.net
WPFでVisual StudioのようなタブやドッキングウィンドウがあるUIを作りたく思い
そのようなテンプレートを探しています
「AvalonDock」というものは見つけましたが他にご存知なら教えてください

372:デフォルトの名無しさん (ブーイモ MMef-9MLS)
16/11/10 20:37:33.96 uFjDSD4sM.net
>>365
もう少し視野を広くした方がいい
データ転送オブジェクトや値オブジェクトといったワードで検索してごらん
そのあとはクエリ・コマンド分離の原則を調べよう

373:デフォルトの名無しさん (オッペケ Sr2f-WFrU)
16/11/10 21:24:48.41 +tyQ2nEUr.net
>>366
それの有り難みが理解出来る人は人類では、ほとんどいないw

374:デフォルトの名無しさん (ワッチョイ 7f20-teht)
16/11/10 22:02:45.75 INda+yqE0.net
下のようなコードで動的な数のtaskを作ることは
できるでしょうか?
static async Task ts()
{
List<Task> tsLists = new List<Task>();
var task1 = Task.Run(() =>{/*処理*/});
var task2 = Task.Run(() => {/*処理*/});
tsLists.Add(task1);
tsLists.Add(task2);
await Task.WhenAll(tsLists);
}
Task.WhenAllに配列を含めることができるのなら
taskもできるのではと思いまして
よろしくお願いします

375:デフォルトの名無しさん (ワッチョイ b77b-eMoa)
16/11/10 22:55:20.24 pEVMYV3p0.net
var task1 は、オブジェクトだろ?
当然、コンテナにも入れられる

376:デフォルトの名無しさん (ワッチョイ 4379-teht)
16/11/10 22:56:21.90 ApowNrKS0.net
C#の基本を理解していない奴がスレッドに手出したら死ぬからやめておけ

377:デフォルトの名無しさん (ワッチョイ 7f20-teht)
16/11/10 23


378::58:51.41 ID:INda+yqE0.net



379:デフォルトの名無しさん (ワッチョイ 8394-5NgJ)
16/11/11 02:00:56.00 /+d8XFyb0.net
>>370のコードの方は、まぁ、普通
(TaskふたつくらいならわざわざListは使わないけど)
しかし、>>373 は……どうしてこうなった

380:デフォルトの名無しさん (ササクッテロリ Sp2f-9MLS)
16/11/11 02:40:34.81 6sQwg64Zp.net
ソフトの設定をシリアル化するために一つのクラスにまとめたのはいいけどどうアクセスするのが普通なのかよく分かりません
全部public staticにして直接さわってもいいのでしょうか

381:デフォルトの名無しさん (ワッチョイ b37b-hNMU)
16/11/11 03:31:49.89 by5SD+CT0.net
switch文で文字列による分岐をする場合
var hoge="hoge";
// パターン1
var firstChar=hoge.SubString(0,1);
switch(firstChar){
case "a":
 switch(hoge){
  case "akina": ・・・
  case "akiko": ・・・
  case "asaka":: ・・・
  case "amika": ・・・他ずらっと続く
 }
 break;
case "h":
 switch(hoge){
  case "honoka": ・・・
  case "hosaka": ・・・
  case "hoge": ・・・他ずらっと続く
 }
break;
}
// パターン2
switch(hoge){
  case "akina": ・・・
  case "akiko": ・・・
  case "asaka":: ・・・
  case "amika": ・・・
  case "honoka": ・・・
case "hosaka": ・・・
  case "hoge": ・・・
}
パターン1、2でどちらが目的の文字列にたどり着く速度が早いのでしょうか

382:デフォルトの名無しさん (ワッチョイ a70d-Cgco)
16/11/11 04:06:38.01 qvZdoaA90.net
... DropShadowEffect.Color="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}},Path=(params:General.ShadowBrush).(SolidColorBrush.Color)}" />
この記述に間違いはありますでしょうか?

383:デフォルトの名無しさん (ワッチョイ 937b-teht)
16/11/11 04:43:55.58 MLb8BpI60.net
>>376
後者

384:デフォルトの名無しさん (ワッチョイ 3319-7KSV)
16/11/11 08:50:36.60 OnmZcNT90.net
>>377
Path中の括弧は基本的に添付プロパティの指定に使うもんだけど
型明示とかの意味で使おうとしてない?

385:デフォルトの名無しさん (ワッチョイ b77b-eMoa)
16/11/11 10:27:04.66 M2uBl8fv0.net
>>373
>List<Task> tsLists = new List<Task>();
>List<object> taskArry = new List<object>();
クラスの継承チェーンでは、Objectクラスがすべてのクラスの基本で、
Object以外のクラスは、すべてそこから派生している。
もちろん、Taskクラスも、Objectクラスの派生クラス
Objectクラスは親クラスで、より抽象的なもの。
Taskクラスは派生クラスで、Objectクラスより具体的で、限定されているため安全だから、
Taskをそのまま使えばいい
Taskクラスは、Objectクラスが持っている、属性・メソッドをすべて持っているから、
そのままObjectクラスとして使える。
(Task)task で、キャストする必要などない
オブジェクト指向を、基本から勉強すべし

386:デフォルトの名無しさん (ワッチョイ b77b-eMoa)
16/11/11 10:43:07.91 M2uBl8fv0.net
>>376-378
漏れも、辞書データベースを作る際、
aで始まる単語の表・bで始まる単語の表・cで始まる単語の表、などのように表を分けるか、
すべてを1つの表にするかで迷う
パターン1の方が、先に限定(枝刈り)されるから、速いような気がするけど、
caseが8つ以上あると、コンパイラが最適化して、
文字列をハッシュ化(整数化)するかも知れないので、パターン2の方が速いかも

387:デフォルトの名無しさん (スッップ Sd1f-PwKp)
16/11/11 12:20:00.46 B0EI7WuJd.net
トライ木って奴だな
実際Stringのハッシュにこれが使われてるかは知らんが

388:デフォルトの名無しさん (アウアウオー Saff-IeI3)
16/11/11 12:26:36.61 TqB+9XQ4a.net
>>376
実験して報告してw
あと、Dictionary<String, Action>を使うケースも追加で
でもまあ、人が手動でコーティングできる程度の分岐では直感的には
後者の方が速そうな気がする。

389:デフォルトの名無しさん (ワッチョイ 4bda-teht)
16/11/11 12:31:45.60 UQPlBidt0.net
DictionaryにFunc突っ込んだほうがスッキリしていいだろう

390:デフォルトの名無しさん (アウアウオー Saff-IeI3)
16/11/11 17:11:54.51 TqB+9XQ4a.net
>>376
あと細かいことだけど、「分類」に使うのが常に最初の1文字だけなら
素直にcharにした方が(つまりhoge[0])の方が速い気が

391:デフォルトの名無しさん (ブーイモ MM1f-9MLS)
16/11/11 20:20:29.68 Bi+hCNL7M.net
>>375
設定クラスとファイルは適度に分割する
staticは使わない
設定読み取りインターフェースとクラスを作る
設定に依存するクラスにインジェクションする

392:デフォルトの名無しさん (ワッチョイ 8fe1-PwKp)
16/11/11 22:27:34.93 +gNs9Nbk0.net
>>376
多分後者は最適化でジャンプテーブルに変わるのでそっちのほうが早いかなぁ

393:デフォルトの名無しさん (ワッチョイ b3dc-PwKp)
16/11/12 00:58:23.88 e739leKk0.net
>>376
本気で最適化するならプロファイル取って出現頻度順にソート
一般的にそういうのは分布がかなり偏るので統計的に速くなる

394:デフォルトの名無しさん (ワッチョイ 57ce-Cgco)
16/11/12 08:39:07.19 rgkWnGP70.net
内部で二分探索やジャンプテーブルに変わろうが、毎回文字列を比較してる時点で遅い
分量が不明ならDictionaryに変えるべき
自分でアルゴリズム実装する場合はC#ではunsafeにしない限り遅い

395:デフォルトの名無しさん (ブーイモ MM6f-9MLS)
16/11/12 08:56:42.02 NIqnWzQ8M.net
仮に倍早くなっても辞書をハードコードされたswitchで実装はしたくないな

396:デフォルトの名無しさん (ワッチョイ 57ce-Cgco)
16/11/12 09:36:17.93 rgkWnGP70.net
比較前に一意な文字列に変換して、文字列値としてではなくアドレスやハッシュ値を探索するのが一番速いんだけど
そういうのって標準にないんだっけ

397:デフォルトの名無しさん (ワッチョイ a723-teht)
16/11/12 09:47:10.83 IKX2nQlp0.net
昔見たLinuxのシェルのソースじゃ最初の方のスイッチ使ったロジックだったな
C言語の文字列の扱いなら速度差もあるかもしれんね

398:デフォルトの名無しさん (ブーイモ MM6f-9MLS)
16/11/12 10:14:16.67 gzcT9VGJM.net
>>391
Internというのがある
同じ値の文字列を同じインスタンスの文字列にして返す

399:デフォルトの名無しさん (ワッチョイ 9f02-u2pL)
16/11/12 15:14:10.12 Ayj+NND50.net
caseずらずらと並べると、順次検索するのか?
それだとAxxxは早いけどYxxxは遅いとかいうことになると思うんだが
単純にどっちが早いかなんて比較できんわな

400:デフォルトの名無しさん (ワッチョイ 7f17-C1EH)
16/11/12 15:33:15.88 duqbQJlR0.net
質問です
アプリにメインのフォームとモードレスなフォームの二つがあります
モードレスなフォームを操作したあとに
メインのフォームのボタンを押そうとすると
メインのフォームへフォーカスをあてるためにワンクリック、
ボタンを押すためにもう一回ワンクリックという具合に
2回クリックしないといけないのですが、
これをワンクリックに縮める方法はなにかありますか?
(一つのウィンドウにまとめる方法以外で)

401:デフォルトの名無しさん (ワッチョイ 033c-9MLS)
16/11/12 15:42:42.07 IIxQEFvy0.net
世界一IQの低いソースコードはこれ。ってネタを思い出したわ
>>394
switch はジャンプテーブルでの実装なので末尾のラベルであっても先頭のラベルと処理時間に差は出ない
また同じ理由から選択肢の数が増えても処理時間は殆ど増えない

402:デフォルトの名無しさん (ワッチョイ 7f13-ChQh)
16/11/12 15:47:36.63 kNoTIrA70.net
>>396
おいおい,一度に全部を比較できないだろう?
Axxx は最初の方に比較するし
Yxxx は最後の方に比較するのだったら
Yxxx が確定するまでの時間は Axxx よりも大きくなるのでは?
ジャンプテーブルにしようが,個々の分岐によって時間差が出るのではないかね

403:デフォルトの名無しさん (ワッチョイ b75e-FQoa)
16/11/12 15:58:38.99 GAbwEXNG0.net
>>395
メインのフォームのボタンにMouseEnterでthis.Activate()とFocus()するようにしたら
フォーカスをあてるための分は省略できる

404:デフォルトの名無しさん (ワッチョイ 6bed-eZXk)
16/11/12 16:17:42.31 VXYUWtaP0.net
>>395
WM_MOUSEACTIVATEでググるといい

405:デフォルトの名無しさん (ワッチョイ 6f3c-PwKp)
16/11/12 16:30:32.34 HzMgTMM90.net
>>397
ジャンプテーブル自体を知らないなら初心者スレだからまああるとは思うがジャンプテーブル知ってて
> Axxx は最初の方に比較するし
> Yxxx は最後の方に比較するのだったら
> Yxxx が確定するまでの時間は Axxx よりも大きくなるのでは?
はないわ
言葉だけ中途半端に覚えてる知ったかなんだろうな...

406:デフォルトの名無しさん (ワッチョイ 7f13-ChQh)
16/11/12 16:34:08.09 kNoTIrA70.net
>>400
お前,物事を本当に突き詰めて考えたことが無いんだろう?
今回の文字列比較では差が出て当然
ジャンプテーブルといっておれば,とか間抜けにもほどがある

407:デフォルトの名無しさん (ワッチョイ c3a1-PwKp)
16/11/12 17:10:42.68 x4E8HTQB0.net
文字列比較でテーブル上の位置を特定するには結局ハッシュテーブルと同様の実装がされてるんじゃないの
低レベルな分僅かに高速に動くかも知らんが

408:デフォルトの名無しさん (ワッチョイ 7f17-C1EH)
16/11/12 17:11:17.70 duqbQJlR0.net
>>398-399
toolStripに対して、>>398のMouseEnterでthis.Activate()とFocus()する方法でできました
WM_MOUSEACTIVATEをハンドルする方法もあるのですね。勉強になります
ありがとうございます

409:デフォルトの名無しさん (ワッチョイ 7f13-ChQh)
16/11/12 17:21:06.75 kNoTIrA70.net
>>402
お前すべての文字列についてハッシュ値が異なるように設計できるとでもいうのか?
ハッシュ値をジャンプテーブルに使うとはそういうことだ,そんな無茶な主張をするのか?

410:デフォルトの名無しさん (ワッチョイ a7da-teht)
16/11/12 17:24:24.15 5Ttb/Uep0.net
ハッシュテーブルと言ってる人につっかかるなよ

411:デフォルトの名無しさん (ワッチョイ 6f3c-PwKp)
16/11/12 19:31:45.56 HzMgTMM90.net
>>404
知ったか君は完全ハッシュも知らないのになんでそんな偉そうなのか理解に苦しむ w

412:デフォルトの名無しさん (ワッチョイ 8fe1-PwKp)
16/11/12 19:37:48.04 SdQQy6fO0.net
現在はもっと最適化が入るかもしれんが、やっぱりハッシュテーブルだね
URLリンク(qiita.com)
ハッシュが衝突するときだけ文字列比較に行くんじゃないかな
まぁ、hashdosでもされない限りボトルネックにはなりにくいんじゃない?

413:デフォルトの名無しさん (ワッチョイ 7f13-ChQh)
16/11/12 19:52:58.86 kNoTIrA70.net
>>406
で,不特定な文字列に対して比較する場合に完全ハッシュを実現することはできるの?
>>407
ハッシュが衝突するかどうかは,文字列比較までやってしまわないと判明しないのでは?

414:デフォルトの名無しさん (ワッチョイ 8fe1-PwKp)
16/11/12 20:01:20.50 SdQQy6fO0.net
>>408
聞く前に実装を確認したほうが早い
URLリンク(referencesource.microsoft.com)

415:デフォルトの名無しさん (ワッチョイ 7f13-ChQh)
16/11/12 20:11:38.18 kNoTIrA70.net
>>409
なるほどね,不特定な文字列のみ対象とする連想配列ならば,まずはハッシュで付き合わせるのは「あり」なんだね
でも,特定文字列と不特定な文字列比較の case の実装について話しているのに,不特定な文字のみ対象の連想配列の例を出すのはどうかと思うよ

416:デフォルトの名無しさん (ワッチョイ 6f3c-PwKp)
16/11/12 20:31:54.23 HzMgTMM90.net
>>408
> で,不特定な文字列に対して比較する場合に完全ハッシュを実現することはできるの?
コンパイル時に確定してるなら可能
完全ハッシュ アルゴリズム
とかでググれ
> ハッシュが衝突するかどうかは,文字列比較までやってしまわないと判明しないのでは?
ハッシュの衝突の意味がわかってないのか?
異なる入力に対して同一のハッシュ値が生成されることで当然コンパイル時にわかるから衝突するハッシュ値が生成された時だけ文字比較すればいいだけ

417:デフォルトの名無しさん (スフッ Sd1f-PwKp)
16/11/12 20:35:13.60 nrwwVciNd.net
>>410
なんか違和感。
不特定の文字列の中に、特定の文字列は内包されるような気がする。概念的な話になるけど。

418:デフォルトの名無しさん (ワッチョイ 7f13-ChQh)
16/11/12 20:41:39.03 kNoTIrA70.net
>>411
>コンパイル時に確定してるなら
というのは不特定の文字列とはいわないよ
何がくるか分からない文字列に対して完全ハッシュは無理
>>412
もう少しお話をおききしたいが

419:デフォルトの名無しさん (ワッチョイ 6f3c-PwKp)
16/11/12 20:54:31.74 HzMgTMM90.net
>>413
ああ、入力側の話か
分岐した後に一度だけ確認すればいいだけ
確認すべき文字列は確定してるから

420:デフォルトの名無しさん (スフッ Sd1f-PwKp)
16/11/12 21:31:32.38 nrwwVciNd.net
>>413
うーん、不特定な文字列に対して安全なら、それは特定の文字列に対しても安全では無いの?
パフォーマンスは置いといて。
この包丁は誰にとっても安全です、なら、この俺にとっても安全だろうし、>>413にとっても安全だと。
竹光でもさ。
ハッシュが衝突するならオープンアドレス法かなんかでシノニムうまく扱うしか無いけど。
現実問題、Knuthのあの関数でそうそう衝突はしないけど。

421:デフォルトの名無しさん (アウアウオー Saff-IeI3)
16/11/12 21:48:02.84 SCKfSUb2a.net
>>395
これ、せっかくVista以降改善された仕様を無にする行為だと思うんだけど

422:デフォルトの名無しさん (ワッチョイ 57ce-Cgco)
16/11/12 21:53:54.19 rgkWnGP70.net
ウィンドウのフォーカス周りって10で相当わけわかめな仕様になってない?
ところでわけわかめって通じる?

423:デフォルトの名無しさん (ワッチョイ 033c-Cgco)
16/11/12 21:56:33.32 tSXTeFta0.net
通じる(30代)

424:デフォルトの名無しさん (ワッチョイ 57ce-Cgco)
16/11/12 21:58:32.19 rgkWnGP70.net
何時頃だったか裏にいたウィンドウがアクティブになろうとしてブリンクするいらん仕様を盛り込んでから俺の中で既におかしくなってるけど
10でさらにわけわかめになってる

425:デフォルトの名無しさん (ワッチョイ 7f13-PwKp)
16/11/12 22:56:05.49 TM8SsXVk0.net
>>417
「意味とろろ」まで付けないとだめ

426:デフォルトの名無しさん (ワッチョイ 377b-U3jc)
16/11/13 03:09:33.62 sNDrzqcx0.net
ファイルをサーチしてそのFileInfo.FilenameをListBoxに表示したい。
あとでItemをクリックしたとき、FileInfoの別のプロパティも参照したいのでFileInfo
自体もListBoxに保存しておきたい。
1.ListBoxを継承したコントロールを作るのは手間がかかる。
2.ListBoxを継承したクラスを作って、Formにaddすることもできるが、これだと
 位置とサイズを設定するのが面倒だ。
 
 なにか良い方法はないか?

427:デフォルトの名無しさん (ワッチョイ 377b-U3jc)
16/11/13 03:28:05.31 sNDrzqcx0.net
自己解決した。

428:デフォルトの名無しさん (ワッチョイ 377b-U3jc)
16/11/13 03:33:14.17 sNDrzqcx0.net
やっぱりだめやった。Objectは保存できるが、Stringも同時に保存したい。
二つ同時はむつかしいやろな。

429:デフォルトの名無しさん (ワッチョイ 377b-U3jc)
16/11/13 03:33:57.68 sNDrzqcx0.net
やっぱり解決した。W thanks

430:デフォルトの名無しさん (ブーイモ MM6f-9MLS)
16/11/13 11:41:32.61 l4pNS+tdM.net
おめでとう

431:デフォルトの名無しさん (ワッチョイ d317-eZXk)
16/11/13 11:48:17.12 DlcyGqZP0.net
ワロタ

432:デフォルトの名無しさん (ワッチョイ 9f02-EqbM)
16/11/13 15:32:47.36 PMfnb6vA0.net
WPFのリストボックスとか任意の型のリストで持てるんじゃなかったっけ

433:デフォルトの名無しさん (オッペケ Sr2f-PwKp)
16/11/13 15:35:53.81 LTz5BAc9r.net
まじかよ糞フォームは独自リストをバインドすることもできないのか

434:デフォルトの名無しさん (ワキゲー MMff-UXqH)
16/11/13 16:33:34.20 bY6b9EITM.net
ListBoxはバインドできるよ
ListViewは無理だけど

435:デフォルトの名無しさん (オッペケ Sr2f-PwKp)
16/11/13 16:37:40.46 uxmSSaQNr.net
WPFのメリットってなに?

436:デフォルトの名無しさん (ワッチョイ 377b-U3jc)
16/11/13 17:48:03.25 sNDrzqcx0.net
public static int CountList<T>(List<T> list, Func<T, bool> predicate)
{
int count = 0;
foreach (T element in list){
// predicateが参照するメソッドを、elementを引数に渡し呼び出している
if(predicate(element)){
// 真ならカウンタをインクリメント
count++;
}
}
return count;
}
CountList<T> これはT型の変数を返すという意味なのにリターンはstatic int
なのはなぜ?

437:デフォルトの名無しさん (ワッチョイ 377b-U3jc)
16/11/13 17:53:19.93 sNDrzqcx0.net
public static T CountList<T>(List<T> list, Func<T, bool> predicate)
これの間違いか?

438:デフォルトの名無しさん (ワッチョイ 377b-U3jc)
16/11/13 17:56:52.79 sNDrzqcx0.net
>WPFのメリットってなに?
UIをプログラムはできなくても絵の得意な人がやってモデルをプログラマーが専念
できるということかな。

439:デフォルトの名無しさん (ワッチョイ 033c-Cgco)
16/11/13 18:01:22.99 r+Z8oKZ70.net
WinFomsではやりにくいGUIも、WPFでなら作りやすいってケースはある

440:デフォルトの名無しさん (ワッチョイ b3dc-PwKp)
16/11/13 18:05:48.45 T5+9PjbV0.net
>>433
現実的にはデザイナーがBlendでXAML作るなんて不可能だけどね
デザイナーに期待できるITスキルは唯一HTML/CSSだけだよ

441:デフォルトの名無しさん (ワッチョイ 377b-U3jc)
16/11/13 18:07:10.18 sNDrzqcx0.net
これはどういう意味? 複雑すぎてわからん。
static String ToResult<TSource>(this IEnumerable<TSource> source)
{
return "{" + string.Join(", ", source) + "}";
}
static String ToResult<TKey, TSource>(this IEnumerable<IGrouping<TKey, TSource>> source)
{
return source.Select(group => string.Format("Key={0}, Source={1}", group.Key, group.ToResult())).ToResult();
}

442:デフォルトの名無しさん (ワッチョイ b7ba-teht)
16/11/13 18:12:30.43 pC0Itdjh0.net
我慢してコードビハインド使わない縛りでやったらUIテストが楽そうだと思った。

443:デフォルトの名無しさん (オッペケ Sr2f-PwKp)
16/11/13 18:30:15.49 uxmSSaQNr.net
>>433
そーなのか
ずっとWinFormしか触ってないんだけど、WinFormのコントロールと同じような動作をWPFに求めてもそういうのは用意されてないの?
たとえばWinFormのDataGridViewには自動的に絡む幅とか調整してくれるメソッドとかあるけどWPFには用意されてないとか?
>>434
逆もある?

444:デフォルトの名無しさん (アウアウイー Sa0f-PwKp)
16/11/13 18:45:13.54 lfE9hohca.net
>>435
割と良いXAML来るけどな。うち。

445:デフォルトの名無しさん (スププ Sd1f-PwKp)
16/11/13 19:32:10.60 BXznGnDQd.net
>>434
その逆もあるよね

446:デフォルトの名無しさん (ワッチョイ a723-teht)
16/11/13 20:47:49.40 lO2MkZMm0.net
>>440
xamlは覚えるまでに苦労するけど、覚えちまったらFormsより遥かに素早く簡単に出来るんだけどな

447:デフォルトの名無しさん (ワッチョイ b33a-teht)
16/11/13 21:29:38.43 fclqIQTb0.net
>>431
> CountList<T> これはT型の変数を返すという意味なのに
その T は型引数に T を取るという意味

448:デフォルトの名無しさん (ワッチョイ a70d-Cgco)
16/11/13 22:11:24.34 e/ThXpat0.net
メニューのボタンを押したら異なるViewの特定の要素にアクセスしたいのですが、どうすればいいですか?
ElementNameでは同じViewに記述していないと駄目?みたいで困っています
RelativeSourceを使えば良いのでしょうか?でも記述方法がわかりません・・・。よろしくお願いします

Menu.xaml
<MenuItem Header="Test1表示" IsCheckable="True" IsChecked="{Binding IsVisible, ElementName=Test1}" />  ←ボタンを押したら
Test.xaml
<Grid x:Name="Test1"> ←これにあるIsVisibleが切り替わるようにしたい

449:デフォルトの名無しさん (ワッチョイ 4b49-VsRF)
16/11/14 00:31:18.15 HFnn5wUH0.net
>>440
Formの方がやりやすいGUIってどんなの?

450:デフォルトの名無しさん (ワッチョイ 57ce-Cgco)
16/11/14 01:58:30.32 ktK+BwK20.net
xaml←これなんて読むんですか!

451:デフォルトの名無しさん (ワッチョイ 9fa6-teht)
16/11/14 02:01:05.98 dUUXzUko0.net
ザームル

452:デフォルトの名無しさん (ワッチョイ 377b-U3jc)
16/11/14 03:26:59.64 OCTkBwGI0.net
static void Swap<T>(ref T lhs, ref T rhs){
T temp;
temp = lhs; lhs = rhs; rhs = temp;
}
呼び出しは
Swap<int>(ref a, ref b);
省略して
Swap(ref a, ref b);
これはダメか? これでもいいよな。
Swap( a, b);

453:376 (ワッチョイ b37b-hNMU)
16/11/14 04:35:40.38 v43jjczV0.net
テストプログラムを作ってみました。
URLリンク(ideone.com)
間違った評価していないか確認して頂きたく。
各テストを1000万回ずつ回した結果は
TestPattern1
test1 elapsed:198msec hitCounter:10000000
test2 elapsed:197msec hitCounter:10000000
test3 elapsed:196msec hitCounter:10000000
TestPattern2
test1 elapsed:192msec hitCounter:10000000
test2 elapsed:183msec hitCounter:10000000
test3 elapsed:183msec hitCounter:10000000
TestPattern3
test1 elapsed:192msec hitCounter:10000000
test2 elapsed:191msec hitCounter:10000000
test3 elapsed:186msec hitCounter:10000000
TestPattern4
test1 elapsed:261msec hitCounter:10000000
test2 elapsed:261msec hitCounter:10000000
test3 elapsed:261msec hitCounter:10000000
firstCharで絞っても大した差は無し。
Dictionary<string,Action>は遅い。
でした。
core i7 6700k Releaseビルド
Debugビルドにするとめちゃ遅い

454:デフォルトの名無しさん (ワッチョイ ef9f-WrRy)
16/11/14 05:52:45.45 /TJLzgQW0.net
それ最適化でswitchが丸ごと無くなるんじゃないの?

455:デフォルトの名無しさん (ワッチョイ 4bc0-WVKM)
16/11/14 12:20:13.87 SBSYakm50.net
どうせいつもの100万回で数百msの差だろと思ったら、試行回数も差も一桁違ってた・・・
考えるだけ無駄だわな

456:デフォルトの名無しさん (アウアウオー Saff-IeI3)
16/11/14 12:27:16.06 QoZcYnGka.net
>>448
繰り返し回数よりcaseの数の方が肝だと思うけど

457:デフォルトの名無しさん (ワッチョイ 6f7d-teht)
16/11/14 13:04:48.53 BB8aMjT80.net
DebugだとDictionaryだけ速いんだな

458:デフォルトの名無しさん (ワッチョイ b39f-cYps)
16/11/14 15:03:27.08 +U0ySF0b0.net
VS2013 .Net4.5.1
文字列のswitchがDictionary<string, int>→switch(int)みたいなILになってるので
test4がわずかに速いな
TestPattern2もstringCaseTestPattern1呼んでるぞ

459:デフォルトの名無しさん (ワッチョイ 5387-MJQ8)
16/11/14 17:41:26.21 Qgf5Rn5/0.net
話に割り込んでしまってすみません。
次のようなことをやりたいのですが、そもそも可能でしょうか。
メインフォームで時間のかかるループ処理をやっていて、
その進行状況を別フォームを表示して、
別フォーム上に配置したプログレスバーで表示したいと思っています。
以前、ループ処理自体を別フォームで行っいプログレスバー表示はさせたことはありますが、
今回は、ループ処理はメインフォームで行いたいと考えていますが、
そもそも可能なのでしょうか。

460:デフォルトの名無しさん (オッペケ Sr2f-WFrU)
16/11/14 19:12:23.97 xSfNgSMsr.net
>>454
今なら、async, await 一択。

461:デフォルトの名無しさん (ワッチョイ 6f7d-teht)
16/11/14 19:32:29.47 42tRiMkK0.net
>>448
public static readonly Action ~ で Actionのenumっぽいクラス作ると速い

462:デフォルトの名無しさん (ドコグロ MM5f-wOPQ)
16/11/14 19:51:26.73 kXxSR+DwM.net
>>454
できるけどはたから見たらなんでそんな構成なの?
って感じ

463:デフォルトの名無しさん (ワッチョイ 5387-MJQ8)
16/11/14 20:15:42.84 Qgf5Rn5/0.net
>>455
ありがとうございます。
async使った作り方を検討してみます。
>>457
本当はプログレスバーを表示しているフォームでループ処理を実行できればいいのですが、
引数が大量になったりしてしまうので、メインフォームで処理を行いたいのです。
プログレスバーを別フォームにするのは、まあ、見栄えの問題ですね。

464:デフォルトの名無しさん (スップ Sd1f-wOPQ)
16/11/14 21:22:47.48 xjbQt/rmd.net
>>453
なぜ今どき4.5.1?

465:デフォルトの名無しさん (スププ Sd1f-PwKp)
16/11/14 21:33:34.62 gWk7pXe+d.net
>>459
しょうもないことにつっかかるね

466:デフォルトの名無しさん (ワッチョイ b3dc-dJcJ)
16/11/14 21:35:10.48 aL/Lu1lD0.net
.NET4.6はAPIレベルではほとんど変わってないしどうせインプレース更新で互換性あるから
わざわざターゲットバージョンを上げて動作環境を狭める意味はほぼ無いだろ

467:デフォルトの名無しさん (ワッチョイ 6f3c-wOPQ)
16/11/14 21:46:05.31 NhhLZ04e0.net
>>458
別にやりたいようにやればいいんだが
> 引数が大量になったりしてしまうので
って言う理由はちょっとどうかと思う...

468:デフォルトの名無しさん (ワッチョイ 57cb-wOPQ)
16/11/14 22:34:09.85 3a+GOjdi0.net
>>459
いやあああああああああああ!
2.0ででちゃううううううう!
2.0
のままリリースしちゃうのぉおおおおおお!
恥ずかしいいいいいいい!

469:デフォルトの名無しさん (ワッチョイ 033c-wOPQ)
16/11/14 23:53:59.37 OlP0vwcQ0.net
>>461
サポート切れのバージョンをなんでわざわざ使ってんのかって突っ込みだろカス

470:デフォルトの名無しさん (ワッチョイ 57cb-wOPQ)
16/11/15 00:09:10.73 vnzlS/G+0.net
なんでって
だってバージョン上げたら
テストし直しじゃんよ
そんな金ないだろっていうか
客が金出さねぇって言ってる以上動けないだろ
って人多いと思うぜ
共存できない.netのバージョンの製品が同梱されてるときとか最新で組んでドヤ顔しててもうまく行くんだろか?
それとも全部最新の.netでコンパイルし直すんだろか?

471:デフォルトの名無しさん (ワッチョイ 57cb-wOPQ)
16/11/15 00:11:49.01 vnzlS/G+0.net
すまん知識0だけど
職場の人間も似たような感じだったので
結局よくわからず下位バージョンに合わせて出しちゃったぜ

472:デフォルトの名無しさん (ブーイモ MM1f-9MLS)
16/11/15 01:15:16.80 R9/5GWGeM.net
バージョン非互換なんて滅多に起こらんよ
仮に起こっても数個のコンポーネントを少し弄る程度で解決できる
無論アプリの作りがマトモならって前提だけどな

473:デフォルトの名無しさん (ワッチョイ 033c-wOPQ)
16/11/15 01:16:44.44 MJdWHDsF0.net
>>465
再コンパ�


474:Cルする必要はないって、アホの>>461ですら言ってるじゃねーか



475:デフォルトの名無しさん (スップ Sd1f-wOPQ)
16/11/15 01:18:25.54 5Vfxrfmvd.net
>>467
C#6の中点くらいかな、まああれはUnicodeのせいだけど

476:デフォルトの名無しさん (スフッ Sd1f-wOPQ)
16/11/15 02:29:36.45 7Oesxf9ud.net
>>467
それを「起こってない」と検証する金の出処の話じゃないの?
よく分かるけど。
起こってないのと、めったに起こらないし多分大丈夫、は違う。
鍵は全部締まってるの確認したよ、と、鍵締めたかどうか定かじゃないけどこの辺は治安いいから大丈夫、は全然違う。

477:デフォルトの名無しさん (ワッチョイ a70d-Cgco)
16/11/15 02:53:21.41 NoTRkZnD0.net
WPFアプリケーションで言語を動的に切り替え可能な多言語化をしたいのですが、
調べてみるとResource.resxを使ったりxamlのResourceDictionaryを使ったりと色々あって困惑しています。
どのようなやり方が最適解なのでしょうか?

478:デフォルトの名無しさん (ワッチョイ 033c-wOPQ)
16/11/15 05:52:35.99 MJdWHDsF0.net
>>470
サポート切れのバージョンを使い続けることによるリスクより、4.5.1から4.5.2へのインプレース更新の方がはるかに安全だろ

479:デフォルトの名無しさん (ワッチョイ 033c-wOPQ)
16/11/15 05:53:50.91 MJdWHDsF0.net
>>471
デフォルトのロケールは?

480:デフォルトの名無しさん (ワッチョイ 377b-EKpQ)
16/11/15 08:10:51.58 7W+Eb75M0.net
 public  class FI
  {
      FileInfo _ff;
      string _dispdata;
     public FI(FileInfo fi)
      {
          FI(fi, false); //★error になる。なんとかならないのか?
      }
      public FI(FileInfo fi, bool mode)
      {
         _ff  = fi;
          if(mode)
             _dispdata =  string .Format ("{0,20}:{1,-35} {2,-100}", _ff.CreationTime, _ff.Name, _ff.DirectoryName );
          else
             _dispdata =  string .Format ("{0,20}:{1,-35}", _ff.CreationTime, _ff.Name);
      }
       public   FileInfo finfo{ //★FileInfoという名前にしたいのにできない。何とかならないか?
         get { return _ff; }
      }
  }
}
★をみて感想をください。

481:デフォルトの名無しさん (スフッ Sd1f-wOPQ)
16/11/15 08:37:11.25 7Oesxf9ud.net
>>472
サポート切れも何も。。
リスクとコストを天秤にかけるのは必要なことだろ。
はるかに、とか美味しい言葉で修飾せんと。
その程度の意識でみんなバージョン上げてんだなって思うな。

482:デフォルトの名無しさん (ワッチョイ 377b-EKpQ)
16/11/15 08:51:04.93 7W+Eb75M0.net
474解決しました。たんくす

483:デフォルトの名無しさん (スッップ Sd1f-wOPQ)
16/11/15 12:05:01.57 Sy8HLWAKd.net
>>475
お前サポート切れの.NET保証できんの?すげえな尊敬するわ

484:デフォルトの名無しさん (スフッ Sd1f-wOPQ)
16/11/15 12:14:17.64 7Oesxf9ud.net
>>477
保証をどう定義するかでしょ。
このシステムは動きます、の保証はするよ。

485:デフォルトの名無しさん (ワッチョイ 4bc0-WVKM)
16/11/15 12:24:10.02 pMl4CMoG0.net
MSは保証してないけど動くから保証しますで通用するからまた困るんだよな

486:デフォルトの名無しさん (アウアウオー Saff-IeI3)
16/11/15 12:32:14.65 CGrdF/ira.net
サポートっていうのは単に何か不具合が見つかった時にMS様がそれを修正する努力はします、
って程度の意味だからさあ...
ビジネストーク的には意味があると思うけど実質的な意味はあんまりないと思うけどね個人的には

487:デフォルトの名無しさん (スッップ Sd1f-wOPQ)
16/11/15 12:38:22.77 Sy8HLWAKd.net
>>478
脆弱性が見つかった時は?

488:デフォルトの名無しさん (スププ Sd1f-wOPQ)
16/11/15 12:55:55.09 Z3/Q/mWPd.net
客の社内環境が最新の.NET Framework許可してない場合も珍しくないしな

489:デフォルトの名無しさん (ササクッテロレ Sp2f-9MLS)
16/11/15 13:15:07.06 mY0gDrgyp.net
>>481
保守で定期的に金取ってるなら契約次第
そうでないなら「フレームワーク更新作業するなら発注してね」でいいだろ

490:デフォルトの名無しさん (スフッ Sd1f-wOPQ)
16/11/15 14:20:03.90 7Oesxf9ud.net
>>481
その脆弱性がシステムにとって致命的かどうか、
システム全体の検証工数と回避修正+波及箇所検証工数でどちらが勝つか(大体はラッパー作って使ってるから、その修正と波及箇所の動作検証で済む)
客が金どれだけ持ってるか、
の折り合いついた所だと思うよ。

491:デフォルトの名無しさん (ワッチョイ 6f7d-teht)
16/11/15 14:37:14.63 0U4qoaFD0.net
XP対応の4を使い続ける

492:デフォルトの名無しさん (スプッッ Sd1f-wOPQ)
16/11/15 15:43:51.26 ODQ0lCKgd.net
>>482
誰も最新の話なんてしてないよ

493:デフォルトの名無しさん (スプッッ Sd1f-wOPQ)
16/11/15 15:44:52.48 ODQ0lCKgd.net
>>484
つまり、脆弱性が見つかってから検証を始めるってことね

494:デフォルトの名無しさん (スフッ Sd1f-wOPQ)
16/11/15 17:05:58.01 7Oesxf9ud.net
>>487
いや、改修したり、OSやミドルやライブラリやフレームワークを更新したら、その検証をするけど、
脆弱性が発見された箇所自体はKBやらで出た内容からソース中の出現箇所出して、依存ツリー出して把握するくらいだよ、その時点では。

495:デフォルトの名無しさん (ワッチョイ 339a-zoBz)
16/11/15 17:08:40.62 /cCbWJxV0.net
既存のCで書かれたエミュレータをアンマネージドDLL化して、C#のGUIアプリから
呼び出して使えないかと思っています。
DLLの関数(1フレーム分進めるなど)を呼び出すことはできると思いますが、
その際にDLL内の特定の関数(ポートへの出力、画面更新など)�


496:ェ実行されたとき、 C#アプリ側でイベントとして捕捉する(C#側の関数が実行される)ようなことは できるんでしょうか。



497:デフォルトの名無しさん (ワッチョイ 8fe1-PwKp)
16/11/15 17:22:31.09 PhOBmSZe0.net
>>489
コールバックとかを使えば多分行ける
うまく行かないことがあればC++/CLIの出番かな

498:デフォルトの名無しさん (ワッチョイ 3319-7KSV)
16/11/15 17:24:00.58 weebeOlr0.net
そのDLLのソースを書き換えても良いのなら、
DLL側はコールバック登録関数を公開して必要なときに登録されてるコールバックを呼び出す
って形は取れるけど。

499:デフォルトの名無しさん (JP 0H6f-2n2A)
16/11/15 17:46:08.44 4QSE1fRAH.net
オンメモリで改ざん

500:デフォルトの名無しさん (ワッチョイ a70d-Cgco)
16/11/15 17:50:32.92 NoTRkZnD0.net
>>473
日本語です

501:デフォルトの名無しさん (ワッチョイ 4b49-VsRF)
16/11/15 22:28:52.68 YqUWOmsB0.net
>>471
Resource.resxを使うかResourceDictionaryを使うかは好み。
Resource.resxはGUIで設定できる。ロードする部分はシステムのロケール依存で良ければ自動。サテライトアセンブリが生成される
ResourceDictionaryはxamlを自分で記述する。ロードする部分も自分で作成。サテライトアセンブリが生成されない
個人的にはResource.resxの方が好きかな。
で、動的に切り替えって、起動時に切り替えるだけじゃ足りない?
任意のタイミングで既存のGUIもぱっと切り替えるのが必要だとすると、上記だけじゃ駄目で、
ラッパー的なクラスを作成して、それに対してバインディングするようにする必要がある。

502:デフォルトの名無しさん (ワッチョイ a70d-Cgco)
16/11/15 23:15:19.81 NoTRkZnD0.net
>>494
どちらとも動的に切り替えるところまでは作りました
どっちにするかまだ迷っています
どちらが世界的に主流でしょうか?

503:デフォルトの名無しさん (ワッチョイ b3dc-PwKp)
16/11/15 23:23:38.02 r0bdrrlQ0.net
>>495
WPF自体が主流には程遠いから好きにしろとしか

504:デフォルトの名無しさん (ワッチョイ 3703-M1Ou)
16/11/16 14:46:22.40 oJqix3AL0.net
ArrayListを使用した2次元配列を構築したいと考えております。
データは「実験項目」、「測定値」でファイルから読み出します。
一つの「実験項目」に対して任意数の「測定値」があり、任意数の「実験項目」があります。
ファイルを読み出さないとそれぞれの要素数がわからないため動的配列を使いたいと思っています。
「実験項目」、「測定値」共に1,000以内程度の予想です。
ArrayListは扱えていると思っているのですが2次元にする方法がよくわかりません。
ご教示いただけないでしょうか。よろしくお願いします。

505:デフォルトの名無しさん (アウアウオー Saff-IeI3)
16/11/16 15:20:15.99 Nmwy7smwa.net
>>497
ArrayListは10年以上前に役割を終えた旧式だからもう使っちゃだめ
代わりにList<T>でも使って
List<T>も2次元にはできないが、そもそも2次元にする必要がない
 - TestItem(実験項目)にMeasured(測定値)のリストList<Measured>を持たせて、
 - TestItemのリストList<TestItem>を作る
これでOKでしょ
知らんけど

506:デフォルトの名無しさん (ササクッテロレ Sp2f-9MLS)
16/11/16 15:31:15.35 E4kD/LBwp.net
>>497
TestItem(実験項目)にMeasured(測定値)のリストを持たせたくない場合はDictionary<TestItem,List<Measured>>とか

507:デフォルトの名無しさん (ワッチョイ 3703-M1Ou)
16/11/16 16:11:42.19 oJqix3AL0.net
>>498-499
ご教示ありがとうございます。
やはりArrayListは非推奨なのですね。
List、Dictionaryを勉強してみます。

508:デフォルトの名無しさん (オッペケ Sr2f-WFrU)
16/11/16 20:05:48.43 qGX/+c5Jr.net
何故に、そんなレガシーな亡霊がこの世に??

509:デフォルトの名無しさん (ブーイモ MMef-9MLS)
16/11/16 20:19:51.08 gtmrvLDzM.net
リファクタリングは悪
回帰テスト嫌だからコピペして新規追加しろ
日本はそういう文化だから理解しがたいレガシーコードで溢れかえる

510:デフォルトの名無しさん (ワッチョイ 4bc0-WVKM)
16/11/16 20:38:27.57 MMds4sI/0.net
>>501
キーワードでググったら上位にくるんじゃね
あの手の骨董品コードが残り続けるのは本当害悪でしか無いわ

511:デフォルトの名無しさん (ワッチョイ d3d6-teht)
16/11/16 20:49:59.04 Ws6HNRv60.net
文句はいつまでも互換性を持たせているマイクロソフトに言え

512:デフォルトの名無しさん (ワッチョイ 273c-WVKM)
16/11/16 20:57:40.76 MeLHc+gy0.net
初心者です。
先日測定機のプログラムを作りました。
データ取得の処理中に進捗状況を表示させたくなりました。
フリーズしてるのと勘違いされないようにしたいわけです。
少し調べてみたら、どうやらマルチスレッドなるもの
使うようなんですが、これについて優しく書かれている
サイトなどあればお教えいただければうれしいです。
よろしくおねがいします。

513:デフォルトの名無しさん (ワッチョイ b3dc-PwKp)
16/11/16 21:08:39.93 1s2sSz8X0.net
>>505
自分でThreadやTaskを明示的に作って使う必要があるケースは少ない
再現困難なバグを引き起こしやすいから、マルチスレッドを明示的に使うのは非同期プログラミングに慣れないうちはなるべく避けた方がいい
シリアルか独自のSDKがあるのか知らないけど、何かの外部装置からデータ取ってるなら非同期で取るAPIは用意されてるだろ?
もし同期APIしか用意されてない糞SDKなら仕方ないが、そうでない限りは用意された非同期APIを使うことを優先したらいい
データをどうやって取ってるのかをお前が晒せばもっと具体的なアドバイスもできる

514:デフォルトの名無しさん (ワッチョイ 37dc-WVKM)
16/11/16 21:10:52.22 QT5715if0.net
>>505
時間のかかる処理をバックグラウンドで実行するには?[2.0のみ、C#、VB] - @IT
URLリンク(www.atmarkit.co.jp)
.NET開発における非同期処理の基礎と歴史 - @IT
URLリンク(www.atmarkit.co.jp)

515:デフォルトの名無しさん (ワッチョイ cb94-5NgJ)
16/11/16 22:04:51.69 PcfUB0DB0.net
上のページはBackgroundWorkerの話で古すぎるし、
下のは歴史から説きおこしてるから最初から読むと長すぎる
async awaitについて書いてあるここ↓くらいから読むのがいいかと
URLリンク(www.atmarkit.co.jp)
非同期API使うにしても、async await がわかってないと辛いだろうし

516:デフォルトの名無しさん (アウアウオー Saff-IeI3)
16/11/16 22:20:31.36 5Ihw572qa.net
そもそも非同期とは何かを理解せずにいきなりそんなの読んで理解できると思えませんがw

517:デフォルトの名無しさん (ワッチョイ b3dc-PwKp)
16/11/16 23:41:29.23 1s2sSz8X0.net
初心者ならまずはEAPから入るのがいいんじゃないか
awaitみたいな黒魔獣と違って仕組みが単純明快だし、使う側からすれば完全にシングルスレッドで非同期ができる
排他処理だのデッドロックだのいきなりマルチスレッド特有の問題を抱え込むより、
まずは純粋に非同期プログラミングのところだけを抽出して順番に理解していけばいいと思うよ

518:デフォルトの名無しさん (ワッチョイ 2376-NcFo)
16/11/16 23:57:52.40 cEthX6dM0.net
もっと単純に↓のworkメソッドの中で10%ごとぐらいにラベル表示とかするだけの話じゃないかな
URLリンク(www.atmarkit.co.jp)
まずは目的達成を

519:デフォルトの名無しさん (ワッチョイ 9c7b-XpIe)
16/11/17 00:43:08.63 KQ/jS2NF0.net
ベジエ曲線の質問なんですが
P1(10,10) P2(10,40) P3(40,10) P4(40,40)
このような4点のベジエがあったとして、この放物線のP4の延長線を書きたい場合、
どのようにすればいいのでしょうか?

520:デフォルトの名無しさん (ワッチョイ 3f49-YqEk)
16/11/17 00:56:22.10 ViKAooID0.net
Invoke()も今は推奨されないんじゃないかなぁ

521:デフォルトの名無しさん (アウアウオー Sa36-MfQN)
16/11/17 01:43:36.99 ypT0aoV/a.net
>>512
よく知らんけど、終了点の延長戦の方向は制御点から終了点向かう
ベクトルに等しいはずだから、後は簡単な高校数学じゃないの?

522:デフォルトの名無しさん (ワッチョイ 3faf-N7ik)
16/11/17 02:39:29.89 Dxu6gLWd0.net
スレッド周りは古い情報が残りまくりでどうしたらいいのか難しすぎ
非同期処理とかで検索すると普通にasync awaitが見つかるけどプログレスバーとかで検索すると未だにBackgroundWorkerを使うとか書いてるから困る

523:デフォルトの名無しさん (ワッチョイ 9c7b-XpIe)
16/11/17 03:14:03.30 KQ/jS2NF0.net
>>514
自分の説明が下手でも仕分けないのですが、
要するに2次曲線をベジエ曲線を使って描画し、
曲線の終点の延長を追記で描画したいということなのですが

524:デフォルトの名無しさん (ワッチョイ b5dc-2XGH)
16/11/17 07:07:26.21 iGNJFpBr0.net
>>516
端点とそこでの一次の傾きさえ一致してれば滑らかに繋がってるように見える。で、それは514で答えが出てる。
二次の傾きには任意性があって、どう決めたら最も美しいかはあくまでお前の感性の問題だ。
その感性を数学的に定義するのはお前の仕事。それができたら答えは出たようなもんだろ。

525:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/17 07:33:08.85 B+vLCAoF0.net
>516
俺もそれ興味あるな。でもペジェー曲線を描く関数は簡単にわかるだろ。
それをプログラム的にどう実現するかが知りたいってことだよね。
バーンスタイン基底関数のブレンディング関数ではN点の式になってるが、実際には
n点でかいたベジェにn+1点を書く場合全部書き直すのは不経済だよな。
bz = new Bezier(p1,p2);
bz = bz.add(p3);
bz = bz.add(p4);
bz = bz.add(p5);
bz = bz.add(p6);
foreach pp in bz{
bz.pset(whiteColor, pp.xl,pp.yl);//前のポイントを消す
bz.pset(RedColor, pp.x,pp.y);//今回を書く
}
こんな感じじゃないか?
グラフィックはやったことないから知らんけど。わからんな前のラインを消すのが
難しいな。

526:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/17 07:37:55.62 B+vLCAoF0.net
まあpsetよりもplineだろうな。普通のCADはベクトルで管理していて、書き直しは
やはり、前のラインを記憶していて、背景色で上書きして消すのだと思うよ。

527:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/17 07:46:11.48 B+vLCAoF0.net
bz = new Bezier(p1,p2);
bz = bz.add(p3);
bz = bz.add(p4);
bz = bz.add(p5);
bz = bz.add(p6);
bz.write(red, Style1);
これでいいや、制御点はaddするときにわかってるからね。
書くときにベクトルは全部記憶してるからwriteするときに消して書けばいい。
しかし、背景色が違うところをまたがるときはどうすんの? って問題があるな。

528:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/17 08:20:53.64 B+vLCAoF0.net
>516
 ツールはなに? DirectXとか? どういう環境でかこうとしているんかで
かなり違うと思う。
DirectXだったら関数についてるんじゃない? 環境が正確にわかればサンプルを
書いてあげるよ。もしわからなければ、、、

529:デフォルトの名無しさん (ワッチョイ 9fcf-RAPI)
16/11/17 08:43:40.73 UCWuOxD40.net
c#でluaを使うためのパッケージは誰がよろしいでしょうか?

530:デフォルトの名無しさん (スププ Sdb8-RUi6)
16/11/17 09:34:37.15 Nr9kHWsUd.net
背景の�


531:`画はXor Notの色じゃだめなぬ?



532:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/17 11:04:15.91 B+vLCAoF0.net
>背景の描画はXor Notの色じゃだめなぬ?
だめ。
psetなら隣の色を拾って背景代わりにするとできるが、、、lineだと背景の色を
覚えておかないとできないね。特に切り替わりのあるところ毎に背景を記憶して
覚えておかないとできないね。
BackColorXorline()なんて関数があって背景は別レイヤで記憶していてくれれば
できるけど。そんなのがあるんだろうな。きっと。
グラフィックコントローラの機能として何枚かのレイヤがあるんだろうね。でないと
移動するごとに大量のベクトルの書き直しとか間抜けすぎるものね。
だからレイヤーを指定して書き込みできるんじゃなかろうか?

533:デフォルトの名無しさん (オッペケ Sra9-2XGH)
16/11/17 13:02:06.96 lS45HIXqr.net
LINQって使うとハマりそうなところって非同期だから返ってくる結果がよくからん順番になるところと可読性が悪いところ?
メリットは少なめなメモリで動くってだけかな?
Rxとかは便利そうって思えるけど

534:デフォルトの名無しさん (アウアウカー Sa41-2XGH)
16/11/17 13:11:56.85 3nQkkv32a.net
LINQって非同期実行じゃなくて遅延評価じゃないの?
当然順番は変わらないし
更に言うとLINQの最大の利点て可読性の向上だと思ってたんだが…

535:デフォルトの名無しさん (ワッチョイ 9f94-Ctj4)
16/11/17 13:34:27.15 JueYqnTL0.net
返ってくる順番が不確定なのはPLINQだね
(AsOrderd()を使えば順番を維持させることもできるけど)
LINQで可読性が下がるというのは、もしかして、ラムダ式に慣れてないだけでは…

536:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/17 13:45:17.61 B+vLCAoF0.net
>526
遅延って意味がおかしいんじゃない。クエリを書いただけでは実行しないってこと
を遅延っていってるんだろうか? そんなの当たり前のように思えるが、、、

537:デフォルトの名無しさん (ワッチョイ 40d9-k96Z)
16/11/17 14:11:29.10 DsCEIrdz0.net
「C#プログラム効率的な書き方」でも読めば?
この本は嫌というほど詳細にLINQが解説してあるから

538:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/17 14:40:02.46 B+vLCAoF0.net
>529
 そうだね。それ読んでみる。

539:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/17 14:40:19.41 B+vLCAoF0.net
var dtm = new DateTime();
var user = new MembershipUser("?????", "1", "obj", "3","4", "5",
true, true, dtm, dtm, dtm, dtm, dtm);
MembershipUserをテストしようとしてるんだが"?????"は何をいれたらいいの?
無効なプロバイダーでエラーになる。

540:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/17 14:41:28.03 B+vLCAoF0.net
正確には
 追加情報:指定されたメンバーシップ プロバイダー名が無効です。
こんなメッセージ

541:デフォルトの名無しさん (ワッチョイ 774f-oPeX)
16/11/17 14:41:41.50 sJEahq+u0.net
また川俣本か・・・

542:デフォルトの名無しさん (JP 0H0d-2BAc)
16/11/17 14:41:59.02 9sPAmX71H.net
実行順序は直感と違うと思うな
副作用がなければ気にならんけど

543:デフォルトの名無しさん (ワッチョイ 40d9-k96Z)
16/11/17 14:49:43.65 DsCEIrdz0.net
>>533
まあね
この人はちょっとパラノイアじみるほどマニアックなところがあるけど、
全部読破すれば間違いなくLINQ to Objectsの力が付くと思う
「こんな使い方普通しないだろw」みたいなのも書いてある

544:デフォルトの名無しさん (ワッチョイ 9fcf-RAPI)
16/11/17 15:17:23.72 UCWuOxD40.net
>>522です
開発環境はvisualstdioです
nugetで公開されているneolua moonsharp等のluaの拡張パッケージになにか違いがあるのでしょうか?

545:497 (ワッチョイ 7c03-EDxK)
16/11/17 17:31:32.94 K3Fbeu8d0.net
>>497 です。
せっかくレスいただいたのですが↓が理解できませんでした。申し訳ありません。
> - TestItem(実験項目)にMeasured(測定値)のリストList<Measured>を持たせて、
> - TestItemのリストList<TestItem>を作る
List<double> lsMeasTest = new List<double>();
でListを生成して
lsMeasTest.Add(dblData);
で測定値を格納していくのはわかります。
実験項目が増えたときにListを生成するのですが
List<double> 変数名 = new List<double>();
を必要数分実行する方法がわからないのです。

546:デフォルトの名無しさん (ワッチョイ 9f94-Ctj4)
16/11/17 17:59:43.84 JueYqnTL0.net
項目リストとしてList<List<double>>(List<double>を入れるList)を作っておく
測定値を入れたList<double>を作ったら、項目リストにAddしていく
ではだめなの

547:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/17 18:09:46.70 B+vLCAoF0.net
>573 
 これでどう?
var dict = new Dictionary<string, double>();
dict.Add("test1", 32.5);
dict.Add("test2", 3002.5);
dict.Add("test3", 199932.5);

548:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/17 18:15:42.30 B+vLCAoF0.net
var dict0 = new Dictionary<string, double>();
dict0.Add("test1", 32.5);
dict0.Add("test2", 3002.5);
dict0.Add("test3", 199932.5);
var dict1 = new Dictionary<string, double>();
dict1.Add("btest1", 32.5);
dict1.Add("btest2", 3002.5);
dict1.Add("btest3", 199932.5);
var Jkken = new Dictionary<string, Dictionary<string,double >>();
Jkken.Add("実験項目1", dict0);
Jkken.Add("実験項目2", dict1);
こうかな?

549:デフォルトの名無しさん (アウアウオー Sa36-MfQN)
16/11/17 18:25:00.31 hkg3+6Yaa.net
>>537
大サービスでサンプル書いてみた
URLリンク(ideone.com)

550:デフォルトの名無しさん (ワッチョイ 21bd-2Ppy)
16/11/17 18:51:38.13 mx0eMjxm0.net
public private protected やstatic やプロパティって
どうしても必要なの?
実際に不正アクセスが起たりするもんなの?
何のために、何を防御しているのか理解できない。

551:デフォルトの名無しさん (ワッチョイ b179-XpIe)
16/11/17 18:53:40.36 VcCKxuk30.net
不正アクセスの為にアクセス制限している訳じゃないし、不正アクセスの防止は出来ない
staticは別

552:デフォルトの名無しさん (ワッチョイ 9cba-XpIe)
16/11/17 19:06:49.94 uPELr+Dd0.net
遂にGoogleさんも参加するって
URLリンク(mspoweruser.com)

553:デフォルトの名無しさん (JP 0H0d-2BAc)
16/11/17 19:49:50.72 9sPAmX71H.net
クラウド方面か

554:デフォルトの名無しさん (ワッチョイ b5dc-2XGH)
16/11/17 20:22:33.07 iGNJFpBr0.net
>>542
余計な情報を外に漏らすと、それを今後もそうだと期待して依存する奴が出てくる
で、お前が後で変えたら何で勝手に変えたんやワシのコードが動かへんようになったわシバクぞボケと言われることになる
日常生活でも「言ってしまったから今更変えづらい」ってあるだろ?
確かに約束できること以外には外に余計な情報を漏らさないようにすることで、
中身を弄っても何勝手に変えとんねんと言われない変更に強いプログラ厶になるんだよ

555:デフォルトの名無しさん (オッペケ Sra9-2XGH)
16/11/17 21:12:47.62 lS45HIXqr.net
>>529
>C#が提供するLINQ to Objectsは、多大な効能と価値を併せ持つ重要な考え方ですが、Cのポインタ同様に抽象的でわかりりにくいものです。
ってその本の解説に書いてるよ
やっぱわかりにくいんだね

556:デフォルトの名無しさん (ワッチョイ b5dc-Th+s)
16/11/17 23:20:42.92 iGNJFpBr0.net
それはSQLを知らないだけかと
SQLは伝統的なドカタ道具の中ではズバ抜けてセンスのいい技術だから
食わず嫌いしないで一度ちゃんと学んだ方がいい

557:デフォルトの名無しさん (ワッチョイ 9c42-XpIe)
16/11/18 00:06:56.41 BJrPV4Dl0.net
なぜLambdaがあるのにLinqなんて異物をぶち込んだのか
いまだにわからん
全部Lambdaでいいやん!

558:デフォルトの名無しさん (ワッチョイ b97b-AAsj)
16/11/18 00:09:34.50 ifsRvlL10.net
int i = 0;
int j = 0;
System.Console.WriteLine(i++);   //0
System.Console.WriteLine(j+1);   //1
この2つはなぜ結果が異なってしまうんでしょうか?

559:デフォルトの名無しさん (オッペケ Sra9-2XGH)
16/11/18 00:16:31.04 0j66y/nmr.net
>>548
SQLはMySQLを5年ほどやっとります

560:デフォルトの名無しさん (ワッチョイ b5dc-Th+s)
16/11/18 00:30:20.75 gT3Hev+M0.net
>>550
i++はインクリメントする前の値を返すから

561:デフォルトの名無しさん (ワッチョイ 40d9-k96Z)
16/11/18 00:46:38.58 iR5uoSVg0.net
>>547
最初にCのポインタをやった時を思い出すといい
初めは全然分からなかったろ?でも今は楽に分かるだろ?
要は慣れ

562:デフォルトの名無しさん (ワッチョイ b5dc-Th+s)
16/11/18 00:55:03.81 gT3Hev+M0.net
>>549
JoinとかGroupByとかSelectManyとかクエリ式無しだともはや暗号だろ

563:デフォルトの名無しさん (ワッチョイ 9fd4-XpIe)
16/11/18 01:08:31.02 Bd8bsuVC0.net
クエリ式なんか使ったことない

564:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/18 02:34:45.49 ayjJho0i0.net
>554
それ以外ならラムダ式でできるんか? 例えば? Where、selectを
ラムダ式で書いてみて。
ラムダ式の意味がわからんけど、まあ適当に「こんなんか」くらいで使ってる。

565:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/18 02:47:08.73 ayjJho0i0.net
LINQは便利やけど、OrderByとか気持ち悪くて使う気しないな。
単純にSortするよな。
多用するとパーフォマンスが無茶苦茶落ちると思う。

566:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/18 02:54:33.31 ayjJho0i0.net
public IEnumerable<string> Records
{
get
{
return doc.Element("root").Element("collections").Elements("own").Select(c => c.Descendants("ID").First().Value);
}
}

LINQだめじゃん。 こっちのほうが簡単。
public IEnumerable<string> Records
{
get
{
return doc.XPathSelectElements("//root/collections/own/ID");
}
} 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


567:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/18 02:57:24.22 ayjJho0i0.net
XpathとLINQを組み合わせてつかえんのか?

568:デフォルトの名無しさん (ワッチョイ 3a13-RUi6)
16/11/18 03:07:45.45 qODTBmiq0.net
ごちゃごちゃうるせーよ

569:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/18 03:13:27.93 ayjJho0i0.net
var elem = XElement.Parse(something);
var maz = elem.Element("vehicle").Elements("car").Where(c => ((string)c.Attribute("maker")) == "mazda"));
LINQはXMLみたいな階層構造を持ってるとダメじゃない?
これじゃ最初のItemしかサーチできないよ。

570:デフォルトの名無しさん (ブーイモ MM0d-N7ik)
16/11/18 08:03:56.85 /xmrja5bM.net
Linqがボトルネックになったことって意外とないよな
大量データってわかってれば最初から速度最適化考えるし
CLRはメモリ節約の効果がでかいんだね

571:デフォルトの名無しさん (ワッチョイ b5dc-2XGH)
16/11/18 08:16:20.86 gT3Hev+M0.net
それはLINQ使おうとする奴はだいたい一定のスキルがあるから無茶しないだけ
LINQを使おうと思えば使えるシーンで大量データに対して O(N^2)とかの馬鹿みたいなループをやらかす奴はやっぱりいるわけだけど、
そういう奴は当然LINQなんか使わない(使えない)

572:デフォルトの名無しさん (ワッチョイ ad5b-N7ik)
16/11/18 08:21:39.98 O/884XX90.net
トグルスイッチのようなインターフェースってWindowsformのコントロールにあるっけ?
ない場合どうやって作れる?

573:デフォルトの名無しさん (ドコグロ MMff-RUi6)
16/11/18 08:26:54.53 MmcaWbSXM.net
>>564
チェックボックスかラジオボタンで代用

574:デフォルトの名無しさん (ワッチョイ 7c03-EDxK)
16/11/18 08:35:21.61 nNUszv7+0.net
>>538-541
ありがとうございます!!
B+vLCAoF0さんのDictionaryを使う方法、
サンプルコードを準備していただいたhkg3+6Yaaさんの方法
どちらも勉強させていただきます。
本当に感謝です、ありがとうございました!

575:デフォルトの名無しさん (オッペケ Sra9-hkLf)
16/11/18 09:35:07.23 +KSaSaaRr.net
LINQ-To-XMLの立場は。

576:デフォルトの名無しさん (ワッチョイ b974-qiik)
16/11/18 09:39:13.30 MjC3oXMe0.net
知らない子ですねえ

577:デフォルトの名無しさん (ワッチョイ 1519-/ySS)
16/11/18 10:51:06.70 AfWqy2AK0.net
>>564
2値のTrackBarとか

578:デフォルトの名無しさん (ワッチョイ 88d4-XpIe)
16/11/18 12:42:20.87 qAuADTbv0.net
C++弄っていた人から見たら、C#もVBも大差ないよなぁ
ちょっと方言が違うだけ、みたいな
値渡しなのか参照渡しなのか、パッと見で分からないし
使った変数の後始末はFramework任せとか

579:デフォルトの名無しさん (ワッチョイ 1519-/ySS)
16/11/18 14:11:40.18 AfWqy2AK0.net
値渡しなのか参照渡しなのか分からないのはむしろC++とVBだと思うのだけど
呼び出される側だけ特別な記述&/ByRefして呼び出す側は変わらないって言う
C#は両者共に特別な記述ref/outが必要で

580:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/18 14:27:23.42 ayjJho0i0.net
C++とか触る気しないな。いらんことを書く量が多すぎて気が狂いそう。
 その点F#をすこし触ってみたが、これは楽だな。C#からすると違和感があるが型推論が
しっかりしているので慣れると楽だと思う。
そもそもループを書くためのforとかがない。もしLINQを知らなかったら、ループなしで
どうやってプログラムを書くのか理解に苦しんだと思う。

581:537 (ワッチョイ 7c03-EDxK)
16/11/18 15:03:02.85 nNUszv7+0.net
>>537 です。
>>541 でサービスしていただきましたが現状とても難しいです。
=>ってなんでしょうか。ビルドできないです。。。
でも、もう少しがんばります。

582:デフォルトの名無しさん (アウアウオー Sa36-MfQN)
16/11/18 18:15:45.39 fuS99ZTSa.net
>>573
使ってるC#のバージョンは?
それはC#6で導入された読み出し専用プロパティの省略記法
public List<Measured> MeasuredList => _MeasuredList;

public List<Measured> MeasuredList
{
  get {return _MeasuredList;}
}
と同じ。
URLリンク(www.atmarkit.co.jp)

583:デフォルトの名無しさん (ワッチョイ ad5b-N7ik)
16/11/18 20:21:01.12 O/884XX90.net
>>565
そっかー残念
ありがとう

584:デフォルトの名無しさん (ワッチョイ 9fd4-XpIe)
16/11/18 20:30:49.38 P4KNWvky0.net
カスタムコントロールで適当なコントロールから継承して作ればいいだけ
簡単に作れるよ

585:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/18 20:45:44.35 ayjJho0i0.net
適当では作れんだろ。w
どのコントロールを継承してどのように作るのか。

586:デフォルトの名無しさん (ワッチョイ 9fcf-RAPI)
16/11/18 20:53:06.96 cT5mFVkF0.net
keydownイベントをプログラムから発生させる方法はありますか?

587:デフォルトの名無しさん (アウアウオー Sa36-MfQN)
16/11/18 20:54:03.59 fuS99ZTSa.net
まあ、Checkboxを継承するのが普通だろうねえ。
トグルスイッチっていうのはビジュアルをAndroidのUIにあるような奴にしたいってことかな。
ボタンの凹凸を切り替えるのでよければ何もしなくても標準でできるけど

588:デフォルトの名無しさん (ワッチョイ 3f49-YqEk)
16/11/18 21:37:55.69 8JkTMqoR0.net
見た目を重視しないなら、ユーザーコントロールでトグルボタン2個乗っけるのが手っ取り早い。

589:デフォルトの名無しさん (ワッチョイ 9fd4-XpIe)
16/11/18 21:51:48.89 P4KNWvky0.net
Checkbox継承してOnPaintで描けばいいだけだから、やってみるば簡単
Checkedで描画する画像切替えるとかで簡単に実現できる
サイズは画像のサイズに合わせてMaximumSizeとMinimumSizeを固定しちゃうとかかな

590:デフォルトの名無しさん (ワッチョイ 9fcf-RAPI)
16/11/18 22:02:56.90 cT5mFVkF0.net
>>578です
実装できました

591:デフォルトの名無しさん (ワッチョイ 3f49-+6wY)
16/11/18 22:24:07.69 8JkTMqoR0.net
画像貼り付けて作ると高DPI対応は出来なくなるな

592:デフォルトの名無しさん (ワッチョイ 34ce-ke/V)
16/11/18 22:47:36.55 YsofO7c60.net
画像を高画質で持っておいて伸縮サセルノデス

593:デフォルトの名無しさん (アウアウオー Sa36-MfQN)
16/11/18 22:49:04.17 fuS99ZTSa.net
EMFを使えば出来るんじゃない?
十分でかいビットマップを使ってもいいと思うけど

594:デフォルトの名無しさん (ワッチョイ 34ce-ke/V)
16/11/18 22:51:45.64 YsofO7c60.net
ところでWindows10によくある横にスライドするスイッチ(● )←みたいなやつ
あれの状態をプログラムから参照したいのですが、
ウィンドウハンドル的なものは取れますか?

595:デフォルトの名無しさん (ワッチョイ 5e23-tQqt)
16/11/18 23:09:11.73 RGR0MUcx0.net
>>585
つか、単純な図形だからGDI+で書いたほうが早いし、アニメーションさせたくなったら
画像はお払い箱です

596:デフォルトの名無しさん (ワッチョイ 3f49-YqEk)
16/11/18 23:12:28.84 8JkTMqoR0.net
EMFは存在をすっかり忘れていたな
C#でも扱えるんだね
デカいビットマップの縮小は、小さいパーツだとあまり綺麗に表示されないよ
マルチアイコンみたいに複数の解像度の画像を用意すればましだけど

597:デフォルトの名無しさん (ワッチョイ 3a13-8L7G)
16/11/18 23:29:21.49 +XmNVsSt0.net
自作のフォームアプリケーションを起動させて引数も渡したいのですがどうすればいいですか?

598:デフォルトの名無しさん (ワッチョイ 3a13-8L7G)
16/11/18 23:40:26.29 +XmNVsSt0.net
できました

599:デフォルトの名無しさん (ワッチョイ 5e7d-XpIe)
16/11/18 23:55:36.52 X3QgbGYl0.net
画像の拡大縮小はモード選べるよ。十分綺麗にできるでしょ

600:デフォルトの名無しさん (ワッチョイ 56e1-RUi6)
16/11/19 00:45:16.52 1yryIr4y0.net
>>559
普通に出来るだろ

601:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/19 02:06:11.41 E+HZm7+A0.net
>Checkbox継承してOnPaintで描けばいいだけだから、やってみるば簡単
>Checkedで描画する画像切替えるとかで簡単に実現できる
>サイズは画像のサイズに合わせてMaximumSizeとMinimumSizeを固定しちゃうとかかな
こんなことやったことないわ。どういう意味だ?
なんでChecboxを継承する必要があるんだ?
つかトグルSWだよな。
ちょっとやってみるんで指導よろしく。
OnPaintで描くってどういう意味だ?
情報が欠落しすぎ。
まずプロジェクトに追加するのは何? 
ユーザーコントロール? クラス? コンポーネント?
どれだ?

602:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/19 02:08:07.35 E+HZm7+A0.net
checkboxを継承するってのだから、どう考えてもクラスだよな。じゃあまあ
追加クラス。

603:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/19 02:31:43.92 E+HZm7+A0.net
public class clsToggleButton : CheckBox
{
Form _pform;
public clsToggleButton(Form frm)
{
_pform = frm;
}
public void OnPaint (PaintEventArgs pevent)
{
//ここにトグルボタンを描く
if( this.Checked == false ){
//どこに描くんだろ?
}else{
}
}
}


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch