■ このスレッドは過去ログ倉庫に格納されています
ふらっと C#,C♯,C#(初心者用) Part148
- 1 :デフォルトの名無しさん :2020/05/27(水) 20:28:41.27 ID:Pggemlyq0.net
- !extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part147
http://mevius.5ch.net/test/read.cgi/tech/1582100741/
■関連スレ
C#, C♯, C#相談室 Part94
http://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 2 :デフォルトの名無しさん :2020/05/27(水) 21:03:44.86 ID:Pggemlyq0.net
- 978 名前:デフォルトの名無しさん (ワッチョイ 1aad-cFKA)[sage] 投稿日:2020/05/26(火) 23:34:30.32 ID:xP2EobkM0 [2/2]
https://www.sejuku.net/blog/47220#Sum
979 名前:デフォルトの名無しさん (ワッチョイ da89-crVl)[sage] 投稿日:2020/05/26(火) 23:55:57.69 ID:pUNOqgdh0 [2/2]
リンク先の例でいうと、ClassName(やその他の項目もあればそれ)も表示させたい場合はどのようにすればいいですか?
980 名前:デフォルトの名無しさん (ワッチョイ 1389-moxv)[sage] 投稿日:2020/05/27(水) 00:07:17.22 ID:Pggemlyq0
>>979 自己レスですが、以下の記述でいけました
var query = result
.GroupBy(x => new { x.Name, x.ClassName })
.Select(x => new Test() { Name = x.Key.Name, Points = x.Sum(y => y.Points), ClassName = x.Key.ClassName });
foreach (var group in query)
{Console.WriteLine($"{group.Name}の合計点数:{group.Points}点;ClassName{group.ClassName}");}
981 名前:デフォルトの名無しさん (スップ Sdf3-Tvg7)[sage] 投稿日:2020/05/27(水) 00:15:29.78 ID:DUgyxf22d
>>980
キーが1つならGroupbyでわざわざ匿名クラス使う必要ないんじゃね?
989 名前:デフォルトの名無しさん (ワッチョイ 9961-moxv)[sage] 投稿日:2020/05/27(水) 09:37:11.33 ID:sy4nr1lC0 [2/2]
>>981
ClassName引き出すのはどうするんだろ?
990 名前:デフォルトの名無しさん (アウアウウー Sac5-5vhd)[sage] 投稿日:2020/05/27(水) 09:58:43.31 ID:liCJZGAla
必要ない
x => x.Name でいい
--------------
.GroupBy(x => x.Name)
.Select(x => new Test() { Name = x.Key.Name, Points = x.Sum(y => y.Points), ClassName = x.Key.ClassName });
にすると、次のようなエラーがでますが、どうしたらよろしいでしょうか。
CS1061 'string' に 'ClassName' の定義が含まれておらず、型 'string' の最初の引数を受け付けるアクセス可能な拡張メソッド 'ClassName' が見つかりませんでした。
- 3 :デフォルトの名無しさん :2020/05/27(水) 21:12:48.85 ID:wHIUQvvs0.net
- >>1
スレ立てありがとう
- 4 :デフォルトの名無しさん (ワッチョイ 9961-moxv):2020/05/27(水) 21:21:00 ID:k3bnO/0Z0.net
- >>2
正規化されてないからめんどくさいな。
二重ループみたいですげーダサいけど
var query = result
.GroupBy(x => x.Name)
.Select(x => new Test() {
Name = x.Key,
Points = x.Sum(y => y.Points),
ClassName = result.Find(z => z.Name == x.Key).ClassName });
- 5 :デフォルトの名無しさん (ワッチョイ 936a-moxv):2020/05/27(水) 21:28:41 ID:r6ZOyYGH0.net
- くこか
- 6 :デフォルトの名無しさん :2020/05/28(木) 00:34:34.48 ID:MEC8WK3T0.net
- Ruby では、すべてのクラスの祖先の、Object クラスに、
そのインスタンスのクラス名を返す、class というインスタンスメソッドがあるので、
すべてのクラスで使える
C# には、そういうメソッドが無いの?
p "ruby".class #=> String
p 100.class #=> Integer
- 7 :デフォルトの名無しさん :2020/05/28(木) 00:53:29.66 ID:ImnqiwTFa.net
- 宝石箱や〜まで読んだ
- 8 :デフォルトの名無しさん (ワッチョイ 5bde-JaJ9):2020/05/28(木) 01:26:59 ID:EQqK90dj0.net
- >>6
c# クラス名 取得
でググれ?
- 9 :デフォルトの名無しさん (ワッチョイ 9961-moxv):2020/05/28(木) 04:48:21 ID:zXvALu7d0.net
- >>4
ClassName = x.First().ClassName
でおk
- 10 :デフォルトの名無しさん :2020/05/28(木) 14:15:46.01 ID:fRXC37pG0.net
- タプルやジェネリッククラスに対して、型を代入済みの型を作ることってできないんですか?
(string, string)型とか、List<string>型とか、わざわざクラスを作るまでもなさそうなデータ型って簡単に定義できないのでしょうか
- 11 :デフォルトの名無しさん :2020/05/28(木) 14:22:31.86 ID:aCVt7Y570.net
- >>10
usingエイリアスで解決できる内容?
- 12 :デフォルトの名無しさん :2020/05/28(木) 14:30:21.34 ID:fRXC37pG0.net
- >>11
ありがとう!こんなの全然知らなかったわ
- 13 :デフォルトの名無しさん :2020/05/28(木) 15:52:57.83 ID:aCVt7Y570.net
- >>12
紹介しといてなんだけど個人的にはあんま使わない
そのファイル内だけでしか有効にできないし型なんてIDEの補間でさっと書けるんで
- 14 :デフォルトの名無しさん (ワッチョイ 936a-nShV):2020/05/28(木) 15:59:16 ID:iH+95mUV0.net
- 1年後に自分が書いたコード見たら「このコードを書いたヤツを出せ!」と海原雄山になるのがオチよなw
- 15 :デフォルトの名無しさん (ワッチョイ 012d-GttG):2020/05/28(木) 17:08:54 ID:fRXC37pG0.net
- >>13
ファイル内限定だったのか・・・・ちょっと1ファイルで試してみて使えるものだから、プロジェクト内どこでも使えるんだと錯覚してたぜ・・・・
- 16 :デフォルトの名無しさん (ワッチョイ 2b7b-htvG):2020/05/28(木) 17:14:07 ID:jo8mM5WX0.net
- >>15
最初からusingディレクティブはみんなそうなってるので
- 17 :デフォルトの名無しさん (ワッチョイ dbc7-05E3):2020/05/29(金) 19:22:05 ID:Cxyf4DSR0.net
- メソッドは変数に入れらないのはなぜですか
- 18 :デフォルトの名無しさん (ワッチョイ d919-kLWK):2020/05/29(金) 19:52:18 ID:GsPIItnZ0.net
- ActionやFunc使えば入れられるけどそういう話ではない?
- 19 :デフォルトの名無しさん (アウアウエー Sa23-1zQY):2020/05/29(金) 20:14:15 ID:2er99IBxa.net
- ActionとかFuncのscopeの外側で定義されてる変数を
中で同じ名前で定義するとローカルのつもりなのに
衝突してるエラーでるけどこのエラーを出さないオプションって何?
- 20 :デフォルトの名無しさん (ワッチョイ 2b2c-NZk0):2020/05/29(金) 20:25:12 ID:EvTz8ouf0.net
- 言語バージョンを8.0にする
- 21 :デフォルトの名無しさん (ワッチョイ 1301-2Amd):2020/05/29(金) 21:54:10 ID:lyhnjVvq0.net
- >>17
C#ではメソッドそのものは型として扱われてないから
直接変数に代入したり引数として渡したりすることはできない
変数に入れたり受け渡しするためにはDelegateという型に入れてやる必要がある
var foo = obj.method;は不可だけど
Action foo = obj.method;なら可 (ActionはDelegateの一つ)
- 22 :デフォルトの名無しさん :2020/05/30(土) 05:10:09.93 ID:fH25FKrr0.net
- ありがとうございます
それ用の型があるんですね
- 23 :デフォルトの名無しさん :2020/05/30(土) 08:07:41.63 ID:AwUsX2qO0.net
- >>21
これでvarが使えない(型推論できない?)のはなんでなんだろ?
- 24 :デフォルトの名無しさん :2020/05/30(土) 08:44:06.31 ID:k44/A+q+0.net
- C#で関数ポインタが扱えない理由って関数のアドレスすらもGCによって変更される可能性があるからって事?
- 25 :デフォルトの名無しさん (ササクッテロル Sp8d-Lmla):2020/05/30(土) 09:43:25 ID:TGTrW1W5p.net
- >>24
ネイティブとのやりとりならGetFunctionPointerForDelegateとかでできるけど
GCが絡む注意点はデリゲートのインスタンスは保持する必要はあるが
インスタンスのピン留めは必要ない
- 26 :デフォルトの名無しさん :2020/05/30(土) 11:28:00.51 ID:tvhETOJ10.net
- >>23
varの初期化に使えるのは型を持つものだけ
https://docs.microsoft.com/en-us/dotnet/csharp/misc/cs0815
- 27 :デフォルトの名無しさん :2020/05/30(土) 11:48:13.28 ID:r66lkKC80.net
- 型推論が効かないて言えばさあ
スタティックフィールドで型推定が効かないのって、あれはなんか理由があるの?
- 28 :デフォルトの名無しさん :2020/05/30(土) 12:18:56.34 ID:PlE0tHnDa.net
- ??
インスタンスフィールドなら型推論できるの?
- 29 :デフォルトの名無しさん :2020/05/30(土) 13:25:43.10 ID:xeMFRGky0.net
- 理由あるよ
で、次期バージョンでvarではなくnew側の型が省略できる形で導入される予定
- 30 :デフォルトの名無しさん :2020/05/30(土) 13:30:44.20 ID:y1f90wiP0.net
- Hogehoge fuga = new(123);
みたいな感じになるの?
- 31 :デフォルトの名無しさん :2020/05/30(土) 13:36:30.05 ID:xslsMmtKa.net
- >>26
匿名型の変数は定義して初期化できるのでそれはちょっと
何か事情があるんだろうね
同じシグネチャーのデリゲートは暗黙変換できる仕様にすると何か問題が起こるのかな
- 32 :デフォルトの名無しさん :2020/05/30(土) 13:44:43.26 ID:xeMFRGky0.net
- >>30
そうそうそんな感じ
省略newは今までvar使えてたところでも使えるから
全部省略new派
var使えるところは今までどおりvar使う派
とかが生まれてきそうな感じしてる
varが使えない理由はこないだufcppの人が喋ってた
- 33 :デフォルトの名無しさん :2020/05/30(土) 13:50:04.68 ID:HVLXWEgN0.net
- varで書けるのは構わないし楽だけど
本来の型に戻すエディタの機能が欲しい
書くときにvarで書いて保存時には元に戻したい
- 34 :デフォルトの名無しさん (ワッチョイ 012d-MVlU):2020/05/30(土) 14:40:59 ID:r66lkKC80.net
- マウスのポインタを乗っけてると推定された型を出してくれるけどさ
あれ正直、表示しっぱなしにして欲しい時もあるよな
- 35 :デフォルトの名無しさん (ワッチョイ 1389-moxv):2020/05/30(土) 14:56:03 ID:g+ohKxA+0.net
- >>9
遅くなりましたが、解決策をありがとうございました
- 36 :デフォルトの名無しさん (スップ Sdf3-Tvg7):2020/05/30(土) 15:03:32 ID:YhdsJRIEd.net
- >>33
自動で戻したいならアナライザー書けば?相互変換はもう既にVS上ならできるでしょ。
- 37 :デフォルトの名無しさん :2020/05/30(土) 15:47:54.26 ID:7Rz7/MZO0.net
- >>36
じゃあ、var使わない
- 38 :デフォルトの名無しさん (ワッチョイ 1301-2Amd):2020/05/30(土) 15:52:45 ID:tvhETOJ10.net
- >>31
匿名型はその名前の通り型があるからね
匿名型は型が明示できなくても明確な用途があるけど
メソッドの場合はどこかで型を明示しないとほぼ使い道ない
デリゲート同士の暗黙変換ができれば別だけど
そっちはコンパイラの変更が大きいから労力に対してメリットが見合ってない
- 39 :デフォルトの名無しさん (アウアウウー Sac5-LWf4):2020/05/30(土) 16:26:32 ID:xslsMmtKa.net
- メソッド名が匿名のデリゲートの値を生成する式と考えることは可能だと思うけどな
知らんけど
匿名のデリゲートという概念を導入すると何か問題が起こるんだろうか
- 40 :デフォルトの名無しさん (ワッチョイ 93ad-Tvg7):2020/05/30(土) 16:28:30 ID:a7kNy7zD0.net
- >>37
それは別に君の勝手だけど、単純にnewする時にも冗長に型名並べてるコード見るとイラッとするw
- 41 :デフォルトの名無しさん (アウアウエー Sa23-1zQY):2020/05/30(土) 16:45:40 ID:Gtou79yMa.net
- Hoge[] h = new Hoge[]{a,b,c};
var h = new Hoge[]{a,b,c};
var h = new []{a,b,c};
Hage h = new Hage(){A=a,B=b,C=c};
var h = new Hage(){A=a,B=b,C=c};
var h = new Hage{A=a,B=b,C=c}; ←この()が要らないのはなぜですか?
- 42 :デフォルトの名無しさん :2020/05/30(土) 17:18:17.94 ID:MlE9UdsRr.net
- >>41
ジャバがそうだから真似しただけ
ただの省略
てか省略なんていくらでもある
- 43 :デフォルトの名無しさん :2020/05/30(土) 18:33:37.23 ID:tvhETOJ10.net
- >>39
匿名のデリゲートという概念を導入するとどういうメリットがあるの?
- 44 :デフォルトの名無しさん (ワッチョイ 53ba-cwJf):2020/05/30(土) 21:06:55 ID:gop8thIz0.net
- 勉強始めて1か月たつけど、現場のプログラマって普段なにしてんだ
言われた通りコードが書ければ仕事になるの?
- 45 :デフォルトの名無しさん (ワッチョイ d919-kLWK):2020/05/30(土) 21:12:28 ID:xeMFRGky0.net
- 職種による
実際にコード書いてる時間なんて2割くらいだったりもする
設計やテストのほうが圧倒的に時間取られたりもする
- 46 :デフォルトの名無しさん (オッペケ Sr8d-13Zu):2020/05/30(土) 21:57:43 ID:Lwi25lSTr.net
- >>44
プログラマーって、もう日本にはいない気がする。ここ5年ぐらい日本人のプログラマー見てない。
- 47 :デフォルトの名無しさん :2020/05/30(土) 22:28:12.46 ID:2kV8Kmrh0.net
- ありえん!
- 48 :デフォルトの名無しさん (ワッチョイ 2b2c-NZk0):2020/05/31(日) 01:06:35 ID:mCMjeA850.net
- >>44-46
マ板でやれ
- 49 :デフォルトの名無しさん (ワッチョイ 012d-MVlU):2020/05/31(日) 11:51:52 ID:tOMQXDTx0.net
- VSCodeでコード内の適当な句を選んで「定義へ移動」をよく使ってるんだけどさ
これ、移動先から元の場所に戻るのって、「参照へ移動」の中から選ぶしかないの?
もっとパッと戻れる技があったら教えて!!!
- 50 :デフォルトの名無しさん :2020/05/31(日) 12:49:55.34 ID:dt7NPt+m0.net
- >>49
Ctrl+-で戻らんか?
カーソル位置を戻すだけど。
- 51 :デフォルトの名無しさん :2020/05/31(日) 12:49:57.59 ID:QYY0efjJd.net
- Alt + 左カーソル
- 52 :デフォルトの名無しさん :2020/05/31(日) 12:52:47.60 ID:dt7NPt+m0.net
- ごめん、Ctrl+-はVSだな。
- 53 :デフォルトの名無しさん (ワッチョイ 012d-MVlU):2020/05/31(日) 14:08:38 ID:tOMQXDTx0.net
- ありがとう!
でも戻んなくねえか・・・・?
- 54 :デフォルトの名無しさん (スップ Sdf3-Tvg7):2020/05/31(日) 14:38:32 ID:QYY0efjJd.net
- キーバインディングいじってなければ戻るはず
- 55 :デフォルトの名無しさん (ワッチョイ a1a7-JaJ9):2020/05/31(日) 15:37:28 ID:UetBBPJT0.net
- 真のプログラマは片道切符しか買わない
- 56 :デフォルトの名無しさん :2020/06/01(月) 14:17:57.61 ID:uM6TLhYNM.net
- てさ
- 57 :デフォルトの名無しさん :2020/06/04(木) 11:48:49.55 ID:iVlDeKP50.net
- セミナーとかお勉強しないと使えないなこの言語は
一時記憶に収まらない
フィーリングで書かせろや
コンパイルとおんねー
- 58 :デフォルトの名無しさん :2020/06/04(木) 12:08:11.80 ID:XEcYdvMd0.net
- コンパイルすら通せないやつが動的言語使ったら悲惨だな
- 59 :デフォルトの名無しさん :2020/06/04(木) 12:18:22.32 ID:dmqdgjzk0.net
- 多分向いて無いと思う
- 60 :デフォルトの名無しさん :2020/06/04(木) 13:18:00.29 ID:sT7gKDo90.net
- >>57
VS使ってみ。
フィーリングでほとんど書けるし、補完してくれるから。
- 61 :デフォルトの名無しさん :2020/06/04(木) 14:02:16.75 ID:yA9dfqdA0.net
- >>57
むしろどんな言語ならフィーリングで書けるんだ?
- 62 :デフォルトの名無しさん (オッペケ Sred-WN7s):2020/06/04(木) 14:30:29 ID:ph5uM4S6r.net
- まず検索能力高めろ
- 63 :デフォルトの名無しさん (ワッチョイ 4d2d-KQW1):2020/06/04(木) 14:44:45 ID:M66vYvep0.net
- >>60
これ、すごいことだと思う。
良く出来てるわ。
- 64 :デフォルトの名無しさん (ワッチョイ c149-w3Q1):2020/06/04(木) 15:19:44 ID:bvFA+Te40.net
- 静的解析せずにc#を始めるやつおるんやな
いばらの道ぞ
- 65 :デフォルトの名無しさん :2020/06/04(木) 15:58:30.81 ID:UandGHR0M.net
- VSはなんかVSにコード書かされてる気分になってくる
- 66 :デフォルトの名無しさん :2020/06/04(木) 16:16:26.21 ID:sT7gKDo90.net
- >>65
適当に書いてCtrl+.という堕落w
- 67 :デフォルトの名無しさん :2020/06/05(金) 00:51:13.36 ID:1j5/pURw0.net
- usingも勝手に補完してくれるし
条件わかんないけど「この型NuGetから持ってこようか?」みたいなサジェストもしてくれる
あ、はい、お願いしますってつい言ってしまう
- 68 :デフォルトの名無しさん :2020/06/05(金) 07:11:12.78 ID:X40F5QUh0.net
- >>67
NuGet適当に見繕ってくれるのはほんとに神だよなぁ。
- 69 :デフォルトの名無しさん (ワッチョイ 4d01-Alfg):2020/06/05(金) 08:21:55 ID:HaKNuQ4Y0.net
- 他アプリに表示されてるリストボックスの中身の情報を抜き取る方法ありますか?
例えば株アプリの株価情報取得したり、ニュースtextを抜き出したりしたいのです
SPY++ってのを調べてるんですけど情報すくないし少し違ったり
むずかしいでしょか?
- 70 :デフォルトの名無しさん (ワッチョイ 55ad-rP/H):2020/06/05(金) 08:34:13 ID:2XC8EF810.net
- LB_ADDSTRING
LB_INSERTSTRING
- 71 :デフォルトの名無しさん (ワッチョイ d67c-jjst):2020/06/05(金) 09:52:15 ID:7ABcsW+P0.net
- UIAutomationに対応してるならSystem.Windows.Automation名前空間下の諸々のクラスでいける
- 72 :デフォルトの名無しさん :2020/06/05(金) 16:07:54.93 ID:MlQ/ufNA0.net
- おれも最近SPY++とWin32API使って他アプリの操作にチャレンジしてみたけど
ツールバー内のボタンクリックができなくて途中で挫折した
時間が出来たらこれ>>71を調べてみたい
- 73 :デフォルトの名無しさん (ワイーワ2 FFf2-hy1p):2020/06/05(金) 16:29:00 ID:WSRdRexsF.net
- 最後の手段はマウスイベント送れ
- 74 :デフォルトの名無しさん (ワッチョイ 5da7-T0NP):2020/06/05(金) 18:41:37 ID:G2EzgRxv0.net
- 画面全部スクショとって座標指定でいいだろ
全部自前で書かれてたらボタンイベントすらねぇんだから
座標指定とクリック、マウスONOFF、キーイベントだけでやるのが正義だろ
とか偉そうなこと言って
造りの問題かクリックイベントすら動かなかったので試験用コンソールアプリ作ってもらいました(´・ω・`)
- 75 :デフォルトの名無しさん :2020/06/05(金) 19:18:55.79 ID:HaKNuQ4Y0.net
- >>70
さんくす、ぐぐったらC++のメッセージ送るやつでてきた、むずい
>>71
UIAutomationに対応してるアプリって一般的なのかな、デフォでみんな
対応してたらいいのに、さんくす
>>73-74
さんくす、座標調べてクリックしたことにするのか
テレビ画面録画するみたいな感じか、でもまあ現実的っぽい
リストボックスの中身取得するのに、スクショとって文字画像認識して・・って
- 76 :デフォルトの名無しさん :2020/06/05(金) 21:58:35.28 ID:td6kQI8l0.net
- 質問だけど
Windowsアプリ作るにあたり
VisualBasicを使っちゃいけなくて(好まれなくて)C#を使うべきっていうのは
どういう理由からですっけ?
- 77 :デフォルトの名無しさん :2020/06/05(金) 22:01:11.68 ID:aJ0kwdQw0.net
- マルチポスト
- 78 :デフォルトの名無しさん :2020/06/05(金) 22:35:14.45 ID:td6kQI8l0.net
- それ以前にマルチスレ
- 79 :デフォルトの名無しさん (ワッチョイ a919-OO8l):2020/06/05(金) 22:42:21 ID:aJ0kwdQw0.net
- マルチポストしていい理由にならない
- 80 :デフォルトの名無しさん (ワッチョイ 15f1-GwrY):2020/06/06(土) 02:57:58 ID:9mdgv8nE0.net
- >>79
あなたが自粛警察するタイプ。
ずばりそうでしょう。
そんな人は人生がうまくいってないから人生にうらみがあるんじゃないかな。
悩みがあったら聞くよ。
- 81 :デフォルトの名無しさん (ワッチョイ a919-OO8l):2020/06/06(土) 04:15:34 ID:dlqfOb2e0.net
- こういう残念なやつがいるからワッチョイ有無でスレが必要になる
- 82 :デフォルトの名無しさん (ワッチョイ ca01-XEEq):2020/06/06(土) 07:18:39 ID:EOD/vRIp0.net
- >>73
>>74
マウスイベントかキーイベントって対象アプリにフォーカスないと動かないよ・・・ね?
それじゃ困るんだよなー
- 83 :デフォルトの名無しさん :2020/06/06(土) 10:25:01.92 ID:9mdgv8nE0.net
- 人生に不満な人、人の不幸が好きな人、
こういう人は警察という職業に向いている。
- 84 :デフォルトの名無しさん :2020/06/06(土) 11:38:58.12 ID:8mSQUCrQa.net
- >>83
お前はそういう人間が警察をしている世界を望むのか?
- 85 :デフォルトの名無しさん (ワッチョイ 15f1-GwrY):2020/06/06(土) 12:35:44 ID:9mdgv8nE0.net
- 人生が超楽しくてしあわせな人は
警察に向かないと思う。
人を笑わせ楽しませる仕事か、あるいは自分の趣味に関わりのある仕事に没頭するか。
- 86 :デフォルトの名無しさん (ワッチョイ 862c-jjst):2020/06/06(土) 14:50:08 ID:5hL3hw2m0.net
- >>75
Windowsのコモンコントロール
WinForm/WPF/UWPの標準コントロール
はほぼ対応してるはず
ブラウザはじめ独自描画系はアプリ次第 調べてないけどあんまり対応してなさそう
- 87 :デフォルトの名無しさん (ワッチョイ 867b-uuwx):2020/06/06(土) 15:21:40 ID:1oYratVd0.net
- ワッチョイ 15f1-GwrY
ワッチョイ a919-OO8l
アウアウウー Sa11-gmWH
テンプレ理解できない人はNG
>>82
元のレスがマウスイベントにどう関わるかわからないから別件としてレスするけど
>マウスイベント
たまに勘違いしている人がいるがフォームにフォーカスが無くても(フォームがアクティブでなくても)動く
>キーイベント
C#でグローバルキーフックを作った人がいる
http://hongliang.seesaa.net/article/7539988.html
- 88 :デフォルトの名無しさん (ワッチョイ 15f1-GwrY):2020/06/06(土) 16:11:02 ID:9mdgv8nE0.net
- C#をはじめたのですが
この動画シリーズってどれくらい見る価値ありますか?
https://m.youtube.com/user/VisualStudioJapan/videos
- 89 :デフォルトの名無しさん :2020/06/06(土) 21:00:20.86 ID:ve9u+1kO0.net
- グローバルフックでマウスイベントもキャプチャー
- 90 :デフォルトの名無しさん :2020/06/06(土) 21:06:41.96 ID:xeyYLdg20.net
- >>88
一切見なくていい
そんなもんよりハーバード・シルトの独習C#か↓のサイト見るほうがはるかにいい
https://ufcpp.net/study/csharp/
- 91 :デフォルトの名無しさん (ワッチョイ 4d01-Alfg):2020/06/07(日) 23:13:19 ID:wGMDE0oz0.net
- >>86
さんくす、それならごく普通につくられたアプリならUI Automation使えそう
便利で面白そうなのに、あまりメジャーじゃなさそうなのはなぜなんだろ
- 92 :デフォルトの名無しさん :2020/06/09(火) 06:21:44.92 ID:UwuOEQTZ0.net
- https://docs.microsoft.com/ja-jp/dotnet/core/tools/dotnet
ここを見てやってるんですが、最初の1ページ目のサンプルで失敗します。
A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found in 'C:\Program Files\dotnet'.
調べても英語の人の書いたブログしか出てこないのですが、
どうすれば解決できますか
- 93 :92 :2020/06/09(火) 06:40:31.85 ID:UwuOEQTZ0.net
- VisualStudioをアップデートしたら動きました。。。orz
- 94 :デフォルトの名無しさん :2020/06/09(火) 09:37:00.46 ID:sE3YfRh/F.net
- dotnet を get して最初にすることは dotnet の update
- 95 :デフォルトの名無しさん :2020/06/09(火) 13:06:57.31 ID:dFHXVz0lH.net
- IT掲示板群 ttp://x0000.net/forum.aspx?id=15
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン(画像有り)
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
PS malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
- 96 :デフォルトの名無しさん :2020/06/11(木) 11:07:24.07 ID:/xGObRM50.net
- ウルフエディターはC++で作られているようです
2dなのにc++にするメリットはあるんでしょうか
テクスチャの移動程度ならC#でできますよね
- 97 :デフォルトの名無しさん :2020/06/11(木) 11:24:51.54 ID:FQtHxjiy0.net
- 本人に聞けよ
- 98 :デフォルトの名無しさん :2020/06/11(木) 12:11:06.04 ID:BgpDRRce0.net
- そもそもC#でできるならC++である必要がないという理由がわからん
- 99 :デフォルトの名無しさん :2020/06/11(木) 12:40:59.96 ID:/xGObRM50.net
- 3dならC+しか選択肢がないと思いますが、C#ならopenglは使わないと思います
- 100 :デフォルトの名無しさん :2020/06/11(木) 12:55:24.94 ID:BgpDRRce0.net
- C++しか選択肢がない?
例えばUnityならC#でOpenGL使ってるけど?
- 101 :デフォルトの名無しさん :2020/06/11(木) 12:59:05.56 ID:BgpDRRce0.net
- エンジンの話だというならたとえが悪かったかもしれんな
別にUnity上でウルフエディタと同じものも作れるから最終的には一緒だけど
- 102 :デフォルトの名無しさん :2020/06/11(木) 13:00:57.60 ID:JpYLw7MRF.net
- WPF
- 103 :デフォルトの名無しさん :2020/06/11(木) 13:11:12.03 ID:/xGObRM50.net
- >>101
へぇ UWPというやつですかね
- 104 :デフォルトの名無しさん :2020/06/11(木) 14:06:50.15 ID:BgpDRRce0.net
- 全然違う
- 105 :デフォルトの名無しさん :2020/06/11(木) 17:27:54.49 ID:yAt1qMQq0.net
- >>96.>99
仕事のなら発注元の指定、趣味ならば好みなのでメリット/デメリットって気にする
ことないと思うよ
複数の言語に堪能でそれぞれの言語特性に合わせてアプリケーション毎に言語を
選定してプログラムを組んだり発注したりするより、一番使い慣れた言語でやるのが
普通じゃないかな
c#でdllimportsてWin32apiを使うなんてアンマネージなコードは邪道だとか
言われてもc#が良いんだって人は普通にいるので、簡単なGUIプログラムもC++が
手っ取り早いってことなんでしょう
- 106 :デフォルトの名無しさん :2020/06/11(木) 20:35:54.13 ID:vRuHoTo/0.net
- みなさんデータベース管理システムは何使ってますか?
普段よく使うとか、使いやすいってRDBMSを教えてください
小規模で自分一人で開発でってのを想定で
- 107 :デフォルトの名無しさん :2020/06/11(木) 20:49:36.46 ID:yGmpvECN0.net
- oracle
- 108 :デフォルトの名無しさん (ワッチョイ ff6a-MAAn):2020/06/11(木) 20:56:11 ID:Ab3iv8TC0.net
- 小規模ならSQLiteでいいんじゃね
- 109 :デフォルトの名無しさん :2020/06/11(木) 21:15:03.03 ID:Zjp+nhQg0.net
- Access
- 110 ::2020/06/11(木) 21:21:44.50 ID:bLG5zewl0.net
- >>106
postgresql
- 111 :デフォルトの名無しさん (ワッチョイ 3378-NjyN):2020/06/11(木) 21:34:56 ID:5OqhWY9w0.net
- .NET 使うんなら SQLServer 一択じゃね?
- 112 :デフォルトの名無しさん :2020/06/11(木) 21:42:34.54 ID:qibdIRpR0.net
- >>111
EF CoreチームにNpgsqlのメンテナーが入っていることもあって、PostgreSQL対応はかなり手厚い
- 113 :デフォルトの名無しさん :2020/06/11(木) 22:17:10.79 ID:tnq3MU310.net
- Postgresは大文字小文字問題なんとかしてくれ
- 114 :デフォルトの名無しさん (ワッチョイ ffad-E8/F):2020/06/11(木) 22:27:34 ID:qibdIRpR0.net
- >>113
?
- 115 :デフォルトの名無しさん :2020/06/11(木) 22:49:15.03 ID:tnq3MU310.net
- >>114
https://stackoverflow.com/questions/35914530/case-insensitive-name-of-tables-and-properties-in-entity-framework-7
こういうの
- 116 :デフォルトの名無しさん :2020/06/11(木) 22:54:47.74 ID:Yd9qBDmj0.net
- >>106
普通Redis
- 117 :デフォルトの名無しさん :2020/06/11(木) 22:58:40.14 ID:vRuHoTo/0.net
- みなさんさんくす
>>107
oracle使ってるの?有償で本格的なイメージ
>>108
SQLiteいいですよね、お手軽そうで
>>109
AccessってC#で使えるんですね、Access使い慣れてる人ならよさげ
>>110
Postgreも人気ですね、SQLiteよりもいいのかな
111
SQLServerが一番に名前出てくると思ってました
112
PostgreはC#と親和性高いのかな
見事に割れてるような感じがするのですが、C#.netと相性がいい悪いより
使い慣れてるものを使ってる感じですか
- 118 :デフォルトの名無しさん :2020/06/11(木) 23:01:51.55 ID:vRuHoTo/0.net
- >>116
さんくす、初めて聞きましたRedis,NoSQLサーバーですか
これから主力になっていくのかな
- 119 :デフォルトの名無しさん :2020/06/11(木) 23:09:04.11 ID:Yd9qBDmj0.net
- 目的が違うからRDBとは共存するんじゃね?
永続化が出来るのが他のKVSと違う所。
- 120 :デフォルトの名無しさん :2020/06/11(木) 23:21:42.50 ID:5eBlYw+xa.net
- C#との親和性とか言われてもなあ
いまどき大抵のDBMSでEFも使えるから、極端な話DBMSを途中で乗り換えても
C#で書き換えるのはconfigファイルの接続文字列とNuGetするパッケージだけ
EF使わないならSQLの方言を気にする必要はあるけどそれは組み立てるStringが変わるだけだし
DBMSに応じてC#ソースコードの書き方が変わるようなことは一切ない
- 121 :デフォルトの名無しさん :2020/06/11(木) 23:49:42.34 ID:tnq3MU310.net
- EFみないなORM使ってないとOracle->SQL Serverの書き換えとか地獄よ
- 122 :デフォルトの名無しさん :2020/06/12(金) 02:18:27.53 ID:opbb+AId0.net
- >>115
それが問題になるケースってどんなん?ASP.NET Core Identityとかも別に普通に使えてるけど
- 123 :デフォルトの名無しさん :2020/06/12(金) 02:21:54.36 ID:opbb+AId0.net
- >>120
親和性は今でも問題になるケースがあるよ
OracleはEF Coreが出てから対応するまでに3年かかったし、EF Core3.0はOracleが対応する前にサポート期間が終わっちゃった。3.1のbeta版が少し前にやっと出たとこで、RTMになるころにはもうEF Core5が出てるw
- 124 :デフォルトの名無しさん :2020/06/12(金) 03:34:44.54 ID:ZwJzd5pPd.net
- >>120
>C#で書き換えるのはconfigファイルの接続文字列とNuGetするパッケージだけ
>DBMSに応じてC#ソースの書き方が変わるようなことは一切ない
これは嘘。DbContextOptionsBuilderの拡張メソッドはDBMSごとに異なるし、そのオプションも変わってくる。当然Migration用のコードは再度生成する必要がある。まあその程度で済むんだけどね。
- 125 :デフォルトの名無しさん :2020/06/12(金) 03:36:16.16 ID:ZwJzd5pPd.net
- 「NuGetする」って表現は初めて見たな。言いたいことはわかるけどw
- 126 :デフォルトの名無しさん :2020/06/12(金) 10:19:25.67 ID:LH1ywJSs0.net
- >>119
これからNOSQLも勉強しないとダメなのかサンクス
>>120
さんくすねDBMSはどれ選んでもだいたい同じですか
>>123-124
なるほどね、細かなところ互換性問題あるけど、それほど困ることもないですか
まあDBMSコロコロ変更したりしないだろし、さんくす
欲をゆえば、これは定番でみんな使ってるし、迷ったらコレみたいのがあったらよかた
- 127 :デフォルトの名無しさん (テテンテンテン MM7f-3sqf):2020/06/12(金) 10:33:37 ID:67KMUSUMM.net
- オンプレかクラウドかにも依るだろう
オンプレならできればDBの運用保守はベンダーに丸投げしたいところだが、
そこまでするほどの規模ではないならSQL Serverが比較的楽だろう
クラウドだったら自分でインフラを管理する必要のない完全マネージドなサービスを選ぶべきだ
例えばAWSならPostgresベースのAurora、AzureならSQL Database(SQL Serverベース)になるだろうな
- 128 :デフォルトの名無しさん :2020/06/12(金) 11:11:40.32 ID:kFexpNJ30.net
- >>106
Ruby on Rails の3大DB は、
PostgreSQL, MySQL/MariaDB, SQLite
ただし、SQLite は開発用のみ
- 129 :デフォルトの名無しさん :2020/06/12(金) 20:30:56.85 ID:LH1ywJSs0.net
- >>127
なるほど、クラウドなら相手先でだいたい決まってるんですね
結局仕事でプログラマやってる人はSQL全部やってそうな、さんくす
>>128
さんくす、Webアプリと連携したりするならPostgreとかMySQLは必須っぽいですね
- 130 :デフォルトの名無しさん :2020/06/13(土) 00:57:45.04 ID:bzHb5W4o0.net
- >>122
アノテーション必須なところ
- 131 :デフォルトの名無しさん :2020/06/13(土) 01:09:18.28 ID:8SrQpLbj0.net
- >>130
アノテーション?Javaと勘違いしてない?
もしかして、[Column("some_column")]みたいなAttributeを明示的にプロパティに付与しなきゃってことを言いたいの?
- 132 :デフォルトの名無しさん :2020/06/13(土) 01:10:23.05 ID:8SrQpLbj0.net
- 最近はそもそもAttributeはあまり推奨されてないと思うんだけど…
- 133 :デフォルトの名無しさん :2020/06/13(土) 01:13:19.59 ID:bzHb5W4o0.net
- 間違えた、そう、アトリビュートね
推奨されてないならますます必須なのは困るだろ
- 134 :デフォルトの名無しさん :2020/06/13(土) 01:33:01.52 ID:8SrQpLbj0.net
- Fluent APIが主流だっていう意味でAttributeは推奨されてないって言ったんだけど通じてない??
- 135 :デフォルトの名無しさん :2020/06/13(土) 01:41:17.85 ID:8SrQpLbj0.net
- naming conventionはかなり自由度が高いんだし、PostgreSQLならこんなプラグインもあるでしょ?
https://github.com/efcore/EFCore.NamingConventions
- 136 :デフォルトの名無しさん :2020/06/13(土) 01:44:19.43 ID:8SrQpLbj0.net
- このプラグイン書いてるのもEF Coreのメンテナーだし、PostgreSQL対応は相当手厚いと思うんだけど…Oracleとは大違いw
- 137 :デフォルトの名無しさん :2020/06/13(土) 02:34:08.73 ID:bzHb5W4o0.net
- 手厚いなら標準でサポートしろ
- 138 :デフォルトの名無しさん (ワッチョイ ffad-E8/F):2020/06/13(土) 03:17:01 ID:8SrQpLbj0.net
- 標準でサポートしてるAPI使ってるでしょ?
- 139 :デフォルトの名無しさん (ワッチョイ ffad-E8/F):2020/06/13(土) 03:17:49 ID:8SrQpLbj0.net
- 会話にならない…
- 140 :デフォルトの名無しさん (スッップ Sd1f-E8/F):2020/06/13(土) 03:28:12 ID:wwBJVROwd.net
- >>130
なぜ必須だと思いこんでしまったのか…少しググれば↑のプラグインも出てくるというのに。
DBMSによって異なる仕様を全てコアのライブラリに取り込んでしまうのはアンチパターン。拡張可能なエンドポイントを用意して、適切な粒度で分けないと。
- 141 :デフォルトの名無しさん :2020/06/13(土) 03:44:26.62 ID:8SrQpLbj0.net
- そもそもなぜAttribute必須(だと思いこんでいる)かって理由もまだ一言も聞いてないしね
Fluent APIすら知らないようだし…
- 142 :デフォルトの名無しさん (ワッチョイ 6fc7-Z00E):2020/06/13(土) 13:23:26 ID:K/U+GWpl0.net
- rpgツクールみたいなソフトはC#とC+どちらがいいんでしょうか
electronではだめなのですか?
- 143 :デフォルトの名無しさん :2020/06/13(土) 13:48:37.68 ID:KtzqJ+vF0.net
- 勝手にしろ
- 144 :デフォルトの名無しさん :2020/06/13(土) 14:08:02.51 ID:o48rgnPS0.net
- >>142
好きなやつでいいよ
- 145 :デフォルトの名無しさん (ワッチョイ f3da-lWkb):2020/06/13(土) 14:47:15 ID:YToltj6/0.net
- 普通マシンコード直打
- 146 :デフォルトの名無しさん :2020/06/13(土) 23:27:18.32 ID:V91HObFW0.net
- ツクールは、Ruby じゃないの?
スレ立てるまでもない質問はここで 153匹目
https://mevius.5ch.net/test/read.cgi/tech/1586142285/845
870 の投稿も見て
- 147 :デフォルトの名無しさん (ワッチョイ 3378-NjyN):2020/06/13(土) 23:51:50 ID:KtzqJ+vF0.net
- RGSSがRubyで書けるだけで本体はRuby製じゃないだろ
最近のやつは知らないけれどRPGツクール2000はDelphi製だよ
つかこいついつものRubyガイジか
- 148 :デフォルトの名無しさん (ワッチョイ 1363-UKCU):2020/06/14(日) 00:29:11 ID:d5or7MKc0.net
- ちなみに最新のRPGツクールMVはHTML5&CSS&Javascript
- 149 :デフォルトの名無しさん :2020/06/14(日) 01:26:19.14 ID:v+4IVp6H0.net
- >>147
そう、いつものRubyバカだよ。
どこかで聞き齧った上辺だけの知識を、古いまま更新もせずあちこちで思うがままに垂れ流す、迷惑きわまりない存在。
- 150 :デフォルトの名無しさん :2020/06/14(日) 02:49:46.49 ID:elQ0/Qc7a.net
- くだらない質問で申し訳ない
static IEnumerable<char> AToZ()
{
for (char c = 'A'; c <= 'Z'; c++) yield return c;
}
static IEnumerable<string> AAAToZZZ(int n)
{
if (n < 0) throw new IndexOutOfRangeException();
if (n == 0) yield break;
if (n == 1) foreach (var c in AToZ()) yield return c.ToString();
foreach (var c in AToZ())
foreach (var item in AAAToZZZ(n - 1))
yield return c + item;
}
こういうシーケンスもっと短く綺麗に書ける?
nが負の時の処理はこだわらない。(例外投げずに空のシーケンスを返すのでも可)
どうでもいいけど、yield returnとreturnは混在できなことを今日初めて知ったw
- 151 :デフォルトの名無しさん :2020/06/14(日) 03:07:11.97 ID:elQ0/Qc7a.net
- こうじゃなきゃダメかw
static IEnumerable<string> AAAToZZZ(int n)
{
if (n < 0) throw new IndexOutOfRangeException();
switch (n)
{
case 0:
yield break;
case 1:
foreach (var c in AToZ()) yield return c.ToString();
break;
default:
foreach (var c in AToZ())
foreach (var item in AAAToZZZ(n - 1))
yield return c + item;
break;
}
}
- 152 :デフォルトの名無しさん (アウアウカー Sac7-P9YK):2020/06/14(日) 03:59:43 ID:Lj4n2emQa.net
- よくわからないけどRPGのデータベースから
単なる所持品表示と
装備品表示でBoolean型を使うなら状況が変わるのかな?
- 153 :デフォルトの名無しさん :2020/06/14(日) 05:02:05.56 ID:HJp96S060.net
- >>151
再起なんかせずにEnumetable.Repeatで必要文字数作って返すのじゃ駄目なん?
- 154 :デフォルトの名無しさん :2020/06/14(日) 13:47:32.96 ID:EPf5hgHv0.net
- 再起嫌いだわ
難しいことせず素直に書くならこうかな
static IEnumerable<string> AAAToZZZ(int n)
{
if (n < 0) throw new IndexOutOfRangeException();
IEnumerable<string> result = AToZ();
for(i = 1; i < n; i++)
result = Hoge(result, AToZ());
return result;
}
static IEnumerable<string> Hoge(IEnumerable<string> items1, IEnumerable<string> items2)
{
// items1+items2の組み合わせ
foreach (var item1 in items1)
foreach (var item2 in items2))
yield return item1 + item2;
}
- 155 :デフォルトの名無しさん :2020/06/14(日) 17:59:06.56 ID:HWVPFncU0.net
- 少し汎用化してみた
https://dotnetfiddle.net/qFcJK0
- 156 :デフォルトの名無しさん (ワッチョイ 7361-TrMf):2020/06/14(日) 22:16:24 ID:ZbFg49iQ0.net
- >>154
n=0の動きがかわっちゃってない?
- 157 :150 :2020/06/14(日) 23:20:59.70 ID:FMtFwmQda.net
- みなさんありがと
やっぱり劇的に単純化できるような方法はないか
>>154
俺は再帰使った方が簡単に感じるなあ
この辺は人それぞれなんだろうか
>>155
面白いけど可読的かなあ
ビール飲みながら読んでたら頭が痛くなってきたw
ところでこういう処理をCartesianと呼ぶのは一般的なの?
何でデカルト?
n次元の直交座標をスキャンしていくイメージ...?
- 158 :デフォルトの名無しさん :2020/06/14(日) 23:38:18.81 ID:gmXZN8yKa.net
- 2次元配列の逐次処理は3Dの棒グラフだから
どう見てもデカルト
- 159 :デフォルトの名無しさん (ワッチョイ 4359-lMPZ):2020/06/15(月) 12:58:53 ID:G4ousd2n0.net
- プログラムに日本語が使われた物って、日本語がインストールされていない環境でも動きますか?
変数名などに日本語を使って海外へのローカライズ時にはUIのみをその国の言語に差し替える感じで。
- 160 :デフォルトの名無しさん :2020/06/15(月) 18:13:18.65 ID:yRL+7o6a0.net
- >>159
作成したexeのUI(たとえばButtonコントロールのTextに「押しボタン」とか)が
日本語表示でも、文字化けが問題ないならば動くことは動く
プログラム自体の変数名(たとえば「int 合計」みたいな)であればユニコードで
保存されているはずなのでコンパイルは通るらしいけど、日本語の表示が
できない環境では読めないソースになる
プログラム実行時の画面表示でローカライズってどうやるのっていう話ならば
言語ごとのリソースを作って対応するのが普通なので「c# 国際化対応」で
ググると色々サンプルが出てるよ
- 161 :デフォルトの名無しさん (ワッチョイ 4359-lMPZ):2020/06/15(月) 19:19:37 ID:G4ousd2n0.net
- >>160
複数パターンの回答感謝です。
ありがとうございます。
回答いただいた2例目が自分のパターンになると思います。
ソースコードを読まれる事を想定していない場合はコンパイルが出来れば、実行ファイルは問題なく動くという事でしょうか?
今ゲームを作っていて、海外にも配布したいです。
enumで管理している状態異常の名前などが英語だと長くてわかりにくいので日本語にしたいです。
例えばapple.pngをりんご.pngにしたりするのも問題ないでしょうか?
- 162 :デフォルトの名無しさん :2020/06/15(月) 19:37:58.08 ID:leNERqqha.net
- 日本語ファイル名は文字化けしてたら
ファイル読み込みでエラーになりそう
ローマ字にしといたら良いんでないの
- 163 :デフォルトの名無しさん :2020/06/15(月) 19:41:29.43 ID:MF7iklGs0.net
- そっちはUnicodeだから恐らく大丈夫
- 164 :デフォルトの名無しさん :2020/06/17(水) 13:51:06.28 ID:e85N0kXp0.net
- エクスプローラーのようなファイラアプリを作っているのですが、DirectoryInfo等を利用してその都度ストレージからフォルダ構造やファイルなどを拾い上げると時間がかかってしまうためこちらでキャッシュしたいと考えています
フォルダツリーやフォルダ下にあるファイルなどの情報をキャッシュするのに適したものってなんでしょうか?
jsonでそのまま多次元配列としてシリアライズするのが最も簡単そうには思えますが、合計ファイル数が1万件近くあるとファイルサイズやパフォーマンス的にsqlite3などを利用したほうが良いのかなと色々迷ってます
- 165 :デフォルトの名無しさん :2020/06/17(水) 13:57:54.70 ID:0xoIejs00.net
- 根本的にアプローチが間違っている。
ローカルドライブならMFTを直接読んで処理すべき。
- 166 :デフォルトの名無しさん :2020/06/17(水) 15:25:29.42 ID:GES6ctGCF.net
- エクスプローラーも1万件あるとあきらかに遅くなる
- 167 :デフォルトの名無しさん (ワッチョイ b602-vBZN):2020/06/17(水) 15:38:18 ID:yVuIICiL0.net
- 低レイヤのこと詳しくないけどそもそもGetDirectoriesとかGetFilesもMFTから読み込んでるんじゃないの?
FindFirstFileのラッパーなはずだけどFindFirstFileの内部ではそうしてるもんだと思ってたが
- 168 :デフォルトの名無しさん :2020/06/17(水) 15:46:17.14 ID:0xoIejs00.net
- MFTはNTFSにしかないから、
SDカード(普通FAT系)とかネットワーク
ドライブなら
FindXXの高レベルAPIを使用する事に
なるよ。
書籍ならWindows Internals (chap12
なのでpart2)に説明がある
Qiitaで見かけた記憶があるのでこちらを
探すってのもありかと
- 169 :デフォルトの名無しさん (アウアウウー Sa47-7nK8):2020/06/17(水) 15:56:57 ID:wCFe9G62a.net
- >>164
そもそも本当に体感できるほど時間かかるかなあw
連番をプリフィクスしたファイル名でデータを保存する、なんて処理を結構書いてて、
その場合は当然ディクトリ内のファイル名を走査して開いてる番号を探すわけだけど、
少なくとも数千件程度のファイル数で体感できるような処理時間を感じたことはないが...
- 170 :デフォルトの名無しさん :2020/06/17(水) 19:29:16.87 ID:TZB3F6Mj0.net
- ファイルやフォルダを画面に描写する処理に時間がかかってたりするパターンでは?
- 171 :デフォルトの名無しさん (ワッチョイ 5fda-EdQi):2020/06/18(木) 06:00:16 ID:/GutDtHv0.net
- エスパー視点だと、切断されたネットワークドライブ探して時間がかかってる。
- 172 :デフォルトの名無しさん (ワッチョイ 0b01-oh81):2020/06/18(木) 07:14:38 ID:tX12dTLd0.net
- アドバイスでもなんでもないが俺も昔自分用のファイルDB作ってたんだが
起動時に対象フォルダ下のファイルをGetFilesやGetDirectoriesで収集 → DBからタグ等の細かい情報取ってきてくっ付けるってやるとき、sqliteから一つ一つwhere fullpathというように文字列で検索すると約5000件/3分くらいかかったんだよな
そこでwhereを入れず全部取得 → while (reader.Read()) sqFiles.Add();と一旦こちらのリストに全部放り込んでから
愚直にforでリストからフルパスと一致するものを探すって方式に変えたら5000件/500msというアホみたいに高速化された思い出がある
- 173 :デフォルトの名無しさん :2020/06/18(木) 07:24:19.57 ID:tX12dTLd0.net
- ちなみにこれじゃsqlite使う意味ねえじゃんwって思われそうだが、その初回時の検索でlong型のPrimaryKeyであるUniqueIdも取得するんで2回目以降は一つ一つ検索する場合でも普通に早い
タグ以外にもblob型の多少サイズ大きいバイナリとか色々DBには保持させてるんでな
- 174 :デフォルトの名無しさん (ワイーワ2 FF12-HKig):2020/06/18(木) 11:07:27 ID:OoPd9bgDF.net
- forで愚直に検索中にディレクトリの状態やDBの状態が変化していなければ良いねω
- 175 :デフォルトの名無しさん :2020/06/18(木) 11:27:39.83 ID:8/3vTp6fa.net
- SQLiteはトランザクション無いんだっけ?
>>172みたいな自分用のDBで500ms以内に変化するようなクエリって何だろう・・・
- 176 :デフォルトの名無しさん :2020/06/18(木) 11:54:40.21 ID:ZcH1+5T10.net
- トランザクションいるよな
とってるときも書き込むときも
- 177 :デフォルトの名無しさん :2020/06/18(木) 11:58:11.67 ID:JTgDDftK0.net
- SQLiteにだってトランザクションあるでしょ
- 178 :デフォルトの名無しさん :2020/06/18(木) 11:59:20.73 ID:ZcH1+5T10.net
- >>177
あるある
- 179 :デフォルトの名無しさん :2020/06/18(木) 12:01:47.66 ID:LpN/zpxZ0.net
- SQLiteに限らずmatchならまだしも文字列の=って糞遅いでしょ、トランザクションが有効なのって書き込み時だしね
SQLiteのクエリはutf16版を使ったところで結局はutf8への変換が生じるからC#から使うとオーバーヘッドは避けられない
その上でPRAGMA encoding='UTF-16'とかしてたらまたまたキーワード部分を変換しないといけなくなったりともうめちゃくちゃ
だから一回のクエリで全件持ってきてC#上で検索すればそれくらい早くなるというのはまぁ自然
- 180 :デフォルトの名無しさん :2020/06/18(木) 12:03:22.57 ID:8/3vTp6fa.net
- ごめんバージョン 2.0から導入されてたね
- 181 :デフォルトの名無しさん :2020/06/18(木) 12:35:51.08 ID:u7MaeuvH0.net
- ファイルのデータベース管理って言うとWinFSを思い起こすな
- 182 :デフォルトの名無しさん :2020/06/18(木) 13:20:40.79 ID:h9R/TQ390.net
- トランザクショなるNTFS=TxFとか沼ですな。
※Vistaで導入7から8に変わった時に
デグレした機能w
TransactionalFileMgr
.Net Transactional File Manager がこのスレ
的に正解かな?
- 183 :デフォルトの名無しさん (オッペケ Sr3b-CFTz):2020/06/18(木) 14:45:37 ID:N068eYZUr.net
- >>179
検索そのものが遅いんじゃなくて
5000回のクエリ発行と結果受け取りが遅いと予想したが
- 184 :デフォルトの名無しさん :2020/06/21(日) 13:35:38.83 ID:jQi52PAy0.net
- C#のGUIからパイソンを実行してデータ分析させたいんだけど、
すごく簡単に実現できる方法ってありませんか?
1 C#からテキストファイルでデータ出力
2 C#からPython起動し、テキストファイルのパスを渡す
3 Pythonでデータ分析しグラフ出力
みたいな感じです。
PythonからC#に受け渡すデータはありません。
- 185 :デフォルトの名無しさん :2020/06/21(日) 13:42:47.45 ID:bTXo9Nr1M.net
- アイロンパイソンでええんちゃう
- 186 :デフォルトの名無しさん :2020/06/21(日) 15:46:22.00 ID:7MKh9Chd0.net
- コマンドプロンプトのパイソン実行でええんちゃう?
- 187 :デフォルトの名無しさん :2020/06/22(月) 22:13:03.58 ID:zuodZOih0.net
- batファイルで、解決できそう
- 188 :デフォルトの名無しさん (ワッチョイ 0f01-5fXH):2020/06/24(水) 15:59:14 ID:rxIn+gin0.net
- SQL Server Express LocalDBのSQL文の質問なんですが
CREATE DATABASE myDB;
これはちゃんと成功するんですが
CREATE DATABASE IF NOT EXISTS myDB;
こう書くと失敗します
System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near the keyword 'IF'.
Incorrect syntax near 'myDB'.
このSQL文は使えないんでしょか?かわりの方法はあるでしょか?おねがいします
- 189 :デフォルトの名無しさん (ワッチョイ 3f01-0Hhk):2020/06/24(水) 16:14:51 ID:ZBvJ9IFx0.net
- >>188
DROP DATABASE IF EXISTS myDB;
CREATE DATABASE myDB;
- 190 :デフォルトの名無しさん (ワイーワ2 FFbf-qwRG):2020/06/24(水) 16:27:10 ID:6+kkBVmVF.net
- DROP すると等価ではないな
- 191 :デフォルトの名無しさん :2020/06/24(水) 16:40:01.38 ID:rxIn+gin0.net
- >>189
さんくすです、DROPすると以前のデータが消えてしまいそうで
ドロップしたらうまく動くんですが
- 192 :デフォルトの名無しさん :2020/06/24(水) 17:06:11.29 ID:ZBvJ9IFx0.net
- >>190
おお、そうだね
文法しか気にしてなかった
>>191
CREATE DATABASE文にはIF NOT EXISTSとかのオプションは無いから>>188はエラーになる
DROPはIF EXISTSのオプションが用意されてる
188と等価にしたいならT-SQLのIF-ELSE使って存在チェックして
DBが無い場合にだけ作成すればいい
(存在チェックはDB_IDかsys.databasesを読むか)
IF EXISTS ( … )
…
ELSE
CREATE DATABASE …
- 193 :デフォルトの名無しさん :2020/06/24(水) 17:13:36.03 ID:LZQGw3mN0.net
- で、それらc#なの?
SQLの話ならスレ違いだ
- 194 :デフォルトの名無しさん (ワッチョイ 8f01-2vNH):2020/06/24(水) 19:42:09 ID:H9m4GMw80.net
- DDL文
- 195 :デフォルトの名無しさん :2020/06/24(水) 20:43:40.85 ID:rxIn+gin0.net
- >>192
さんくすです
> IF NOT EXISTSとかのオプションは無いから
なんと、あったら便利なのにね
IF-ELSEでがんばってみます
>>193
SQL文なので若干すれ違いかなっと
似たようなことがLINQtoSQLでできればとおもったのですが
- 196 :デフォルトの名無しさん :2020/06/24(水) 22:59:21.23 ID:G18p0mGY0.net
- Entity Frameworkでデータベースと連携したい場合
public class Book{
. public int Id { get;set;}
. public string Title { get; set;}
}
モデルは↑みたいな感じになるけど
実際には↓みたいな感じに色んなデータとふるまいを持ちたいとする
public class Book{
. public int Id { get;set;}
. public string Title { get; set;}
. public List<Picrture> Picture { get;set;}
.
. (以下振る舞い等)
}
この場合って下のデータモデルからから上のDTOに変換してデータベースに入れる(取り出す時は逆)って考え方でいいのかな?
多くのサイトがEntity Frameworkでのデータベースへの突っ込み方しか書いてなくて
実際に運用する場合のデータの持ち方の考え方がよう分からん
この辺りまで詳しい本とかサイトとかあったら教えてください
- 197 :デフォルトの名無しさん :2020/06/24(水) 23:58:21.16 ID:KiDLqidP0.net
- いいんじゃない?DTOは名前の通りデータをDAOと受け渡すためだけに使って、振る舞い持たせるのは違う気がする。
- 198 :デフォルトの名無しさん :2020/06/25(木) 00:07:24.74 ID:pPMcnwWPa.net
- 単純なアプリだとDomainModelも単純だからEntity、DomainModel、ViewModelを同じインスタンスで済ませられる場合が多い
真面目にやるならそれぞれ別のクラスにしてマッピングするんだけどめんどくさいんだよな
- 199 :デフォルトの名無しさん :2020/06/25(木) 00:24:04.27 ID:GAspYPHa0.net
- めんどくさいけど、アプリ自体を拡張する可能性があると分けといたほうが後々良いことがあったりなかったり
- 200 :デフォルトの名無しさん (ワッチョイ 0fa7-eW5c):2020/06/25(木) 01:37:48 ID:Q34w5rfS0.net
- >>199
やめた方が無難
拡張したい階層が2-3ズレるのはよくあること
たったそれだけなのに拡張のために付けた処理が邪魔になって
本当にやりたい改修が大きな工数になってしまうことはよくあること
- 201 :デフォルトの名無しさん :2020/06/25(木) 08:19:30.72 ID:+9vWEdNfr.net
- >>200
「ズレる」ようなのは設計と言えないし、そんな設計したことないけどなあ
- 202 :デフォルトの名無しさん :2020/06/25(木) 08:48:00.18 ID:Q34w5rfS0.net
- >>201
あるやろ?
色んなリストの表示方法(文字着色、並び替え、フォントサイズ個別指定、背景色着色)を実装できるようにしたけど
客の欲しいのはページングのある印刷機能だけだったみたいな
改修にときノリで入れたフォントサイズの変更や文字や背景色がページング印刷時にうまく出ない
→ああ、無いほうが簡単だったな
っとか
- 203 :196 :2020/06/25(木) 20:33:53.95 ID:42cionTC0.net
- ありがとうございます
勉強になりました
- 204 :デフォルトの名無しさん (ワッチョイ 0f87-plLw):2020/06/26(金) 07:51:51 ID:a7mre53d0.net
- c#でアクティブウィンドウがosよりも先にキーボード入力を受けとる方法はありますか?
やりたいことはリモートデスクトップを全画面で繋げている場合、Alt+Tabキーの入力は呼び出し元のosではなく、リモートデスクトップ側が取得しているように見えます。
この挙動を自作のguiでもできればと考えています。
「アクティブウィンドウがosよりも先にキーボード入力を受けとる」の認識が間違っているかも知れませんが、リモートデスクトップのような挙動を実現する方法を教えてください。
- 205 :デフォルトの名無しさん (ワッチョイ 8f01-2vNH):2020/06/26(金) 08:39:13 ID:EHOqkK/F0.net
- グローバルフックしか無いと思うな
SetWindowsHookEx を調べてみなされ
- 206 :デフォルトの名無しさん :2020/06/26(金) 09:07:56.65 ID:wYfFflLL0.net
- >>204
余計なお世話かもしれないけど、アプリの枠の外にあるOS側での共通の操作を、1アプリの都合で勝手にフックされて違う動作になるのは使う方からするとストレスになるから気を付けた方がいいかも。
リモートデスクトップはある意味OS内OSだし、そういう例外的なケースならばアリだと思うけど。
- 207 :デフォルトの名無しさん :2020/06/26(金) 09:43:44.08 ID:an36r83ud.net
- >205
ありがとうございます。調べてみます。
>206
今回は自分で使いたいものなんで。
将来的に業務で使う機会があれば考慮するようにします。ありがとうございます。
- 208 :デフォルトの名無しさん :2020/06/26(金) 13:15:51.31 ID:PjbtVFt+F.net
- キーロガー禁止
- 209 :デフォルトの名無しさん :2020/06/26(金) 20:47:00.03 ID:EHOqkK/F0.net
- Tik Tokの完全再現をw
- 210 :デフォルトの名無しさん :2020/07/01(水) 15:49:13.62 ID:BmoMMcjv0.net
- 20年ぐらい前からプログラミングやりたいと思い続けてきた文系おじさんだけど
数年前から少しずつ勉強し始めて、
やっとのことでちょっとしたものをC#で作れるようになってきた
おもしろいわぁ
- 211 :デフォルトの名無しさん :2020/07/02(木) 08:48:04.62 ID:+yIU1z+T0.net
- https://freesoft-100.com/review/lightbulb.html
色温度をいじれる言語ってなんでしょうか?
pythonを主に使用しているのですが、C#系でないと色温度はいじれませんか?
色温度にもモニタ側、gpu側があると思います。
- 212 :デフォルトの名無しさん :2020/07/02(木) 09:03:57.94 ID:unw3xiWi0.net
- >>211
詳しくないから間違ってるかもしれないが、そのアプリ単体ではなく他のアプリも含めて画面の色温度を変えるという機能なら、OSがそういうAPIを提供しているということかな。それならそのAPIを利用できる言語ならばC#に限らずなんでもいいと思うけど。
- 213 :デフォルトの名無しさん :2020/07/02(木) 09:04:49.65 ID:iSJIUTiv0.net
- >>211
スレ違いだからpythonのスレで聞くかそれのソース自分で理解してほしんだが
C#でできるのはWINAPIをラップした.NETの機能を使うか直にDLLのAPIを呼び出すかくらいなんだから
pythonでAPI使えるのなら同じことができるはず
- 214 :デフォルトの名無しさん :2020/07/02(木) 09:51:08.11 ID:+yIU1z+T0.net
- ありがとう
c#にはそういうクラスがあるみたい
winのソフト作るにはc#が一番都合がいいよね
- 215 :デフォルトの名無しさん :2020/07/02(木) 11:09:32.81 ID:esHBKAii0.net
- 質問です
DateTime.Now.ToString(@"yyyy\MM\dd") => 2020\07\02 を期待したいのですが 2020M7d2 になります
今は \\ を別な文字に置換し変換後また置換ってやってますがよい方法あれば教えてください
- 216 :デフォルトの名無しさん :2020/07/02(木) 11:15:16.64 ID:j3S5Aqle0.net
- >>215
@"yyyy\\MM\\dd"
- 217 :デフォルトの名無しさん (ワッチョイ 8749-OmMV):2020/07/02(木) 11:26:03 ID:SFSsBsHn0.net
- そこに\マーク入れる文化ってどういうものなの
- 218 :デフォルトの名無しさん (ワッチョイ 638c-VQSO):2020/07/02(木) 11:31:04 ID:xozoa+r10.net
- 日付にバックスラッシュ…?
- 219 :215 :2020/07/02(木) 11:41:12.70 ID:esHBKAii0.net
- >>216
なるほど、できました
しかし元の文字列は \ 一文字で決まっているのでどのみち何か手を加えないとならないですね
>>217-218
フォルダ名の生成で日付を含めた任意の書式を扱えるようにするためなのです
- 220 :デフォルトの名無しさん :2020/07/02(木) 12:25:41.08 ID:frMfUtj7r.net
- あー「ファイルパスを作成するとき、年月日ごとのフォルダ階層をつくるため」ってことね
年の中に月だけの名前のフォルダとかセンス的に俺はようやらんけど、理由は理解できたわ
- 221 :デフォルトの名無しさん :2020/07/02(木) 12:43:20.68 ID:ZEZ39nL50.net
- >>215
年月日をそれぞれ別に取得したほうがいいんじゃね
必要ならそれをPath.Combineで連結すれ
- 222 :デフォルトの名無しさん (エムゾネ FFaa-JCxG):2020/07/02(木) 17:00:29 ID:ryu4JvV+F.net
- /でも造れるやろ
- 223 :デフォルトの名無しさん :2020/08/01(土) 16:52:28.79 ID:aC56TYwwM.net
- VisualStudioは糞です。
{}を使うとき
public voidnicemethod
{
}
となるのではなく
public void nicemethod{
}
と自動でなるようにするにはどうしたらいいですか?
- 224 :デフォルトの名無しさん :2020/08/01(土) 16:54:09.31 ID:G+VYcIGl0.net
- 糞
- 225 :デフォルトの名無しさん :2020/08/01(土) 16:58:48.08 ID:GNM8CN2Y0.net
- >>223
オプションから起動時の設定変更出来るよ
昔は後者のほうが行数少なくて済むから良いと思っていたけど、最近は前者でも別に良いわと
- 226 :デフォルトの名無しさん :2020/08/01(土) 17:01:00.07 ID:8QGIO3XO0.net
- 縦長ディスプレイなら良いんじゃね
- 227 :デフォルトの名無しさん :2020/08/01(土) 17:57:59.23 ID:E5+XpSzKd.net
- 整形はvsのデフォルトに任せるようにした
独自整形ルール作ってるプロジェクトに入るとめんどくせって思うようになってしまった
- 228 :デフォルトの名無しさん :2020/08/01(土) 18:15:37.32 ID:8AkvqbAqa.net
- 同じ構文木なら表示形式はなんでもいいはずだ
保存時の形式だけ標準化して、編集時はユーザーの好みに合わせてフォーマットするようにIDEが進化すべき
- 229 :デフォルトの名無しさん :2020/08/01(土) 18:23:48.50 ID:dl6F83GvM.net
- 簡単な住所録作ろうとしてます。
登録と削除と追加ができればいいだけのやつ。データ保存はデータベース側に。
これのシンプルなオープンソースプロジェクト知っている方いませんか?いたら嬉しい。
- 230 :デフォルトの名無しさん :2020/08/01(土) 18:48:40.23 ID:Yannm6rz0.net
- >>229
オープンソースプロジェクトの何を探してんの?
データベース?
- 231 :デフォルトの名無しさん (ワッチョイ 4dde-akQC):2020/08/01(土) 19:19:48 ID:1LAdFvqL0.net
- >>230
住所録って書いてんじゃんメクラかよ
- 232 :デフォルトの名無しさん :2020/08/01(土) 19:31:35.20 ID:Yannm6rz0.net
- >>231
作るのにオープンソースプロジェクトが必要なの?
って言ってるんだけど。
作るんじゃなくて流用する、の間違いなら、ああ、って思うけどさ。
- 233 :デフォルトの名無しさん :2020/08/01(土) 19:43:37.72 ID:EiwM5rD/0.net
- まあ、そのまんま使えねーだろーから改修して使おうってんじゃねーの?
オープンソースの正しい使い方やん
- 234 :デフォルトの名無しさん :2020/08/01(土) 20:12:27.90 ID:Yannm6rz0.net
- 簡単な登録と削除ができるだけでいい住所録にそんなものが必要だとは思わんというか、
何かをカスタマイズしてその程度の住所録にするのは、ちょっとたいそうな気がする。
- 235 :デフォルトの名無しさん (ワッチョイ 7a6a-xE3T):2020/08/01(土) 20:49:12 ID:oCALSNxU0.net
- エスパーすると作りたいけど右も左も分からんからお手本が欲しいってことかな
- 236 :デフォルトの名無しさん (ワッチョイ b178-xE3T):2020/08/01(土) 20:51:54 ID:xhSYh2050.net
- >>229
https://www.google.com/search?q=c%23 Address book
- 237 :デフォルトの名無しさん :2020/08/01(土) 21:48:16.20 ID:NKcPOHZ30.net
- オープンソースってちょいっと触るには佇まいがでかすぎて流用には向かないことが多い
住所録のどこの部分の機能が必要か知らんけど
単にアドレス帳の登録、削除、編集の基本機能だけだったら1〜2日の内容だから
どっか入門サイトで似たようなの見つけて実装したほうが早いと思う
- 238 :デフォルトの名無しさん :2020/08/01(土) 21:52:38.29 ID:+9Q20FKV0.net
- スレ違いだったら申し訳ないです。
C言語をやろうととりあえずmacかったのですが、
どのソフトで開発環境作ったらいいでしょうか?
- 239 :デフォルトの名無しさん :2020/08/01(土) 21:54:22.30 ID:G+VYcIGl0.net
- >>238
ここCじゃなくてC#な
- 240 :デフォルトの名無しさん :2020/08/01(土) 22:04:49.38 ID:8QGIO3XO0.net
- >>238
もう一つ言っておくと、mac はobjective c
(c++)でないと
画面作れないよ
- 241 :蟻人間 :2020/08/01(土) 22:06:32.74 ID:LLVAByzud.net
- macは自由陣営じゃないから。。。
- 242 :デフォルトの名無しさん :2020/08/01(土) 22:11:32.98 ID:+9Q20FKV0.net
- わかりました
ありがとうございます
- 243 :デフォルトの名無しさん :2020/08/02(日) 06:10:11.27 ID:T2MIboAU0.net
- c#で作ったbotからandoroidスマホに通知を送る良い方法はありませんか?
履歴を確認できる方法で。
今まではline-notifyでlineに送っていたのですが、新しいルート証明書をインストールしなくてはならなくなって別の方法を探しています。
- 244 :デフォルトの名無しさん :2020/08/02(日) 07:27:09.21 ID:EizALxAu0.net
- >>243
相手が端末の電源オフのときはどうしたいの?
サーバーの特定のデータを見に行く作りにしないと結局使えないじゃんってなることのが多かったよ
- 245 :デフォルトの名無しさん :2020/08/02(日) 12:52:22.51 ID:scrCUlqp0.net
- データクラスって一時期C#にも付くんじゃないかって言われてたのに、一体どうなったの?
https://try.kotlinlang.org/#/Kotlin%20Koans/Introduction/Data%20classes/Task.kt
オートプロパティのおかげでJavaみたくはならないから要らないってこと?
- 246 :デフォルトの名無しさん :2020/08/02(日) 13:54:59.45 ID:xaz7GC4v0.net
- 9でrecordくるよ
- 247 :デフォルトの名無しさん :2020/08/02(日) 14:51:37.50 ID:umITGI3r0.net
- https://ufcpp.net/blog/2020/6/record0609/
https://ufcpp.net/blog/2020/6/cs9vs16_7p3/
recordsはこんな感じ
- 248 :デフォルトの名無しさん :2020/08/02(日) 16:20:00.33 ID:NsDY9jGSF.net
- ここはプログラムを描きたい人造りたい人向けのスレ
フリーソフトダウンロードして使いたい人は相応のスレへ逝くことをお薦めします
- 249 :デフォルトの名無しさん :2020/09/03(木) 22:01:35.41 ID:RMVHFRAl0.net
- public interface Ixxxxx
{
int method1(int x);
}
インターフェイスについて質問です。
上ではメソッドの型を定義しているわけですが、
インターフェースの引数定義で、xのように変数を設定するのはどうしてなんでしょうか。
ここでは使われない変数なので、型のみで良いと思うのですが。
それから、publicを省略して、interfaceとだけ定義する理由はどうしてなのでしょうか。
classなら、publicを前置するのに。
- 250 :デフォルトの名無しさん :2020/09/03(木) 22:10:50.18 ID:RMVHFRAl0.net
- ルート相対的URLを保存するクラスは何が適しているんでしょうか。
String型に、/root/abc/def を文字列として保存しているのですが、
適切な型があれば教えてください。
- 251 :デフォルトの名無しさん :2020/09/03(木) 23:38:56.88 ID:FEiIVBqsM.net
- >>249
名前がないと何を意味する引数なのかが意味不明だから
interfaceはpublicメンバしか持てないから
- 252 :デフォルトの名無しさん :2020/09/04(金) 00:15:18.15 ID:yQcUkcYq0.net
- 引数名ないとドキュメント化する時にも困るしね
- 253 :デフォルトの名無しさん :2020/09/04(金) 11:28:01.48 ID:M8Oq5rfA0.net
- >>249
引数や戻り値の型をしっかり定義しないといけない理由は、ILやアセンブリといった低レベル知識を学習すればよく分かるよ
機械語レベルだとint、long、float、double〜etcはそれぞれ命令文が違う
だから引数や戻り値がバラバラな値型だとそれぞれの機械語を生成しなきゃならず共用化出来ない
逆に言うと参照型であればポインタだけで済むので実は共用化が出来る
なので参照型であればobjectとして定義をすれば実際に共用化可能(値型もboxingしてobject型にすれば同様)
- 254 :デフォルトの名無しさん :2020/09/04(金) 11:39:06.89 ID:krKESdlN0.net
- 型のみで十分なのになん変数名まで書かなきゃならんの?って質問にその回答は適切ですか?
- 255 :デフォルトの名無しさん :2020/09/04(金) 12:06:19.79 ID:yQcUkcYq0.net
- >>253
その回答はズレてる
- 256 :デフォルトの名無しさん :2020/09/04(金) 12:46:23.59 ID:YyY7xdI50.net
- >>251
>>252
レスありがとうございます。
なるほど、
変数名に引数の役割について記録しておくということにとても納得しました。
ソースの自己ドキュメント化につながりますものね。
>>253-255
レスありがとうございます。(^-^)
- 257 :デフォルトの名無しさん :2020/09/04(金) 13:31:45.96 ID:Cdgw0eXGM.net
- インターフェイスメンバに引数名が必要なのは名前付き引数のためでもある
名前付き引数ってのはmethod1(x:123)みたいな書き方のこと
正確には名前付き引数がC#に導入されたのは比較的最近なので時系列が逆なんだけど、
.NETはC#に限らずいろんな言語を動かすことを想定して設計されてるので名前付き引数のための要請についても元々考慮されてたというわけ
- 258 :デフォルトの名無しさん :2020/09/04(金) 14:23:19.04 ID:Utz5OTUqa.net
- >>257
下のコードは合法なのでさすがにそれは意味不明
interface IHoge
{
void Fuga(int x);
}
class Hoge : IHoge
{
public void Fuga(int y)
{
}
}
- 259 :デフォルトの名無しさん :2020/09/04(金) 14:29:57.19 ID:G2vvVEFn0.net
- 引数名を変更するのってどういったケースを想定してるん?
- 260 :デフォルトの名無しさん :2020/09/04(金) 14:34:15.41 ID:Utz5OTUqa.net
- 別に想定なんかしてないのでは?
単に違法にする理由がないだけかと
- 261 :デフォルトの名無しさん :2020/09/04(金) 17:36:23.03 ID:nh9T8LFU0.net
- >>258
IHoge hoge = new Hoge();
hoge.Fuga(x: 100); //<= OK
hoge.Fuga(y: 100); //<= NG: compile error
- 262 :デフォルトの名無しさん :2020/09/04(金) 18:29:28.50 ID:Utz5OTUqa.net
- >>261
当たり前やんw
- 263 :デフォルトの名無しさん :2020/09/04(金) 19:19:04.36 ID:Utz5OTUqa.net
- あーインターフェイスのメソッドの仮引数が名無し定義を許す仕様になってたら
名前付きで呼び出せないよって言いたいわけか
確かにその通りだね。
だけど「名無し定義を許さない理由の一つは名前付き引数を想定していたから」は考えすぎじゃないのかな
- 264 :デフォルトの名無しさん (テテンテンテン MM8f-wKT+):2020/09/04(金) 19:51:37 ID:Cdgw0eXGM.net
- いや名前付き引数はVB.NETには昔からあったぞ
想定していないわけがない
- 265 :デフォルトの名無しさん :2020/09/04(金) 20:31:43.96 ID:nqNO8CQ40.net
- そもそもコンパイルしても変数名はILに残るわけだし
C#1からたぶんそうだよね?reflectionあるんだし
- 266 :デフォルトの名無しさん (アウアウウー Sa8b-wKT+):2020/09/05(土) 10:58:29 ID:JiWof8twa.net
- >>265
それはもちろんその通りで、名前付き引数も当然そのメタ情報を見るわけだけど、
MSが仮に明確な意思をもってインターフェイスメンバに引数名は絶対要らないという設計判断をしたならCLIもインターフェイスメンバには例外的に引数名を持てない仕様にしただろう
CLIの設計としてはわざわざそんな例外を設けるのは不自然だし、C#の言語仕様を考えてもインターフェイスメンバだけ例外的にメソッド宣言の文法が違うのは不自然だ
もちろん、実装には追加コストを払って特別なケアが必要になるだろう
そこまでして引数名を省略したいだろうか?ということだね
- 267 :デフォルトの名無しさん :2020/09/05(土) 12:34:52.95 ID:Waja5Z+Na.net
- 実行時に小さくないコストが発生するような方法なんて取るわけないと思うよw
メタ情報なんて見てるわけないじゃんwww
- 268 :デフォルトの名無しさん :2020/09/05(土) 13:22:53.11 ID:azagYl6mp.net
- 家政婦はメタ
- 269 :デフォルトの名無しさん :2020/09/05(土) 13:51:42.86 ID:6OTXYwA0M.net
- >>267
誰が実行時に見てるなんて言ったんだ?
見てるのはコンパイル時
- 270 :デフォルトの名無しさん :2020/09/05(土) 14:12:24.58 ID:RVsSclOOM.net
- 2日連続して秒で論破されとるやつw
- 271 :デフォルトの名無しさん :2020/09/05(土) 16:47:07.35 ID:aivXeFh8d.net
- >>270
スレタイの通り初心者なんやろ
- 272 :デフォルトの名無しさん :2020/09/05(土) 18:29:01.06 ID:Waja5Z+Na.net
- >>266は誤読したけど前日に論破(笑)なんかされた覚えはないよw
言い訳をさせてもらえばそもそも>>265-266は話の意図が不明瞭。
どっからそんな話が出てくるのって話
- 273 :デフォルトの名無しさん :2020/09/05(土) 22:38:11.37 ID:VnlHSptc0.net
- インターフェースの引数名を省略する戦略なんかないって結論出てるのにね
- 274 :デフォルトの名無しさん :2020/09/06(日) 08:18:43.19 ID:gGwX7R3F0.net
- >>273
そこの理由が示されていないんでは?
名前付き引数を使えるようにしたんで仮引数は省略できません、じゃ理由になってないでしょ?
- 275 :デフォルトの名無しさん :2020/09/06(日) 14:33:55.32 ID:pKWvrGW4F.net
- 省略するとき
hoge(hage,,,,,fuga,,,,kuzu,,,) みたいな言語あったなー
- 276 :デフォルトの名無しさん :2020/09/07(月) 02:57:30.38 ID:u0REhpNo0.net
- using var task = Task.Run(() => Do(a, b, c));
このDoを途中で止めることできる?
Doの処理に時間がかかるためキャンセルさせたい場合がある
- 277 :デフォルトの名無しさん :2020/09/07(月) 03:10:56.80 ID:3uGG3SyO0.net
- CancellationTokenを使う
https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/how-to-cancel-a-task-and-its-children
- 278 :デフォルトの名無しさん :2020/09/07(月) 03:25:16.17 ID:jjIciKyq0.net
- Doがキャンセルできるように作られてればできる
そうでなければ無理
- 279 :デフォルトの名無しさん :2020/09/07(月) 09:29:51.53 ID:s6/MEWpq0.net
- a,b,cってなによ?
- 280 :デフォルトの名無しさん :2020/09/07(月) 10:42:48.10 ID:Mci5uexUM.net
- 引数じゃないの?
- 281 :デフォルトの名無しさん :2020/09/07(月) 16:30:38.13 ID:u0REhpNo0.net
- Doの改造も不可避みたいですね
ありがとうございました
- 282 :デフォルトの名無しさん:2020/09/08(火) 11:07:55.61 ID:zCzZAqaJv
- C#歴1ヶ月の独学勉強中の者です。
pictureBoxに画像を表示させており、
ボタンを押下するとその画像が画像中心を支点に5度ずつ
反時計回りに回転するプログラムを作成しています。
環境:VScommunity2019
この際pictureBoxに表示させている画像が表示されたまま
その上に回転した画像も表示されてしまいます。
元の画像を表示させないようにしたいのですが、
対応案が浮かびません。。ご教示いただけないでしょうか。
- 283 :デフォルトの名無しさん :2020/09/11(金) 09:13:51.86 ID:rDZLwTxXa.net
- VisualC#2019パーフェクトマスター
買ってみた
800ページ近くある
勉強しなおし
Java有償化で、いろいろ特需だな
Javaよサラバ
Javaよサラバ
Why なぜに生きているのか
わからない
- 284 :デフォルトの名無しさん :2020/09/11(金) 10:05:52.91 ID:qxFjIo0zM.net
- Java有償本当か?
- 285 :デフォルトの名無しさん :2020/09/11(金) 16:12:44.77 ID:rDZLwTxXa.net
- 優勝だ
- 286 :デフォルトの名無しさん :2020/09/23(水) 09:34:34.80 ID:hJkRvCZvF.net
- >>1
Part 149
- 287 :デフォルトの名無しさん :2020/09/23(水) 19:49:30.91 ID:SeN5l4G8a.net
- 需要ないと思うけど暇だったので別スレで質問が出てたキー操作のシーケンスで発動する
キーボドショートカットを作ってみた
https://ideone.com/FcOn5C
使い方:
public partial class Form1 : Form
{
private KeyboardShortcutsDetector mKbsDetector = new KeyboardShortcutsDetector();
public Form1()
{
InitializeComponent();
mKbsDetector.AddKeyBinding(Keys.Control | Keys.K, Keys.Control | Keys.L, () => Console.WriteLine("Ctrl + K, L"));
mKbsDetector.AddKeyBinding(Keys.Control | Keys.K, Keys.Control | Keys.M, () => Console.WriteLine("Ctrl + K, M"));
mKbsDetector.AddKeyBinding(Keys.Control | Keys.J, Keys.Control | Keys.U, () => Console.WriteLine("Ctrl + J, U"));
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
return mKbsDetector.ProcessKey(keyData) ? true : base.ProcessCmdKey(ref msg, keyData);
}
}
退屈なコードだからたぶん見るだけ時間の無駄だと思うw
- 288 :デフォルトの名無しさん :2020/09/24(木) 00:24:56.04 ID:GbsAQP4b0.net
- MVCとかまだイマイチわからんからwinformで作ってからMVCに移行する感じで勉強してるけど一人開発だと有り難み感じないからちょっと空しい
- 289 :デフォルトの名無しさん :2020/09/24(木) 12:42:20.92 ID:gbWGo5W3M.net
- ボタン押したあとに結果リストにフォーカス移動させるのは
viewでやってええのか?
- 290 :デフォルトの名無しさん :2020/09/24(木) 16:36:22.54 ID:e+Ck+96a0.net
- いいと思うよ
- 291 :デフォルトの名無しさん :2020/09/26(土) 17:13:06.01 ID:xSRIB2Tf0.net
- windowsフォームアプリでHttpClientを使ってhtmlを取得しようと思っていますがうまくいきません。ステップ実行すると※の部分で処理が終わってしまいます。エラーに関する表示が何もでないため行き詰まってます。非同期処理に関する理解が浅いからだと思っていますが、壁を乗り越えられません。
このようなコードではなぜうまくいかないのでしょうか?
@
private void button1_Click(object sender, EventArgs e)
{
var url = "http://www.google.com";
var t = GetHtml(url);
t.Wait();
this.textBox1.Text = t.Result;
}
async Task<string> GetHtml(string url)
{
var client = new HttpClient();
var html = await client.GetStringAsync(url);//←※
return html;
}
(続く)
- 292 :デフォルトの名無しさん :2020/09/26(土) 17:13:28.26 ID:xSRIB2Tf0.net
- >>291の続き
ためしにコンソールアプリで似たコードを書いてみましたがうまくいきます。
A
static void Main(string[] args)
{
var url = "http://www.google.com";
var t = GetHtml(url);
t.Wait();
Console.WriteLine(t.Result);
}
static async Task<string> GetHtml(string url)
{
var client = new HttpClient();
var html = await client.GetStringAsync(url);
return html;
}
フォームアプリでもハンドラに全て突っ込めばうまくいきます。
B
private async void button1_Click(object sender, EventArgs e)
{
var url = "http://www.google.com";
var client = new HttpClient();
var html = await client.GetStringAsync(url);
this.textBox1.Text = html;
}
- 293 :デフォルトの名無しさん :2020/09/26(土) 17:23:29.59 ID:RSACZQL60.net
- >>291
private async void button1_Click( object sender, EventArgs e )
{
var url = "http://www.google.com";
this.textBox1.Text = await GetHtml( url );
}
- 294 :デフォルトの名無しさん :2020/09/26(土) 17:27:53.86 ID:9d7CJAWD0.net
- asyncはwaitしちゃだめ
理由は async デッドロック あたりでググって
- 295 :デフォルトの名無しさん :2020/09/26(土) 17:31:36.79 ID:+0bWtyAMM.net
- >>291
どうしてもWait()使う場合はConfigureAwait(false)するかな
- 296 :デフォルトの名無しさん :2020/09/26(土) 17:36:48.45 ID:xSRIB2Tf0.net
- >>293,294,295
数日間悩んでたのですが、教えて下さったキーワードを手がかりに調べ直してみます
本当に助かりました。ありがとうございます。
- 297 :デフォルトの名無しさん :2020/09/27(日) 04:46:18.27 ID:6sIZ9RBB0.net
- Android, Electron などは、スレッドが2つある。
UI(描画)スレッドと、サーバー(バックグラウンド)スレッド
だから、2つのコンテキスト・文脈をまたがって、非同期などはできない。
異なる文脈の処理を呼び出すには、文脈を切り替えるような、特別な書き方がある
まあ、Windows のGUIアプリが、2つの文脈でやっているかどうかは知らないけど
- 298 :デフォルトの名無しさん :2020/09/27(日) 07:46:38.96 ID:WpoxB1nK0.net
- >>297
知らんのかよ。
やってるけど。
- 299 :デフォルトの名無しさん :2020/09/27(日) 16:39:54.69 ID:BMd/NSoW0.net
- >>291
多分非同期処理って調べるとasyncの例ばかりで自分で戻り制御する方法がよく
分からなくてTaskクラスでWaitすれば出来るとかって結論に達したんでないかと
思うのだけど・・・
まず、async指定されたメソッドは呼び出されるとメソッド全体を別スレッドとして
起動して処理を元のスレッド(この場合STAスレッド)に戻します
asyncメソッドの中でawaitを指定すると、メソッドの内容に関係なく元のスレッドに
戻るのは変わらないですが、asyncメソッドの中でawaitで指定されたメソッドが
終了するまでasyncメソッドのスレッドだけが待ち状態になり、awaitから返って
くるとawait以降を実行しasyncメソッドの最後まで行くとasyncメソッドのスレッド
だけが終了されます
検証してないので予想なのですが、Taskクラスで管理するスレッドを起動して
いない(Task.Run)状態でWaitをかけるとSTAスレッドを待つためにsleepして
しまいますがSTAスレッドはループスレッドなので当然いつまで待っても終了
しません
asyncスレッドではawaitの処理が終わって復帰しようとしても元になるSTA
スレッドがsleep状態なので、こちらもawaitから返ってこないみたいなことが
起こっているのだと思います
2のコンソールアプリの場合にはループスレッドではないのでMainの処理が
終了した時点で続きが動くのではないかと
3は正しい使い方で、STAスレッドは動かしたままbutton1_Clickメソッドが別スレッドで
動作する際にclient.GetStringAsyncの処理を待っているので普通に動作します
button1_Clickの中で待つのであればasyncメソッドを作る意味がないですし、async
メソッドで裏で動かすのであればbutton1_Clickで待ってはいけないので3の様な
形で実装するか、asyncメソッドの返却値をただのstringにして、textBox1.Textに
メソッドの返却値が入る形式に変える(こっちは試してないので嘘かも)のが正解じゃ
ないかな
- 300 :デフォルトの名無しさん :2020/09/27(日) 18:04:42.91 ID:co99WLAO0.net
- つまり非同期すればハゲるということですね。
- 301 :デフォルトの名無しさん :2020/09/27(日) 19:27:47.55 ID:0F2CG6otd.net
- >>291
@でやるなら自分はcontinuewithするかなあ
あとhttpclientは毎回使い回すのはあまり良くなかった気がする
- 302 :デフォルトの名無しさん :2020/09/27(日) 19:28:51.84 ID:0F2CG6otd.net
- >>301
x使い回す
○作り直す
- 303 :296 :2020/09/28(月) 02:24:40.60 ID:QIpyCS2B0.net
- JavaScript が難しいのは、非同期が基本だから。
コンテキスト・文脈が異なる。
時間の進み方が異なる世界で、同期を取らないといけないから
Ruby が簡単なのは、同期が基本だから。
非同期の方がオプション
Android, Electron がややこしいのも、2つの文脈の同期を取る必要があるから。
1つのアプリ内に、GUI・非GUI の文脈がある
例えば、Electronなら、Main は、Node.js のCUI スレッドで、
Renderer は、GUI のChromium スレッド
双方は、決められた書き方をしないと、同期・通信できない
- 304 :デフォルトの名無しさん :2020/09/28(月) 06:18:20.07 ID:ii9XSMYC0.net
- >>291です
>>297
コンテキスト・文脈という概念がまだ把握できてないのでそこが課題だと思ってます
>>299
自分は独習C#という本をテキストにして勉強しています。
その中で、>>292のAと似たコードが記載されていて、
これを使ってasync/awaitの基礎が説明されています。
そこで、フォームアプリで真似してみたんです。
デッドロックについてはいろいろ調べてみて基本的な理屈は理解できました。
ただ、Aのコンソールアプリでデッドロックが起きない理由がわかりません。
コンソールアプリはループスレッドではないからとのご指摘が重要だと思っていますが
まだ理解が浅くてモヤモヤしてます。
あと、
>まず、async指定されたメソッドは呼び出されるとメソッド全体を別スレッドとして
起動して・・・
の下りですが、スレッドが3つあると考えればいいのでしょうか?
a.STAスレッド(2のスレッドを呼び出したスレッド)
b.async指定されたメソッドを処理するスレッド
c.client.GetStringAsync(url)を処理するスレッド
これはAのコンソールアプリでも同じですか?
bについては独習C#には書かれていなかったので
aとbは同じスレッドだと思い込んでいました。
調べてみてよく分かったのですが、理解できていない概念が多すぎますね。
今の時点で安易に触ってしまうと変に誤った先入観を持ってしまいそうです
この辺をわかりやすくしっかり説明している書籍等、ご存じないでしょうか?
結論としては
基本的にフォームアプリの中でWaitを使うな
使いたいならConfigureAwait(false)で回避しろ
ということなのかなと思っています
- 305 :デフォルトの名無しさん :2020/09/28(月) 07:01:50.95 ID:ii9XSMYC0.net
- >>304
修正
a.STAスレッド(bのスレッドを呼び出したスレッド)
- 306 :デフォルトの名無しさん :2020/09/28(月) 07:59:26.50 ID:nO4ceNb30.net
- すいません入門書に以下のコードがあるんですが実行してもピクチャーが真っ白で変になってるんですが
何が間違ってるんでしょうか;
https://gyazo.com/de388825132a1ac42b21b7cbb8a069fd
画像を置いてる場所はここです
https://gyazo.com/93530ea51ef1e88cbcd097846d409ca4
- 307 :デフォルトの名無しさん :2020/09/28(月) 08:35:58.50 ID:lkQsRi/q0.net
- 表示したい画像はどんな内容なんですか?
- 308 :296 :2020/09/28(月) 08:52:18.25 ID:QIpyCS2B0.net
- >>304
コンテキスト・文脈が異なるとは、全く別世界・異次元。
時間の進み方も異なるし、全く感知できない。
通信・同期もできない
未定義の動作と同じ。
あらゆる仮定・推測ができない
だから、双方が連絡するには、特別な書き方をしないといけない
普通の言語では、例外も補足できない。
他方で例外を投げても、伝わらない
だから、ストールするのは、文脈が異なる場所で、例外が起こっている可能性もある。
起こっていても分からないから
本を買うよりも、検索して調べた方がよい。
こういう説明が載ってる本は、まずない。
余程、マニアックな本だけだろう
- 309 :デフォルトの名無しさん :2020/09/28(月) 08:53:38.64 ID:phqY8Xtx0.net
- FormのControlsに追加しなくてもいいんだっけ?
- 310 :デフォルトの名無しさん :2020/09/28(月) 08:59:13.21 ID:Zg0P7tB00.net
- >>304
C#による マルチコアのための非同期/並列処理プログラミング
ttps://gihyo.jp/book/2013/978-4-7741-5828-0
C#によるWindowsシステムプログラミング 第2版
ttp://www.cutt.co.jp/book/978-4-87783-468-5.html
この2冊しかしらん
もっといいのを知ってる人いたらよろしく
- 311 :296 :2020/09/28(月) 09:04:53.56 ID:QIpyCS2B0.net
- 確かに、GUI の根幹には、永久のイベント(メッセージ)ループがある。
イベントドリブン
ずっと、ユーザーからのマウスイベントなどが、キューに入るのを待っている。
キューにイベントが入ると、それを処理する。
それを永久に続ける
一方、CUI では、そういうイベントドリブンは聞かない。
マウス操作で、何かをするというのも聞かない。
Ctrl + C を押して、割り込み処理を発生させることはできるが
でも、こういうアプリの終了などのソフトウェア割り込みも、イベントループで拾うけど
- 312 :296 :2020/09/28(月) 09:08:06.54 ID:QIpyCS2B0.net
- そんな難しい本を読んでも、理解できないから無駄だと思う
検索した方がよい
- 313 :デフォルトの名無しさん :2020/09/28(月) 09:11:10.60 ID:Zg0P7tB00.net
- >>306
用意した画像の一部だけが表示されている
たとえば、
pb.SizeMode = PictureBoxSizeMode.StretchImage;
といった感じでPictureBoxSizeModeを指定してみると何が起こってるのか何となくわかるんじゃね?
- 314 :デフォルトの名無しさん :2020/09/28(月) 09:42:36.85 ID:Uql71HHWa.net
- >>311
ctl+Cまで入力コマンドを待つCUIアプリはイベントドリブンと呼べるのでは?
- 315 :デフォルトの名無しさん :2020/09/28(月) 09:50:37.80 ID:o994bwz+0.net
- >>311
CUIでもターミナルベースの業務アプリなんかだとイベントループ書くぞ。
- 316 :296 :2020/09/28(月) 10:20:17.53 ID:QIpyCS2B0.net
- 結局、GUI・CUI も、どちらもイベントドリブンなのか
大部分は同じなのかも
- 317 :デフォルトの名無しさん :2020/09/28(月) 10:59:03.73 ID:o994bwz+0.net
- >>316
お前Electronの内容もちょっと変な理解してるし、毎回思うけど知ったかぶりしないほうがいいぞ。
結局Rubyの事しかわかんないんでしょ。
- 318 :デフォルトの名無しさん :2020/09/28(月) 11:27:34.04 ID:j++FlVxl0.net
- Delphiに存在したメタクラス型(クラス型を代入、参照できる変数)は
C#に無いの?
- 319 :デフォルトの名無しさん :2020/09/28(月) 11:42:34.18 ID:ii9XSMYC0.net
- >>310
ありがとうございます
アマゾンレビューをチラ見したところ目的に合ってそうです
>>312
とりあえず頑張ってみます
- 320 :デフォルトの名無しさん :2020/09/28(月) 11:53:52.45 ID:phqY8Xtx0.net
- >>318
Typeは?
- 321 :デフォルトの名無しさん :2020/09/28(月) 13:53:50.99 ID:j++FlVxl0.net
- Typeでもある程度事は足りるけど、
あらゆる型のtypeof()を代入できるので不確実だし、Activatorとか必要で面倒。
無いなら仕方ないが…まあ移植が大変
- 322 :デフォルトの名無しさん :2020/09/28(月) 18:57:37.61 ID:nO4ceNb30.net
- >>313
そのプロパティ?はまだ本内で教わってないですが使ったら表示されました。
ありがとうございます!!
- 323 :デフォルトの名無しさん :2020/09/28(月) 22:54:29.00 ID:iemn9XLz0.net
- >>311
CUIなRTOSなんて普通にあるけどなぁ
- 324 :デフォルトの名無しさん :2020/10/10(土) 10:58:06.91 ID:RvE6O+PE0.net
- .NET Coreでコンソール画面に
「こんにちは、WORLD!」と表示させようとすると
なぜか「こんにちは、WORL!」のように表示されます
コンソール画面のメニューからフォントを変更すると正しく表示されますが原因が分かりません
- 325 :デフォルトの名無しさん :2020/10/10(土) 11:22:49.95 ID:OZkIKLkD0.net
- コンソール画面とは?
- 326 :デフォルトの名無しさん :2020/10/10(土) 12:42:00.94 ID:YPdRC9Oi0.net
- >>324
コード貼れ
- 327 :デフォルトの名無しさん :2020/10/10(土) 13:17:16.07 ID:RvE6O+PE0.net
- static void Main(string[] args)
{
var str = "こんにちは、WORLD!";
Console.WriteLine("{0}", str);
Console.ReadKey();
}
- 328 :デフォルトの名無しさん :2020/10/10(土) 17:53:06.91 ID:wYCx593I0.net
- >>327
これかな?
https://aquasoftware.net/blog/?p=895
- 329 :デフォルトの名無しさん :2020/10/10(土) 17:57:00.27 ID:wYCx593I0.net
- >>327
これも
https://csharp.clock-up.jp/contents/dotnetcore/codepage-encoding
- 330 :323 326 :2020/10/10(土) 19:40:42.12 ID:RvE6O+PE0.net
- >>328 >> 328
試してみましたが改善しません
出力をコピーしてメモ帳にペーストしてみると正常なので
どうも文字化けではないようです
文字の表示位置がずれて重なっているような感じです
- 331 :デフォルトの名無しさん :2020/10/10(土) 20:03:24.77 ID:wYCx593I0.net
- >>330
こちらでは正常なんでコンソール画面のプロパティの設定がおかしいんでは?
- 332 :蟻人間 :2020/10/10(土) 20:04:01.51 ID:c6WyhNHPd.net
- 何てフォント?
- 333 :デフォルトの名無しさん :2020/10/10(土) 20:23:39.28 ID:RvE6O+PE0.net
- MSゴシックの18ポイント、Windows8.1です
来週会社のパソコンで試してみることにします
- 334 :デフォルトの名無しさん :2020/10/10(土) 20:41:27.03 ID:wYCx593I0.net
- >>333
8.1はプロパティでレガシーコンソールのチェックある?あったらそれチェックでいけるんでは?
- 335 :デフォルトの名無しさん :2020/10/10(土) 20:52:24.98 ID:RvE6O+PE0.net
- ないです
- 336 :デフォルトの名無しさん :2020/10/10(土) 21:17:43.96 ID:RlZbVDXEa.net
- 何にもアドバイスできないのに恐縮だけど、
>コンソール画面のメニューからフォントを変更すると正しく表示されますが
だったら具体的にどのフォントで問題が発生してどのフォントで発生しないか
確認した範囲で書いた方がいいのでは
あと、普通テキスト変えていろいろ試さないか?
- 337 :デフォルトの名無しさん :2020/10/10(土) 21:50:46.82 ID:wYCx593I0.net
- 他のアプリでMSゴシックの18ポイント使ってみ。フォントのファイルが正常かどうか
使えるなら8.1のコンソールウィンドウの問題でしょ
- 338 :デフォルトの名無しさん :2020/10/10(土) 23:23:35.42 ID:wgBcrtZd0.net
- >>321
Typeで事足りそうなものだが…
あるいは設計の問題かも。
どんな設計なのかも書き込んでみたら?
- 339 :デフォルトの名無しさん :2020/10/20(火) 10:49:57.27 ID:N2Y7+9Dy0.net
- ローカルでiTextSharpを利用して、
Json形式のデータからPDF帳票を作る・・てのつくったんだが、
(サーバ上で、APIコールとかファイル読込でPDFファイルを返したかった。
イメージ的にはページごとにTextとかLineを指定したJsonデータ)
いざ業務に転用できるかなってフェーズにきて
iTextSharpのライセンス(AGPL)がやだなあ、って思ってる。
PDFSharpは日本語がなんかうまくいかない。
今のC#で、PDFを作るの、皆さんはどうやってる?
- 340 :デフォルトの名無しさん :2020/10/20(火) 10:55:16.27 ID:0/xBmjm30.net
- >>339
業務だったらExcelCreator使ってる
- 341 :デフォルトの名無しさん :2020/10/20(火) 10:59:00.80 ID:pHiz9StDF.net
- PDFSharp使ってるけど問題無し
- 342 :デフォルトの名無しさん :2020/10/20(火) 11:10:22.94 ID:d69BLAaZa.net
- React、Vueで帳票レンダリング
ヘッドレスブラウザでPDF印刷
- 343 :デフォルトの名無しさん :2020/10/20(火) 11:13:59.21 ID:pHiz9StDF.net
- 日本語不安ならグラフィック直接PDFに張り付けろ
- 344 :デフォルトの名無しさん :2020/10/20(火) 12:28:25.89 ID:eHl8PxCr0.net
- PDFSharpは日本語の折り返しに対応してなかったぞ。
- 345 :デフォルトの名無しさん :2020/10/20(火) 12:50:06.87 ID:pHiz9StDF.net
- >Json形式のデータからPDF帳票を作る
これが折り返しするかどうかだな
- 346 :デフォルトの名無しさん :2020/10/20(火) 13:46:22.13 ID:N2Y7+9Dy0.net
- 皆さんありがとうございました・・・
方針としてはPDFSharpをもっかいいじくり倒して、他にもいろいろ試してみます・・・
プレプリント紙への印刷やめたい
>>340
そんなソフトあるんですね!サーバ版たけぇ・・
>>342
クライアントサイドのレンダリングはちょっときついです、環境バラバラなんで
>>343
自分にはグラフィックをちょうどよくテンプレにはめる設計力がなさげ
>>345
折り返しするんですよね。。
まあそれ以前使うフォントが特殊でつまずいたっていうのがありましたが
- 347 :デフォルトの名無しさん :2020/10/20(火) 13:50:07.09 ID:d69BLAaZa.net
- >>346
クライアントサイドじゃないよ
サーバーでヘッドレスブラウザ使ってPDF出力してレスポンス返すだけ
- 348 :デフォルトの名無しさん :2020/10/20(火) 14:00:01.34 ID:0/xBmjm30.net
- >>346
Excelで帳票のテンプレート作ってそれをPDFにできるんでめっちゃ楽
みんな慣れてるでしょExcel帳票w
- 349 :デフォルトの名無しさん :2020/10/20(火) 15:28:40.52 ID:N2Y7+9Dy0.net
- >>347
そうなんですね!ちょっと見てみます
>>348
Excel帳票大好きです(大嫌いです)
- 350 :デフォルトの名無しさん :2020/10/20(火) 16:09:37.19 ID:CqCKSidt0.net
- C♯が現在最強言語らしいので勉強したいのですが
マイクロソフトはVB6の開発を打ち切ってプログラマを裏切った過去があるそうで
なかなか踏み切れずにいます。。。
C♯は20年後も開発が続いてると思いますか?
教えてエロい人
- 351 :デフォルトの名無しさん :2020/10/20(火) 16:14:23.52 ID:Nb9oJ8Mwd.net
- そんな先のことなんざわからん
確実に言えるのは今勉強している技術を20年後も変わらずに使い続ける前提でいるような技術者は居ない(と信じたい)
生き残ってるなら初期学習がない分少し楽かもしれないけど、新しいのが台頭してくりゃそちらを新たに学習するだけ
- 352 :デフォルトの名無しさん :2020/10/20(火) 16:25:01.94 ID:CqCKSidt0.net
- そうですか。先のことは誰にもわからないですよね。
逆に20年後も確実に主力な言語ってPythonくらいかな?
- 353 :デフォルトの名無しさん :2020/10/20(火) 16:25:26.41 ID:cR623l/E0.net
- >>350
開発が続いてる言語の新しい技術についていくような人はどんな言語でもすぐ学べる
- 354 :デフォルトの名無しさん :2020/10/20(火) 16:31:38.91 ID:CqCKSidt0.net
- >>353
新しい技術について行く用意はあるんですが
言語の基本的な記述などのルールが変わるのが面倒なんですよね。。。
- 355 :デフォルトの名無しさん :2020/10/20(火) 16:45:13.07 ID:0/xBmjm30.net
- C#ほど後方互換性を重要視している言語ってなかなかないと思うけどね
- 356 :デフォルトの名無しさん :2020/10/20(火) 16:48:10.12 ID:CqCKSidt0.net
- >>355
そうなんですか。ではC♯を勉強すれば基本記述まで変更なんて
事はしばらくはなさそう?ですね。。。
勉強してみます!!
- 357 :デフォルトの名無しさん :2020/10/20(火) 17:16:01.37 ID:nipGGPAZa.net
- >>354
勉強が1ヶ月続くかどうかも怪しい奴が20年後の心配をするのは馬鹿げているぞ。
そんなことじゃ、何かを勉強し始めたとしてもことあるごとに足踏みして前進できない未来しか見えない。
- 358 :デフォルトの名無しさん :2020/10/20(火) 18:10:04.06 ID:kSL2D2eBa.net
- OfficeのマクロはまだVBなんだっけ?
- 359 :デフォルトの名無しさん :2020/10/20(火) 18:13:11.84 ID:Nb9oJ8Mwd.net
- そだね
python使えるようにするみたいな話はあったけど進行してるのかな?
- 360 :デフォルトの名無しさん :2020/10/20(火) 18:15:13.55 ID:ATqqkPAW0.net
- >python使えるようにするみたいな話
頓挫したぞ
- 361 :デフォルトの名無しさん :2020/10/20(火) 19:53:46.10 ID:c2x7XoZLd.net
- 贅沢言わないから.NETにpython入れてVisualStudio(codeじゃない方)でサポートしてくれるだけでいいのに
- 362 :デフォルトの名無しさん :2020/10/20(火) 21:29:38.81 ID:j1S9Ds0j0.net
- それIronPythonと何が違うの?
- 363 :デフォルトの名無しさん :2020/10/20(火) 21:48:49.93 ID:iUu5GsdY0.net
- >>358
まだExcelのWeb版だけみたいだけどJavaScript/TypeScriptが使える
マクロじゃなくアドインならC#やF#みたいなCLR言語ならなんでも可だったかと
- 364 :デフォルトの名無しさん :2020/10/20(火) 22:16:42.30 ID:jgnvePEX0.net
- ChromeベースのWebView2がやっとラウンチしたようだね。まだ.netじゃ使えないが
Previewで確認したところマウスの戻るボタンが使えるのがいい所だな
- 365 :デフォルトの名無しさん :2020/10/20(火) 22:51:38.52 ID:kSL2D2eBa.net
- >>363
へーそれは知らんかったありがと。
- 366 :デフォルトの名無しさん :2020/10/20(火) 23:36:15.59 ID:CqCKSidt0.net
- >>362
IronPythonって2.7っしょ
使えないな。。。
- 367 :デフォルトの名無しさん :2020/10/21(水) 00:36:52.32 ID:0KDGF23Y0.net
- なんかうろ覚えなんだが
こういう非同期処理の書き方ってちゃんと動いたっけ?
if(!locked){
locked = true;
await xxx.Task;
locked = false;
}
async/awaitは同じスレッドに戻るからこんな単純なロックでも問題無いって昔判断したような記憶はある
- 368 :デフォルトの名無しさん :2020/10/21(水) 09:14:18.23 ID:hl6LkBs90.net
- ソースの一行単位でスキがうまれるので無理じゃね
ifとlocked=trueの間に実行されてる
- 369 :デフォルトの名無しさん :2020/10/21(水) 09:16:03.92 ID:hl6LkBs90.net
- 1行単位どころじゃなかった
意味不明なところでも割り込みあるわw
- 370 :デフォルトの名無しさん :2020/10/21(水) 09:43:40.30 ID:eNSg6QZpH.net
- 四捨五入の結果がおかしいのって自分だけかな・・・
decimal v = -0.0195m;
decimal rounded = Math.Round(v, 2, MidpointRounding.ToPositiveInfinity);
Console.WriteLine(rounded);
ってすると、小数点2桁までになるよう(小数点3桁目を)四捨五入するので
-0.02になるはずなのに、結果が-0.01になっちゃうんですけど・・・
- 371 :デフォルトの名無しさん :2020/10/21(水) 09:56:42.42 ID:lxmGvu010.net
- >>367
Taskの中でlockする
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/lock-statement
- 372 :デフォルトの名無しさん :2020/10/21(水) 12:02:28.19 ID:sg7OOy0L0.net
- >>367-369
awaitで同期取ってるから問題ない
>>370
To Positive Infinityだから正数寄りになる
ゼロを基準にしたければMidpointRounding.AwayFromZeroを指定する
await(待つ)もそうだが、変な日本語のリファレンスよりも明快な解説が変数名に詰まってるんだからお前らはまずその単語をGoogle翻訳に掛けるべきだと思うわ
- 373 :デフォルトの名無しさん :2020/10/21(水) 12:16:57.36 ID:hl6LkBs90.net
- >>372
いや
if(!locked){
実行
別タスクlockedのfalseを見て処理開始
locked = true;
別タスク割り込まれたら困る処理開始
await xxx.Task;←別タスクと衝突
locked = false;
}
起こるじゃん
- 374 :デフォルトの名無しさん :2020/10/21(水) 13:03:41.62 ID:eNSg6QZpH.net
- >>372
-0.01と-0.02の中間(MidPoint)である-0.015のときの丸め方(Rounding)として
「MidpointRounding.ToPositiveInfinity」を指定したつもりだったのですが・・・
MidPointじゃないときにも「ToPositiveInfinity」が適用されちゃうんですね・・・
JavaScriptのMath.Round()とおなじような(四捨五入される桁の数字が5の場合に
正の無限大の方向で丸める)四捨五入をしたかっただけなのですが、
関数を自作しないとだめみたいなので自作します。
お騒がせしました。
- 375 :デフォルトの名無しさん :2020/10/21(水) 13:30:40.39 ID:UaTtUbsy0.net
- await絡みのときは、排他制御はSemaphoreSlim使うのが定番ですよ
https://www.atmarkit.co.jp/ait/articles/1411/11/news117.html
- 376 :デフォルトの名無しさん :2020/10/21(水) 13:44:12.17 ID:RtxzEAIBa.net
- 四捨五入:わかる
銀行丸め:わかる
正の無限大の方向で丸める:何の意味があんのそれ?
- 377 :デフォルトの名無しさん :2020/10/21(水) 13:52:03.73 ID:xBoANC0iM.net
- 切り上げって知ってる?
- 378 :デフォルトの名無しさん :2020/10/21(水) 14:15:10.32 ID:sg7OOy0L0.net
- >>374
それならこんな感じで簡単に作れるから頑張れ
static decimal[] table = new decimal[]{1E0m, 1E1m, 1E2m, 1E3m, 1E4m};
static decimal Round(decimal num, int pow) => Decimal.Floor((num * table[pow]) + 0.5m) / table[pow];
decimal num = Round(-0.015m, 2); // -0.01
>>373
普通にメインスレッドから叩いていればこうなるからな
if(!locked){ // thread 1
locked = true; // thread 1
await xxx.Task; // thread 2
locked = false; // thread 1
}
- 379 :デフォルトの名無しさん :2020/10/21(水) 14:19:07.15 ID:lJjSrE40d.net
- 正負どっち方向に動くかわかんない変換より確実に方向がわかっている変換が必要なことはあるよ
- 380 :デフォルトの名無しさん :2020/10/21(水) 14:26:27.71 ID:RtxzEAIBa.net
- -2.4 → -2
-2.5 → -2
-2.6 → -3
こういう丸めが意味を持つケースが一般的とは思えない
>>377
知らないのは君だと思うよ
- 381 :デフォルトの名無しさん :2020/10/21(水) 14:32:15.81 ID:lJjSrE40d.net
- 5捨6入って特定に分野では一般的な計算方法では?
俺は使わないけど
- 382 :デフォルトの名無しさん :2020/10/21(水) 14:33:15.98 ID:RtxzEAIBa.net
- >>381
3.5 → 4
なんだよ
- 383 :デフォルトの名無しさん :2020/10/21(水) 14:47:36.44 ID:8k52si4D0.net
- それでもう.NET5使ってええの?
- 384 :デフォルトの名無しさん :2020/10/21(水) 14:52:13.96 ID:v0oiVQF00.net
- いいよ
- 385 :デフォルトの名無しさん :2020/10/21(水) 15:00:31.64 ID:5E7rZ8hS0.net
- >>378
それが問題になるのは、そのifブロックが複数スレッドで実行されたときだからな
- 386 :デフォルトの名無しさん :2020/10/21(水) 16:37:46.89 ID:APVpE4AA0.net
- >>378
はじめのlockedをみてるガードは別スレッドからのアクセスに対して無力だよ
そこはおk?
>>378の番号で言ったらThread3以上のスレッドからの話ね
- 387 :デフォルトの名無しさん :2020/10/21(水) 17:36:18.89 ID:sg7OOy0L0.net
- >>386
つまりこういうのを危惧してるのか?
Task.Run(() => {
if(!locked){
locked = true;
await xxx.Task;
locked = false;
}
});
だとしたらこんなのは仮定に持ち出すのがそもそも間違い
それ言い出したらフィールド操作するあらゆるメソッドで「並列で呼び出される可能性がある」とlock()で括らなきゃいけなくなってしまう
- 388 :デフォルトの名無しさん :2020/10/21(水) 17:53:44.86 ID:lxmGvu010.net
- ifブロックがシングルスレッドでしか実行されない状況で
lockが必要な状況ってどういうの?
- 389 :デフォルトの名無しさん :2020/10/21(水) 17:55:56.87 ID:5E7rZ8hS0.net
- 元の質問がマルチスレッドでのロックに関する質問だと思うのだがな
このコードはスレッドセーフですか?
いいえ危険です
みんなが回答してるのはそういう事
このスレの趣旨や質問者のレベルを考えると妥当な仮定と回答だと思うぞ
- 390 :デフォルトの名無しさん :2020/10/21(水) 17:58:26.66 ID:5E7rZ8hS0.net
- >>388
再入すればやばい気がしないでもない
- 391 :デフォルトの名無しさん :2020/10/21(水) 18:02:52.19 ID:sg7OOy0L0.net
- 元の質問って>>367だろ?
> async/awaitは同じスレッドに戻るからこんな単純なロックでも問題無い
「同じスレッドに戻る」を認識してるなら疑いなくtrueやん
ここで「でも別スレッドで動かしたら危険」と言うのは質問の前提を崩してる
- 392 :デフォルトの名無しさん :2020/10/21(水) 18:14:17.17 ID:MqdNiLmu0.net
- 崩してないな。
- 393 :デフォルトの名無しさん :2020/10/21(水) 18:19:06.78 ID:5E7rZ8hS0.net
- そのawaitしてるのはasyncメソッドだから、メインスレッドからのみ呼ばれるとは限らん
つまりもどるのがメインスレッドだとは限らん
というの理解しているのならまあ大きなお世話だと言えなくもないが
あとフォームアプリじゃなければ、もとのスレッドに戻るも保障されないけどな
- 394 :デフォルトの名無しさん :2020/10/21(水) 19:06:44.50 ID:lxmGvu010.net
- >>390
なるほど
ロックって言葉でちょっと意図を勘違いしてた
タスクが実行中ならもう1回呼ばれても実行しないようにしたいってことだったのか
タスクの中には他のスレッドと競合する処理はなく
ifブロックはUIスレッドでのみ実行されるという前提ならいいんじゃねって気がする
- 395 :デフォルトの名無しさん :2020/10/21(水) 19:15:16.66 ID:/GjtxlMb0.net
- そもそも呼ばれないようにしろ
- 396 :デフォルトの名無しさん :2020/10/21(水) 19:22:35.51 ID:sg7OOy0L0.net
- >>393
何か必死で調べたくさいこと言ってるが
asyncだから、って下りに無知が現れてるな
- 397 :デフォルトの名無しさん :2020/10/21(水) 20:02:51.66 ID:GqMp+oa10.net
- >>367 の質問自体は「問題ない」が回答だけど、
そもそも質問の前提に危うさがあるんじゃない?
って感じではダメなんだろうか。
- 398 :デフォルトの名無しさん :2020/10/21(水) 21:32:30.66 ID:38qDfhYJM.net
- >>339
まだ帳票開発したことないけど、やる機会があればDocurainってサービス使ってみようかなって思ってる
- 399 :デフォルトの名無しさん :2020/10/24(土) 21:17:36.19 ID:skFEsPcd0.net
- for文で書き始めて、配列から要素を取り出すだけだからforeachに書き換えて、でもやっぱりiが必要になってfor文に戻すこと多くない?
- 400 :デフォルトの名無しさん :2020/10/24(土) 21:32:32.75 ID://9fx+gF0.net
- Index付きのSelect句で事足りる
- 401 :デフォルトの名無しさん :2020/10/24(土) 21:50:33.27 ID:878uww5f0.net
- MoreLinqのIndex()がKeyValuePair<int, TSource>を返してくれる
簡単だから自分で実装してもいいけどライブラリ使うほうが管理含めて楽
foreach (var (i, x) in foo.Index()) {
Console.WriteLine($"{i}: {x}");
}
- 402 :デフォルトの名無しさん :2020/10/24(土) 21:55:59.78 ID:skFEsPcd0.net
- そうなんだ
- 403 :デフォルトの名無しさん :2020/10/24(土) 22:19:40.87 ID:VOTutQQJ0.net
- >>401
いや、これ書くぐらいならforで書くよな
- 404 :デフォルトの名無しさん :2020/10/24(土) 23:15:08.92 ID:GpR1sqnP0.net
- >>403
たしかに
- 405 :デフォルトの名無しさん :2020/10/24(土) 23:52:47.91 ID:878uww5f0.net
- またLinqバトル始まっちゃう感じ?
- 406 :デフォルトの名無しさん :2020/10/25(日) 00:14:13.24 ID:AkfEJdVF0.net
- (index, value)と(value, index)でバグを作ってしまったから
Index拡張メソッドは控えることにした
- 407 :デフォルトの名無しさん :2020/10/25(日) 00:16:36.51 ID:wq/6wJQN0.net
- >>406
それあるわ
他人のプログラムが前者で、自分は後者派だったからお互いえ?え?となったわ
- 408 :デフォルトの名無しさん :2020/10/25(日) 00:24:48.70 ID:lDlwJ32m0.net
- そもそもforeachなんて作ったやつの脳みそ腐ってんだから仕方ない
何回回すのかもコードからわかんねーし
どう回したいのか変わると一気に産廃
そもそもforeachなんて産廃コード使うなよ
変更に激弱だろ
あ、インデックスN番目は処理したくない
→産廃
あ、後から処理しないと
→産廃
あ、奇数と偶数で処理変えないと
→産廃
あ、こっちの配列もみながらいっしょに処理しないと
→産廃
もうあれね
コードレビューでforeachを見つけたら
修正させるぐらいでいい
- 409 :デフォルトの名無しさん :2020/10/25(日) 07:44:18.56 ID:yVRP623B0.net
- インデックスを考えるような用途でforeach使うほうが悪いだろ。
偶数と奇数で処理変えるのも意味わからんし、イテーレタを一つずつって変更に強いと思うけど。
全部Linqでなんとかなることだけどさ。
- 410 :デフォルトの名無しさん :2020/10/25(日) 08:02:57.19 ID:bN5bdnqa0.net
- 紅白に塗るとかあるよね
- 411 :デフォルトの名無しさん :2020/10/25(日) 09:10:32.90 ID:WAUUQolqM.net
- 偶数の場合こう処理します!
プログラム解説サイトとかでありがち。
実務でそういうのに出くわしたことほぼない。
- 412 :デフォルトの名無しさん :2020/10/25(日) 09:22:04.05 ID:lDlwJ32m0.net
- >>411
あるよ
datagridviewとか見にくいから偶数と奇数で色変えてくれってありがちじゃん
- 413 :デフォルトの名無しさん :2020/10/25(日) 09:24:16.14 ID:lDlwJ32m0.net
- 2行でワンセットになるデータで
上側だけ、下側だけって処理するときもお世話になるじゃん
どんだけ組んだことないんだよ
- 414 :デフォルトの名無しさん :2020/10/25(日) 09:26:32.27 ID:XkKy2l3/0.net
- WPFみたいな割と最近のライブラリなら、
自前で偶数判断なんてせず交互に色を変えてくれる。
- 415 :デフォルトの名無しさん :2020/10/25(日) 09:36:22.60 ID:w//Xf3xfd.net
- >>412
それはデータ行に対してやることじゃない。
行に対して表示非表示の制御加えるだけで破綻する。
表示中の画面の描画関数でやることであって、行をイテレートしてやることじゃない。
>>413
2行1セットなら、そのクラスを作って、1インスタンスごとに制御するのが王道でしょ。
どんだけ空想上の「組んだこと」で話してんの?それともボンクラなの?
- 416 :デフォルトの名無しさん :2020/10/25(日) 09:37:37.76 ID:lDlwJ32m0.net
- >>415
え?いやでも必要じゃん
そんときforeach使わないよね
- 417 :デフォルトの名無しさん :2020/10/25(日) 09:40:44.86 ID:w//Xf3xfd.net
- >>416
必要じゃないし、パース時点ではパーサ使うし、中では極力foreach使うよ。
2行で1アイテムが3行で1アイテムになったときにModulo全部変えてくの?
頭悪すぎるコーディングでしょ。
- 418 :デフォルトの名無しさん :2020/10/25(日) 09:47:07.55 ID:lDlwJ32m0.net
- >>417
は?
いや客は単に奇数と偶数行で色変えてくれって言ってるだけやで
- 419 :デフォルトの名無しさん :2020/10/25(日) 10:01:32.46 ID:yVRP623B0.net
- >>418
画面側でやること。
描画関数には何行目かそもそも渡ってくるからループなんぞする必要もないだろ。
それを客が言ってるからってデータでやるのは手早くて汚い方法取ってるか、それしか知らないって事じゃん?
- 420 :デフォルトの名無しさん :2020/10/25(日) 10:29:58.35 ID:j2oMvxGH0.net
- >>419
うーん、確かにdatagridviewで偶数と奇数だとそれだけだなw
俺が悪かった
- 421 :デフォルトの名無しさん :2020/10/25(日) 10:32:46.22 ID:j2oMvxGH0.net
- ループで奇数と偶数は別の描画ライブラリ使っててそっちの話だった
すまん
- 422 :デフォルトの名無しさん :2020/10/25(日) 10:35:11.15 ID:yVRP623B0.net
- なんか俺も言い方悪かったな。すまん。
- 423 :デフォルトの名無しさん :2020/10/25(日) 10:36:49.62 ID:MD0uz1BLa.net
- 最近のC#ならTupleで書けるからindexつきSelectのほうが短く書けて楽かな
foreach (var (item, index) in items.Select((x, i) => (x, i)))
{
Console.WriteLine($"{index}: {item}");
}
for (var index = 0; index <= items.Length; i++)
{
var item = items[i];
Console.WriteLine($"{index}: {item}");
}
後者の書き方に仕込まれてるバグを目視だけで見つけるのはやっぱりしんどい
ていうかDataGridViewなら奇数行・偶数行のスタイルをそれぞれ別に設定できたはず
なんでそれ使わないでロジックで制御するんだろう
- 424 :デフォルトの名無しさん :2020/10/25(日) 10:46:49.59 ID:WAUUQolqM.net
- >>412
そんな偶数奇数で色変えるとかはコントロール側で制御して、各機能では意識せずに作れるようにしてる。
有償のものは標準でそういう機能ついてる。
あなたのところは各機能でそんなことさせてるの?
ほとんどのシーンでforeachは使えるしforより可読性も高い。
C上がりのひとは頑なにfor文つかうよね。
- 425 :デフォルトの名無しさん :2020/10/25(日) 10:48:09.55 ID:WAUUQolqM.net
- とか書いてたら話終わってた…
- 426 :デフォルトの名無しさん :2020/10/25(日) 10:57:42.82 ID:ad5S/9r+d.net
- BASIC上がりの俺は頑なにforを使う
- 427 :デフォルトの名無しさん :2020/10/25(日) 11:43:12.08 ID:6wSnm1o40.net
- フォームアプリを作成していて、
作ったタブページを一時的に表示させないようにしたいのですが
(開発者用なのでユーザーから隠したいタブページ)
invisible設定とかないのでしょうか?
- 428 :デフォルトの名無しさん :2020/10/25(日) 11:54:01.85 ID:bN5bdnqa0.net
- visibleをfalseにしる
- 429 :デフォルトの名無しさん :2020/10/25(日) 13:16:25.56 ID:FzqccguI0.net
- elisp上がりだとdolistか
- 430 :デフォルトの名無しさん :2020/10/25(日) 13:18:15.58 ID:MD0uz1BLa.net
- >>427
https://dobon.net/vb/dotnet/control/tabpagehide.html
- 431 :デフォルトの名無しさん :2020/10/25(日) 13:20:19.02 ID:M7kzCKlu0.net
- >>406
拡張メソッドの問題ではないような・・・
それはいいとして順番だけど
map/reduce系のAPIはindexがオプショナルなので引数の順番は(value, index)が一般的で
index付きのtuple的なもの返す場合は(index, value)で返すほうが一般的
自分の知ってる言語はどれもそうなってるよ
- 432 :デフォルトの名無しさん :2020/10/28(水) 07:40:35.09 ID:qnSD+cEJ0.net
- C#で作られた2つの実行中プログラムの間でデータの受け渡しをするならどういう方法が考えられますか?
csvやデータベースくらいしか思いつかず
- 433 :デフォルトの名無しさん :2020/10/28(水) 08:05:19.87 ID:68kYXJV6d.net
- >>432
ポート開けて通信する。
プロセス間通信する。
のどっちかかな。
Core化するなら、ポート開けて通信したほうが良いかも。
embedIOとか使うとhttpサーバがびっくりするほど簡単に立てられるよ。既存アプリの上に。
- 434 :デフォルトの名無しさん :2020/10/28(水) 08:10:45.70 ID:geAq98MI0.net
- GUI同士ならSendMessageとかも
- 435 :デフォルトの名無しさん :2020/10/28(水) 08:41:56.32 ID:cCglm1Caa.net
- >>432
小さいデータならソケットやパイプ
大きいデータなら共有メモリ
スピードを問われないならファイルやDBでもいい
- 436 :デフォルトの名無しさん :2020/10/28(水) 09:08:45.24 ID:Nt7id6vD0.net
- Web API
- 437 :デフォルトの名無しさん :2020/10/28(水) 09:13:36.29 ID:DyAY2wG10.net
- WCFの後継とかどうすりゃいんだ
- 438 :デフォルトの名無しさん :2020/10/28(水) 09:22:47.39 ID:Nt7id6vD0.net
- >>437
https://github.com/CoreWCF/CoreWCF
- 439 :デフォルトの名無しさん :2020/10/28(水) 09:28:12.57 ID:3bmwn6Ba0.net
- WCF 開発者に gRPC を推奨する理由
https://docs.microsoft.com/ja-jp/dotnet/architecture/grpc-for-wcf-developers/why-grpc
- 440 :デフォルトの名無しさん :2020/10/28(水) 22:35:34.95 ID:bWE1nSHc0.net
- うちにはRemoting使ってて詰んでるレガシーがある
- 441 :デフォルトの名無しさん :2020/10/29(木) 08:48:31.11 ID:GkpRv4Lwa.net
- MSMQという手も
- 442 :デフォルトの名無しさん :2020/10/29(木) 12:27:01.55 ID:VHRGFK1gM.net
- MQTT
- 443 :デフォルトの名無しさん :2020/10/29(木) 19:28:53.48 ID:obW6sm8G0.net
- >>435
共有メモリというのは知らなかったです
勉強してみます
ありがとうございます
- 444 :デフォルトの名無しさん :2020/10/29(木) 20:32:35.12 ID:ytciXGtBp.net
- お前が好きだと今日言うメモリー
気持ちを交換共有メモリー
- 445 :デフォルトの名無しさん :2020/10/29(木) 21:27:35.00 ID:fAmed0Klr.net
- 動的なJsonを作成したいのですが、いい方法ありませんか?
今考えてるのは
1. Jsonシリアライズ用クラスを用意(複数)
2. 処理部で使用するタイミングで1.クラスnew
3. 2.でnewしたクラスのみ匿名型オブジェクトに突っ込む
4. 3.をシリアライズ
これで一応は出来るんですが、3.で分岐多くなるのが非常に汚くて。
- 446 :デフォルトの名無しさん :2020/10/29(木) 21:28:58.34 ID:fAmed0Klr.net
- できれば使用したタイミングで、都度匿名型に追加できればいいんですが、実装方法わからず…
- 447 :デフォルトの名無しさん :2020/10/29(木) 21:32:20.78 ID:fAmed0Klr.net
- 都度匿名型に追加ってのはあくまでイメージですはい。
- 448 :デフォルトの名無しさん :2020/10/29(木) 21:37:54.98 ID:w+K6PrrE0.net
- DynamicObjectとか使えばよかったような
- 449 :デフォルトの名無しさん :2020/10/29(木) 21:45:46.98 ID:HAxtGf170.net
- いまいちよく分からんが、Dictionary<string, object>だとダメなの?
- 450 :デフォルトの名無しさん :2020/10/29(木) 22:08:26.61 ID:fAmed0Klr.net
- >>448
あ、何かできそうな予感。試してみます。
>>449
使用の度にAddすればって事ですね。
…何かこれもできそうな予感…試してみます。
- 451 :デフォルトの名無しさん :2020/10/29(木) 22:56:17.00 ID:28O5aXgi0.net
- >>426
Python が最初だとどうなるんだろうな
- 452 :デフォルトの名無しさん :2020/10/30(金) 05:36:06.93 ID:Of4L3rez0.net
- スタティックライブラリーを使うためDLLにしているのだが、関数ポインタを引数にする関数があって困っています。
C#の関数をその関数ポインタに結びつける方法ありますか?
- 453 :デフォルトの名無しさん :2020/10/30(金) 07:28:47.86 ID:NoXL5vik0.net
- >>452
関数ポインタ引数に対してはdelegateをそのまま渡せばいいよ
LPCTSTR引数に対してstringをそのまま放り込んでも成立するのと同様にdelegateもPVOIDとして解釈される
つまりそのDLLで使う関数の型のdelegate型を作って渡せば良いだけ
- 454 :デフォルトの名無しさん :2020/10/30(金) 07:32:51.69 ID:NoXL5vik0.net
- ちなみにC#9だか10からは生の関数ポインタも扱えるって聞いた
- 455 :デフォルトの名無しさん :2020/10/30(金) 09:43:54.51 ID:Of4L3rez0.net
- >>453
ありがとうございます。
- 456 :デフォルトの名無しさん :2020/10/30(金) 09:48:27.53 ID:+BFmFpNo0.net
- 関数ポインタをDLL側が保持する(寿命が関数から返ってくるまでより長い)場合は
マネージ側もその間そのdelegateインスタンスを保持しとかないとだめだぞ
- 457 :デフォルトの名無しさん :2020/10/30(金) 12:16:19.25 ID:7MkyV1CpF.net
- >>445
msgpack
- 458 :デフォルトの名無しさん :2020/10/30(金) 23:02:16.07 ID:YXzIJ61G0.net
- >>454
どどど、どう書くの?
- 459 :デフォルトの名無しさん :2020/10/31(土) 12:17:23.59 ID:8cswqFVg0.net
- >>458
https://ufcpp.net/blog/2020/6/cs9vs16_7p3/
- 460 :デフォルトの名無しさん :2020/10/31(土) 12:27:36.76 ID:fxcwqRC2F.net
- >>459
https://www.youtube.com/watch?v=aDXHl3S8oik
- 461 :デフォルトの名無しさん :2020/10/31(土) 20:35:43.78 ID:jPO/JqMva.net
- 最近最新版がプレリリースされたwebView2って、C#ではまだ使えないんでしょうか?
https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/gettingstarted/winforms
上記サイトに習ってnugetからインストールし、1日いろいろ試して全く動作しませんでした。
ソリューションエクスプローラーの参照の、webView2をダブルクリックすると、「このプロジェクトは利用不可能き、またはビルドされていないため、オブジェクトブラウザで表示できません」と表示されます。
webView2もVisualStudioもMicrosoft Edgeも最新版をインストールしてもダメでした。
- 462 :デフォルトの名無しさん :2020/10/31(土) 20:37:54.93 ID:jPO/JqMva.net
- 間違えました。
「このプロジェクトは利用不可能か、またはビルドされていないため、オブジェクトブラウザでは表示できません。」の間違いです。
- 463 :デフォルトの名無しさん :2020/10/31(土) 20:40:31.48 ID:4IwElBvx0.net
- WindowsFormsを勉強しはじめたんだけど
テキストボックスに処理の状況を逐一表示させたい場合ってどうやるのが正しいやり方?
とりあえずこんな感じで作ってみたら動くけどなんか違う気がする
https://ideone.com/o3Agp4
- 464 :デフォルトの名無しさん :2020/10/31(土) 20:55:29.78 ID:Pj54f0iv0.net
- ログ的な事をやりたいんだったらListBox使う方が良いよ
一定行数に達したら先頭(最終)行を削除とかも簡単に実装できる
- 465 :デフォルトの名無しさん :2020/10/31(土) 21:00:31.63 ID:+32PkI4zM.net
- >>463
allocconsole してconsole に出力するの吉
- 466 :デフォルトの名無しさん :2020/10/31(土) 21:00:33.78 ID:1joLaKYt0.net
- >>463
それでも良いと思うけどConsole.WriteLineみたいに強制改行関数作っといたら?
あとC#自体のアドバイスになるけど、"処理しています……" + "\r\n"は+いらないから"処理しています……\r\n"で良いし
変数挟むときは$を付けて{}で囲む$"あと{i}秒\r\n"って書き方は各プログラミング言語の中でもトップクラスに便利だから覚えておいた方が良い
- 467 :デフォルトの名無しさん :2020/10/31(土) 21:34:45.65 ID:2P+i0kOV0.net
- >>463
>>466の言うように文字列とか送るだけで表示するメソッド作っておくといろいろ後付けで改変しやすくなる
RichTextBox使えば状況に応じて文字列ごとに色やフォントを変えることもできるし
あとAppendTextは自動でTextBoxをスクロールしてくれる便利なものだけどメソッドの先頭で念のためFocus()かSelect()しておくと確実
フォーカス当たってないと自動スクロールしてくれないので
- 468 :デフォルトの名無しさん :2020/10/31(土) 21:59:39.41 ID:b+5qg5vxa.net
- >>463
何に不満や違和感を感じてるのか具体的に言わないと誰も答えようがないよw
プログラミングの分野に限らず他人に自分の意図を正確に伝えることってほんと大事
- 469 :デフォルトの名無しさん :2020/10/31(土) 22:07:28.55 ID:1TbrihkJ0.net
- >>463
その方法が正攻法だと思って良い
あとは他の人のアドバイスのように便利なメソッド作って使いやすくすればいいと思う
- 470 :デフォルトの名無しさん :2020/10/31(土) 22:21:19.47 ID:4IwElBvx0.net
- >>464
ありがとう。使ってみる
>>465
今回やりたい事は違うけどこれはこれで知りたかった事だ。ありがとう
>>466
改行用の関数をForm1の方で作っといてdelegateかfuncで処理用クラスに渡す感じかな?
$マークのやつそういう使い方だったんかサンクス
あと改行だけ分けたのは元のコードで「str + “¥r¥n”」の形だったのを直した名残だわ
>>467
フォーカス当たってないとスクロールしてくれないのか
なんか動いてくれないと思ってたんだよな
- 471 :デフォルトの名無しさん :2020/10/31(土) 22:39:35.75 ID:syXSgGXN0.net
- >>470
積極的にコンソールを使う意図が無いのであれば、AllocConsoleよりも
System.Diagnostics名前空間のDebug.WriteLine()やTrace.WriteLine()を勧める
VSのデバッグ出力画面やDebugView++等のアプリで見れる
- 472 :デフォルトの名無しさん :2020/10/31(土) 23:14:04.52 ID:+32PkI4zM.net
- コンソールにはコンソールのメリットが
あるからなぁw
- 473 :デフォルトの名無しさん :2020/11/01(日) 00:44:45.18 ID:TS2lQNKS0.net
- >>461
本当に書かれている通りにやったの?
・WebView2はプレリリース版でなければならない(今だと1.0.674-prereleaseかな?)
・EdgeはCanary版でなければならない
なんとなく、WebView2のプレリリース版でなく安定版の方を入れてそうな予感
- 474 :デフォルトの名無しさん :2020/11/01(日) 08:45:28.58 ID:R1ZyiuLQa.net
- >>473
ありがとうございます!
通常版のedgeをアンインストールして、edgeのcanary版をインストールして、再度通常版のedgeをインストールしたらできました!
2種類のedgeがインストールしてないと動作しないんですね。
webview2を使う場合は、全ユーザーも、canary版のedgeをインストールしていないと使用できないんでしょうか?
- 475 :デフォルトの名無しさん :2020/11/01(日) 16:17:54.64 ID:hv15RbEG0.net
- まあまだ.NET版はpereleaseだからな
- 476 :デフォルトの名無しさん :2020/11/01(日) 18:01:16.91 ID:CXNCiFbu0.net
- WinUI版のWebView2使ってみたが、マウスの戻るボタンが効いたのに感動したわ
コレをどうにかするためにどんだけ苦労したことか
- 477 :デフォルトの名無しさん :2020/11/02(月) 07:35:20.34 ID:kZXAdCJzM.net
- クラスの自動プロパティについて質問
自動プロパティがない頃は、頭にアンダースコア(_hogeHoge)をつけたprivate変数を用意しておいて、
コンストラクタやメソッドではそちらを読み書きしていた。
でも自動プロパティができたら、アンダースコアのprivate変数は不要になった。
これまで何も考えずに、コンストラクタやメソッドではプロパティそのもの(HogeHoge)に対して読み書きしているんだが、これでいいんだろうか…
それともクラス内部で読み書きが発生する場合は自動プロパティ使わないほうがいい?
- 478 :デフォルトの名無しさん :2020/11/02(月) 08:40:37.73 ID:J1SwCvmZ0.net
- getterに副作用持たせてるの?
- 479 :デフォルトの名無しさん :2020/11/02(月) 08:54:07.90 ID:kZXAdCJzM.net
- >>478
何も考えずにpublic string HogeHoge{get;set;}しか書いてない
- 480 :デフォルトの名無しさん :2020/11/02(月) 12:37:17.75 ID:NZsZuJ1ia.net
- >>477
何を悩んでるのか分からない。
同じ機能なら簡潔に書けるほうがいいに決まってるので
自動実装プロパティーで必要な機能が過不足なく実現できるなら
自動実装プロパティーを使わない理由はないんじゃないの?
別にpublicやinternalなメンバーにクラス内からアクセスしてはいけないなんて変なルールはないよw
- 481 :デフォルトの名無しさん :2020/11/02(月) 12:39:05.37 ID:kZXAdCJzM.net
- >>480
そのそんなルールはないよというのが聞きたかった。
ありがとう。
- 482 :デフォルトの名無しさん :2020/11/02(月) 13:48:19.73 ID:iMasp6IMD.net
- c#にも、cでいうプログラミング言語Cみたいなバイブルと言える本はありますか?
- 483 :デフォルトの名無しさん :2020/11/02(月) 17:57:45.09 ID:9N3uvmex0.net
- どんどん言語がアップデートされていってるからなあ
- 484 :デフォルトの名無しさん :2020/11/02(月) 18:02:08.07 ID:kfCt0hOOd.net
- googleかmsか
ufcppでもいいと思うけど
- 485 :デフォルトの名無しさん :2020/11/02(月) 18:19:04.77 ID:8cdEIkcV0.net
- K&Rみたいな読んでるとドヤれる(気がする)ようなのはC#ではないよね
- 486 :デフォルトの名無しさん :2020/11/02(月) 19:33:36.63 ID:QcicrBn8M.net
- ちょっと前までrtfでインストールされてたじゃん
- 487 :デフォルトの名無しさん :2020/11/02(月) 21:55:02.37 ID:KMJSmLX80.net
- >>482
「プログラミング.NET Framework 第4版」Jeffrey Richter 著、藤原 雄介 訳
- 488 :デフォルトの名無しさん :2020/11/02(月) 22:06:56.80 ID:8/l8UOwbr.net
- ガチの素人で趣味でプログラミングを始めました
フォントファミリー名を取得してフォントファミリー名一覧コンボボックスを作成、そのあとコンボボックスで選んだフォントファミリーの名前で横においてるテキストブロックのフォントを変えるプログラムを作ってるんですけど、選択したコンボボックスからフォントファミリー名の取得はできてると思うんですがテキストブロックのフォントが変わりません
どうすればうまくいきますか?
- 489 :デフォルトの名無しさん :2020/11/02(月) 22:27:22.35 ID:onwGyibB0.net
- pictureBox1.Image = @"パス";
PictureBoxで画像を表示している時、別の画像に切り替えるときはDisposeしてからパスを変更したほうがいいでしょうか?
- 490 :デフォルトの名無しさん :2020/11/02(月) 22:31:57.70 ID:8/l8UOwbr.net
- もしかしてフォントファミリーは文字型変数じゃ指定できないの?
- 491 :デフォルトの名無しさん :2020/11/02(月) 22:51:52.41 ID:IceSdPzo0.net
- >>490
たぶんFontFamilyの名前が間違っている
>>489
メモリが一時的に積みあがっていくけど適当なところでガーベージコレクタが動くはずだから問題ない
それはDispose()というかGC.Collect()で解決する
- 492 :デフォルトの名無しさん :2020/11/02(月) 22:54:08.63 ID:NZsZuJ1ia.net
- >>488
適当にやってみた
public Form1()
{
InitializeComponent();
cboFont.DropDownStyle = ComboBoxStyle.DropDownList;
cboFont.DisplayMember = "Name";
cboFont.Items.AddRange(FontFamily.Families);
cboFont.SelectedIndex = 0;
cboSize.DropDownStyle = ComboBoxStyle.DropDownList;
for (int i = 6; i < 81; i++) cboSize.Items.Add(i);
cboSize.SelectedIndex = 0;
EventHandler eh = (sender, e) => textBox1.Font = TextFont;
Load += eh;
cboFont.SelectedIndexChanged += eh;
cboSize.SelectedIndexChanged += eh;
}
- 493 :デフォルトの名無しさん :2020/11/02(月) 22:54:27.55 ID:NZsZuJ1ia.net
- private int TextSize
{
get
{
return (int)cboSize.SelectedItem;
}
}
private Font TextFont
{
get
{
return new Font((FontFamily)cboFont.SelectedItem, TextSize);
}
}
- 494 :デフォルトの名無しさん :2020/11/02(月) 23:36:41.20 ID:8/l8UOwbr.net
- ありがとうございます
今日はもう遅いので明日やってみます
- 495 :デフォルトの名無しさん :2020/11/02(月) 23:49:15.55 ID:onwGyibB0.net
- >>491
そうなのですね
そのままパスを変更するだけに留めます
先輩ありがとうございます!
- 496 :デフォルトの名無しさん :2020/11/03(火) 01:34:50.34 ID:qmbI+CcG0.net
- >>495
こいつVBAで荒らしていた馬鹿じゃないか?
- 497 :デフォルトの名無しさん :2020/11/03(火) 01:58:10.34 ID:jzL8Touo0.net
- >>496
VBAスレは見てないので人違いですね
- 498 :デフォルトの名無しさん :2020/11/03(火) 08:28:33.94 ID:dsOM4bkh0.net
- MahApps.MetroってC#はどうってことないがxamlがヤベえのね
- 499 :デフォルトの名無しさん :2020/11/04(水) 13:54:59.77 ID:MUmomvCg0.net
- GUIはXAMLが基本です
- 500 :デフォルトの名無しさん :2020/11/07(土) 10:45:15.58 ID:t7w6OMp4a.net
- プログラムの実行を優先して、ユーザーのマウスやキーボード操作をパソコンが受け付けないようにしたいんですが可能ですか?
- 501 :デフォルトの名無しさん :2020/11/07(土) 10:51:39.94 ID:nZ+0GoS70.net
- それをするとプログラムに(応答無し)って表示されるけど可能は可能
- 502 :デフォルトの名無しさん :2020/11/07(土) 12:17:39.90 ID:39mGoKKv0.net
- メッセージポンプして全部removeしてしまえばよろし
あかよろし
- 503 :デフォルトの名無しさん :2020/11/07(土) 12:59:34.40 ID:t7w6OMp4a.net
- >>501
応答なしと表示されても問題ありません。ボタンを押した後、プログラムの一部区間だけユーザーの操作を無効化したいです。
理由は、ダイアログボックスが表示されてからSendKeysで文字を入力する際に、他の操作によりプログラムが正常動作しない時があるためです。SendKeysしか方法がなかったのでそうしています。
- 504 :デフォルトの名無しさん :2020/11/07(土) 13:48:23.82 ID:GpP1ZiKDa.net
- >>503
SendKeysじゃなくてWin32のPostMessageかSendMessageを使うことを
考えるべきじゃないの?
SendKeysの仕様に合わせるためにそんな大鉈を振るうとかまともな考えとは思えんよw
- 505 :デフォルトの名無しさん :2020/11/07(土) 14:59:35.50 ID:6IQ4ek2K0.net
- >>500
マウスイベントとキーボードイベントをグローバルフックして、イベントをチェーンせずに握り潰す
- 506 :デフォルトの名無しさん :2020/11/07(土) 16:41:34.70 ID:cxYX5+z2p.net
- >>504
アドバイスありがとうございます。SendMessageを使ってみます。ウインドウハンドルを掴むのが難しそうですが…がんばります。
>>502>>505
すみません。初心者には難しそうです。諦めます。
- 507 :デフォルトの名無しさん :2020/11/07(土) 22:57:41.32 ID:39mGoKKv0.net
- sendを理解出来るならpeekも出来るでしょ?
- 508 :デフォルトの名無しさん :2020/11/09(月) 13:06:44.87 ID:YQs0Gheb0.net
- .NetCore3.1のWPFアプリってエントリポイント変えられないの?
WPFのエントリポイント変更でググるとApp.xamlのビルドアクションを「アプリケーション定義」から「ページ」に変更してMainメソッド作ればいいって書かれてるけど
.NET Coreだとまずそのビルドアクションを変えられない
- 509 :デフォルトの名無しさん :2020/11/09(月) 13:27:48.21 ID:9M/x9jqfd.net
- >>508
こんなん?
https://blog.magnusmontin.net/2020/01/31/custom-entry-point-wpf-net-core/
- 510 :デフォルトの名無しさん :2020/11/09(月) 14:29:20.29 ID:YQs0Gheb0.net
- >>509
ありがとう
出来た
- 511 :デフォルトの名無しさん :2020/11/10(火) 12:46:09.92 ID:Wkf+3jxV0.net
- .net5が今日発表される予定らしい
https://www.dotnetconf.net/
- 512 :デフォルトの名無しさん :2020/11/10(火) 14:36:59.32 ID:gS6kMlPu0.net
- .NET5でVisual Studioはどう変わるの?
我々はこれまで通り「プロジェクトのプロパティ」から「対象のフレームワーク」で3.5を選んどけばいいんでしょ?
- 513 :デフォルトの名無しさん :2020/11/10(火) 20:55:17.07 ID:PRedF3Ga0.net
- 3.5?
- 514 :デフォルトの名無しさん :2020/11/10(火) 21:45:01.26 ID:ZFV7gHPc0.net
- 3.5は流石に草生える
- 515 :デフォルトの名無しさん :2020/11/10(火) 21:54:25.94 ID:whduyV8l0.net
- 4.0だろ当然
- 516 :デフォルトの名無しさん :2020/11/10(火) 22:16:39.16 ID:HXXQLae8M.net
- 4.0はサポートされていないの?
3.5のほうがいいわけ?
- 517 :デフォルトの名無しさん :2020/11/11(水) 00:11:32.86 ID:9mAhI+SY0.net
- 混乱しておりますねえ
- 518 :デフォルトの名無しさん :2020/11/11(水) 00:42:32.57 ID:BDEAVR3x0.net
- サポート切れの4.0使うよりは3.5縛りのほうが健全に思えてきたわ
4.5.2に揃えたいけど、古いサーバー多いのよね
- 519 :デフォルトの名無しさん :2020/11/11(水) 01:37:56.99 ID:foWqNnZI0.net
- >>512
我々は先(.NET 5)に行く、君は3.5を頼む!
- 520 :デフォルトの名無しさん :2020/11/11(水) 02:30:08.95 ID:szx2KMpX0.net
- >>518
すまないこのファイルZIPでくれ。
なぉ外部DLLの読み込みはダメ
- 521 :デフォルトの名無しさん :2020/11/11(水) 04:26:49.73 ID:zN1eFwAm0.net
- 元ネタがわかんねえw
うち3.5どころか2.0や1.1の化石あるぜ……嘘みたいだろ?
- 522 :デフォルトの名無しさん :2020/11/11(水) 07:13:29.31 ID:A0Zt6oTk0.net
- C++部がVC6でしかビルドできない
- 523 :デフォルトの名無しさん :2020/11/11(水) 07:32:57.28 ID:szx2KMpX0.net
- zip関係は4.xから標準実装
- 524 :デフォルトの名無しさん :2020/11/11(水) 07:48:32.66 ID:DyE7m0HI0.net
- configファイルを作らないまたは削除する連中が嫌いだわ
- 525 :デフォルトの名無しさん :2020/11/11(水) 10:40:12.91 ID:96Q/I0na0.net
- VS16.8.0に更新したら.NET Coreのプロジェクトは1クリックで.NET5に移行出来たな
.NET Frameworkのプロジェクトも簡単に移行できるのかな?
- 526 :デフォルトの名無しさん :2020/11/11(水) 10:44:10.46 ID:QZePbwpJM.net
- できるわけないでしょ
WebFormsとWCF廃止の時点で半数くらいのアプリは事実上移行不可能
そうでなくても変なサードのライブラリ使ってたりして移行できないケースも多いだろうね
- 527 :デフォルトの名無しさん :2020/11/11(水) 12:47:24.27 ID:5X85No/50.net
- 16.8でuwpのリリースビルドが実行不能になったわ
- 528 :デフォルトの名無しさん :2020/11/11(水) 19:44:06.91 ID:96Q/I0na0.net
- あれ、.NET5ってWindowsアプリからコンソールアプリに変更できないの?
プロジェクトプロパティから出力の種類をコンソールアプリに変えてもコンソール出てこないんだが
プロパティ開きなおすとWindowsアプリに戻ってるし
- 529 :デフォルトの名無しさん :2020/11/11(水) 20:49:57.45 ID:WaPRIfZP0.net
- WCFって代わりに何使えって言ってる?
- 530 :デフォルトの名無しさん :2020/11/11(水) 21:00:29.49 ID:szx2KMpX0.net
- >>529
MQTT
- 531 :デフォルトの名無しさん :2020/11/12(木) 00:35:56.66 ID:qoiJF5zI0.net
- C#実践しながら効率良く覚えたいんだけど良い教材ないかな
とりあえずWinアプリ作りたい
頑張って独習C#を9割読んだのにもうほとんど内容覚えてない
- 532 :デフォルトの名無しさん :2020/11/12(木) 00:56:44.98 ID:nVOC+il80.net
- そりゃ手を動かさんと覚えんよ
- 533 :デフォルトの名無しさん :2020/11/12(木) 00:59:41.35 ID:+Hg40DyF0.net
- 何でも良いから作りゃいいんだよ
ベタなのは電卓
少機能なものをガンガン作る
- 534 :デフォルトの名無しさん :2020/11/12(木) 02:56:18.65 ID:XDpnN8VW0.net
- 仕事してるならいつもやってるちょっとした作業を代替させるようなアプリがモチベになるきっと
- 535 :デフォルトの名無しさん :2020/11/12(木) 05:54:42.02 ID:6+k25fjF0.net
- WinUIとMAUIの区別が曖昧にしか認識できてないんですが、
具体的な違いを説明してくれてる情報源があれば教えてください。
- 536 :デフォルトの名無しさん :2020/11/12(木) 06:11:12.88 ID:xNvOr4tgd.net
- 日頃やってる単純作業をなんでもいいから自動化
エロ動画収集とかエロ画像整理とかあるだろ
- 537 :デフォルトの名無しさん :2020/11/12(木) 12:00:28.21 ID:f5BAQJxFF.net
- >>534
めっちゃ判ります
画面キャプチャしてpdfに製本するアプリ造ったら捗った
- 538 :デフォルトの名無しさん :2020/11/12(木) 14:31:20.02 ID:s2LM5erN0.net
- C#で小数点の倍精度演算をするには自分で作るしか無いの?
整数はBigIntegerで出来るのに
- 539 :デフォルトの名無しさん :2020/11/12(木) 14:41:04.78 ID:pnQCXdZla.net
- Double 構造体
https://docs.microsoft.com/ja-jp/dotnet/api/system.double
> 倍精度浮動小数点数を表します。
- 540 :デフォルトの名無しさん :2020/11/12(木) 15:01:22.45 ID:s2LM5erN0.net
- 倍精度じゃ無くて多倍長だった
めんご
- 541 :デフォルトの名無しさん :2020/11/12(木) 15:16:14.73 ID:f5BAQJxFF.net
- BigInteger
- 542 :デフォルトの名無しさん :2020/11/12(木) 15:21:45.07 ID:f5BAQJxFF.net
- https://archive.codeplex.com/?p=Sine
https://web.archive.org/web/20130225114124/http://www.emilstefanov.net/Projects/GnuMpDotNet/
- 543 :デフォルトの名無しさん :2020/11/12(木) 15:30:12.32 ID:f5BAQJxFF.net
- こっちか
https://www.nuget.org/packages/Math.Gmp.Native.NET/
https://ja.wikipedia.org/wiki/GNU_Multi-Precision_Library
- 544 :デフォルトの名無しさん :2020/11/12(木) 17:45:20.41 ID:s2LM5erN0.net
- >>543
Math.Gmp.Native.NET
有効桁数20桁じゃん
メモリが許す限りの桁数の小数点数を扱いたいときはどうするの?
- 545 :デフォルトの名無しさん :2020/11/12(木) 17:46:57.77 ID:6nU3MdtG0.net
- >>544
それを標準機能や標準関数で実装してる言語ってあるの?
- 546 :デフォルトの名無しさん :2020/11/12(木) 17:49:22.72 ID:yAJG0kR/0.net
- >>544
メモリが許す限りの何かを扱いたいのなら数値に限らず自作しないと、そんな都合のいいものはない
- 547 :デフォルトの名無しさん :2020/11/12(木) 18:50:06.12 ID:n9rTzoEP0.net
- >>546
馬鹿は黙っていれば良い例
- 548 :デフォルトの名無しさん :2020/11/12(木) 19:03:16.89 ID:eGo0h3N+0.net
- Pandasに相当するライブラリないの?
- 549 :デフォルトの名無しさん :2020/11/12(木) 19:03:45.07 ID:eGo0h3N+0.net
- まあC#でやる必要ないかw
- 550 :デフォルトの名無しさん :2020/11/12(木) 19:52:59.46 ID:OqW4/kLba.net
- ググってみたらdoubleの仮数部は52ビットらしけど、52ビットの分解能じゃ
不足する分野って何なんだろうねw
地球の赤道に1ミクロン単位で目盛りを振っても余裕でおつりがくる分解能みたいだけど
- 551 :デフォルトの名無しさん :2020/11/12(木) 20:42:07.53 ID:aPogCkhJ0.net
- >>550
円周率じゃん?
- 552 :デフォルトの名無しさん :2020/11/12(木) 20:42:17.55 ID:/VjS/nppM.net
- >>550
オーダーの異なる多数の数値を何も考えずに前から順に足し合わせたりすれば簡単に狂うよ
- 553 :デフォルトの名無しさん :2020/11/12(木) 21:28:06.03 ID:+Hg40DyF0.net
- めんどくさいから整数で演算して結果の小数点を動かすわ
ってかみんなそうやってやんないの?
そりゃ高パフォーマンスで多倍長浮動小数扱えるならそれが一番だろうけど
- 554 :デフォルトの名無しさん :2020/11/12(木) 21:30:18.59 ID:mp0oTovH0.net
- 一番面倒臭いのはケチ付けたいだけのID:s2LM5erN0
- 555 :デフォルトの名無しさん :2020/11/12(木) 21:32:48.72 ID:WhH2oDBM0.net
- GMP使うからC#ではせんな。
CUGにmiracle ってライブラリーがあったけど
これも当然C#用では無いなぁ
- 556 :デフォルトの名無しさん :2020/11/12(木) 21:51:54.26 ID:OqW4/kLba.net
- >>553
誤差が累積しないような演算方法を工夫するのが普通だろうね
- 557 :デフォルトの名無しさん :2020/11/12(木) 21:59:49.04 ID:4tCV4GAu0.net
- すまんが、↓こう言う時の「=>」ってどう言う意味なの?
string asdf => $"jkl";
この画面の11行目でそんな感じのが出てきたんだけど・・・・
https://youtu.be/wTmZCu16LNU?t=1094
- 558 :デフォルトの名無しさん :2020/11/12(木) 22:15:18.46 ID:QnwokErS0.net
- 読み取り専用プロパティの簡単な書き方
string asdf { get { $"jkl"; } }
string asdf { get => $"jkl"; }
string asdf => $"jkl";
string asdf { get; } = $"jkl"; // これだけ意味が違う
- 559 :デフォルトの名無しさん :2020/11/13(金) 00:55:38.66 ID:eU7TEgK20.net
- >>565
private string _asdf = $"jkl";
string asdf { get { return this._asdf; } }
を1行で書いたもの
- 560 :デフォルトの名無しさん :2020/11/13(金) 05:21:57.56 ID:quhoX/Ovr.net
- >>544
何の計算したいの?
- 561 :デフォルトの名無しさん :2020/11/13(金) 11:17:32.36 ID:d7Iu7DLU0.net
- >>560
単なる道楽なんだけどね
昔の放送大学でUBASICを使った自然対数の底と円周率の演算をやってたから
同じことをC#でやろうと思ったけどIEEE754の倍精度実数では桁が足りなかった
BigIntegerがあるならBigFloatも欲しかったなと
- 562 :デフォルトの名無しさん :2020/11/13(金) 11:21:41.58 ID:RWm0omqa0.net
- 放送大学アーカイブズ
懐かしの名講義
再放送中毒
- 563 :デフォルトの名無しさん :2020/11/13(金) 11:32:20.13 ID:ehJZ/AtC0.net
- https://bangumi.ouj.ac.jp/bslife/detail/01625005.html
- 564 :デフォルトの名無しさん :2020/11/13(金) 12:37:29.01 ID:907SkV9V0.net
- >>561
結局欲しいのは多倍長整数なのか倍精度浮動小数なのか
道楽なら自作ライブラリでも作れば良い
- 565 :デフォルトの名無しさん :2020/11/13(金) 14:16:13.05 ID:WOWtwvuFd.net
- >>564
なんでずれた回答するの?
「作るしかない」
なら良い回答なのに。
新しい人どんどん減っちゃうよ
- 566 :デフォルトの名無しさん :2020/11/13(金) 14:18:25.76 ID:RWm0omqa0.net
- 「作るしかない」
の方が最近の新しい人は逃げる傾向にあるからな
- 567 :デフォルトの名無しさん :2020/11/13(金) 15:13:21.55 ID:od/5f45td.net
- 作るしか無いってことはほぼ世の中にはそんなものは求められていないってこと
そんなものを要求するのは根本が間違ってるか何でも周りに頼り過ぎか
真に有益なものならむしろ作って公開すりゃ良い実績になる
- 568 :デフォルトの名無しさん :2020/11/13(金) 15:22:11.67 ID:WOWtwvuFd.net
- >>567
なんかそれがもうずれてんだよね。
「作るしかないの?いいのないの?」って聞かれてるんだから
「ないよ。作るしかないよ」って答えればいいのに。
世の中で求められてないとか質問に関係なくない?
有益云々も今ないから作ったら公開してくれって言えば利益にもなんのに。
残念
- 569 :デフォルトの名無しさん :2020/11/13(金) 15:25:44.29 ID:fnhS2xNE0.net
- 20年位前のうbyの時代はそれが通ったけど
若い人にそういう文化はもう無い
- 570 :デフォルトの名無しさん :2020/11/13(金) 15:29:35.13 ID:od/5f45td.net
- >>568
質問への回答じゃないのにズレてるとかいうレスがそもそもズレてるって思わないの?
というか悪魔の証明はできないんだから無いよ、なんて軽々しく言えないという前提がわかってる?
ついでに誰にも求められていないものを公開して利益になるロジックを教えて
- 571 :デフォルトの名無しさん :2020/11/13(金) 16:12:04.51 ID:/kJTTxU10.net
- >>558
>>559
ありがとう!
記号系はググりづらくて、本当助かったぜ!
- 572 :デフォルトの名無しさん :2020/11/13(金) 16:31:13.21 ID:WOWtwvuFd.net
- >>570
そうなの。質問への回答じゃないの。
悪魔の証明とかかたっ苦しく考えなくていいのに。
知らないなら知らないで、「俺はしらんなぁ、作るしかないんじゃない?」で答えるか黙ってればいいじゃない。知ってる人がいれば答えればいいし。
>ついでに誰にも求められていないものを公開して利益になるロジックを教えて
これは
>真に有益なものならむしろ作って公開すりゃ良い実績になる
ここからね。
ないものができるんだから利益でしょ。使う使わないは人それぞれ。少なくとも質問者には必要なんだから。
なんかすまんね
- 573 :デフォルトの名無しさん :2020/11/13(金) 16:42:13.42 ID:907SkV9V0.net
- >>565
欲しいものの要件をハッキリ言わないからだよ
>>540で多倍長って言いながら、>>544では小数って言ってる
小数求めてるのに>>561ではBigFloat求めてる
Bigは大数の接頭辞
自分で欲しいものを理解してないのに人に探してもらうことは難しいよ
- 574 :デフォルトの名無しさん :2020/11/13(金) 16:47:50.11 ID:907SkV9V0.net
- 精度の高い計算をするためのツールがUBASICなわけ
あえてそれを使わずにC#でやるのは本人の自由だけど、
要件をハッキリさせずにいながら出てきた案はダメ出し
そりゃ顰蹙も買うさ
- 575 :デフォルトの名無しさん :2020/11/13(金) 17:05:08.44 ID:od/5f45td.net
- >>572
だから答えようがないから質問を見た感想を述べているだけなんでしょ?
それをなんで、その回答はズレている!なんて突っ込むの?
質問者が求めてるなら
誰にも求められていない
に該当しないじゃんw
質問者は世の中含まれていないの?
- 576 :デフォルトの名無しさん :2020/11/13(金) 17:39:01.74 ID:j87fJt3YM.net
- >>573
多倍長と小数は相反する概念じゃ無いぞ
BigFloatも普通にJuliaとかである型だし
このスレ理系がいなさすぎだろ
多倍長浮動小数点演算求められてんのに
「そんなものは誰にも必要じゃ無いから存在しない!自分で作れ!」とか
普通にGMPとかあるし普通はそれを奨める
- 577 :デフォルトの名無しさん :2020/11/13(金) 17:41:05.56 ID:WOWtwvuFd.net
- >>575
前半はこっちがはやとちったね。ごめんね。
後半はなんか文脈から言葉遊び以上の君が言ってること理解できないから俺の頭がおかしいんだな。
君が正しいよ。
>>573
>要件をハッキリさせずにいながら出てきた案はダメ出し
>そりゃ顰蹙も買うさ
そりゃそうだな。すまんね
- 578 :デフォルトの名無しさん :2020/11/13(金) 18:28:33.10 ID:qE0lneeB0.net
- ワッチョイ dd9b-Y0tO ワッチョイ 459b-Y0tO ワンミングク MMa3-Y0tO 質問の仕方も使う言葉も不正確で調べた回答者にダメ出しの上にワッチョイコロコロ
NGでいいよ
- 579 :デフォルトの名無しさん :2020/11/13(金) 18:33:46.11 ID:lrdHTx5AM.net
- BigFloatって 10÷3 するとメモリ喰らい尽くしてくれるの?
- 580 :デフォルトの名無しさん :2020/11/13(金) 18:44:41.25 ID:UDp7AbcK0.net
- >>579
扱う桁数を設定しておくんでしょ
juliaだとsetprecisionというのを使うらしい
- 581 :デフォルトの名無しさん :2020/11/13(金) 18:45:15.53 ID:907SkV9V0.net
- >>576
>>544
- 582 :デフォルトの名無しさん :2020/11/13(金) 18:46:10.29 ID:od/5f45td.net
- え?普通にgmp勧めてそれじゃ精度が足りん!ってなったんじゃないの?
中身の詳細までわからんが…
C++に有効桁数100桁の演算とかあるみたいだけど要求はメモリたくさん使うレベルなんだから兆オーダーレベルの桁数なんでしょ?
- 583 :デフォルトの名無しさん :2020/11/13(金) 18:47:51.67 ID:iD09dkB6M.net
- >>576
554で勧めたんだがスルーされたんだよ
- 584 :デフォルトの名無しさん :2020/11/13(金) 18:59:56.02 ID:WXkqFeV00.net
- やろうとしたこと無いから知らんのだけど例えば円周率を何兆も計算するのあると思うけど、そういう演算ってその桁数の小数点演算必要になるの?
普通にdouble程度で十分だと勝手に思ってたけど
- 585 :デフォルトの名無しさん :2020/11/13(金) 22:02:04.34 ID:qUM0ZuKL0.net
- wikipediaに依ると円周率の計算は
π/4 =1- 1/3 + 1/5 - 1/7...らしい
BigIntegerで1を必要な桁数だけ大きくすれば良いような
- 586 :デフォルトの名無しさん :2020/11/13(金) 22:07:03.28 ID:KPuGe7Gc0.net
- >>584
整数演算だけで出来るぞ
というかすべての小数点演算は整数演算の組み合わせで出来る
>>582
GMPのデフォルト精度は64ビットだから20桁くらいしかいけない
precに大きなビット数設定してやれば何万桁でもいける
- 587 :デフォルトの名無しさん :2020/11/13(金) 22:26:47.07 ID:A6rK79tx0.net
- だから言語に分数型が必要だって言っただろアホが
- 588 :デフォルトの名無しさん :2020/11/13(金) 23:04:03.67 ID:V7nqUCXH0.net
- いや、もっとストレートに円周率型が必要
- 589 :デフォルトの名無しさん :2020/11/14(土) 00:22:57.13 ID:XJ24TZhC0.net
- >>585
https://www.youtube.com/watch?v=NaL_Cb42WyY
- 590 :デフォルトの名無しさん :2020/11/14(土) 05:05:39.51 ID:hLsGLi/C0.net
- 分数型があったところで無理数は表現できなくね?
アレば便利なことには間違いないが
- 591 :デフォルトの名無しさん :2020/11/14(土) 09:03:12.56 ID:cYQm19/50.net
- >>590
三分の一が表現できるってだけで結構便利なんだな
自分でクラス作ってもいいけど
- 592 :デフォルトの名無しさん :2020/11/14(土) 15:27:05.74 ID:HtCqr6h30.net
- >>538
http://www.dotsakura.com/?mode=blog;id=115
- 593 :デフォルトの名無しさん :2020/11/15(日) 09:17:33.20 ID:TE31pbc70.net
- 日本でC#使うのは殆どUnityかWindowsデスクトップアプリだからな
数値計算とかしたいならPython使うしかない
- 594 :デフォルトの名無しさん :2020/11/15(日) 09:55:21.46 ID:zLhs1absM.net
- 業務アプリで1/3することってあるよ
- 595 :デフォルトの名無しさん :2020/11/15(日) 12:40:40.11 ID:wWBHTATOd.net
- C#ってCやVC++と比べるとかなり遅い
ですか?
遅いなら、時間の掛かる処理だけは速い言語で作るべきか悩みます
マーシャリングすれば使えるみたいなので
- 596 :デフォルトの名無しさん :2020/11/15(日) 12:45:13.00 ID:MP+vmq9O0.net
- >>595
処理の内容と書き方による
- 597 :デフォルトの名無しさん :2020/11/15(日) 12:45:47.16 ID:4zqmLj42M.net
- 物にもよるが3割減ぐらいに思っておけば
- 598 :デフォルトの名無しさん :2020/11/15(日) 12:58:30.49 ID:TbjZIaKaM.net
- 分数型を作るのは面白そうやん。約分や通分の機能を持たせておけば素敵。てかMS考えてくれ。
- 599 :デフォルトの名無しさん :2020/11/15(日) 13:20:31.23 ID:ttHD4odoa.net
- >>595
ファイル読み書きやネットワークアクセスが一切なくて100%CPUパワーを使うだけのプログラムなら差が出るかもしれないけど
そうでなければ処理時間の差などI/Oにかかる時間に比べればごくわずかで塵にも等しい
ので気にするだけ無駄
というかCPUパワーを極限まで使い倒すなら、C#でマルチコア並列実行できるよう処理を書いたほうが
C/C++のシングルスレッド処理よりよっぽど早いかもしれない
よほど低性能なマシンで実行するならともかく、今どきの環境なら全部C#で書くほうが無難だと思うけどね
- 600 :デフォルトの名無しさん :2020/11/15(日) 13:23:38.35 ID:y3jy+ngDM.net
- >>598
すでに有理数クラスがNugetにあるで
https://www.nuget.org/packages/Rationals/
Example usage:
Rational left = (Rational) 1 / 2;
Rational right = (Rational) 1 / 4;
Rational sum = left + right; // equals to: 3 / 4
- 601 :デフォルトの名無しさん :2020/11/15(日) 16:21:09.71 ID:d0/9SCdg0.net
- >>595
どうしてもC++のライブラリをC#で使いたいとかじゃないかぎり
そのマーシャリングの処理が何気に重い気がするので
関数を何度も呼び出すみたいな使い方するなら
ベンチマーク取ってみるとC#のみの方が速いかも知れないぐらいの差じゃないかな
- 602 :デフォルトの名無しさん :2020/11/15(日) 16:38:42.28 ID:alkL58xG0.net
- >>601
マーシャリングが重いって言うと例えば
extern IntPtr GetProcAddress(IntPtr hModule, [MarshalAs(UnmanagedType.LPStr)] string procName);
とする場合、のprocNameをAnsiに変換するときってヒープ使われるの?
ヒープ使われるんだとしたら自前でstackallocしてbyte*として渡そうと思うけど
- 603 :デフォルトの名無しさん :2020/11/16(月) 08:44:05.44 ID:dMCYT8Lea.net
- >>595
C#とC/C++の処理速度はほとんど変わらないよ
ただ、C#はどうしてもGCの影響を受けるから、数msでも遅れたら困る用途には使えない
まあ、そんな要求は滅多に無いけどね
- 604 :デフォルトの名無しさん :2020/11/16(月) 10:53:58.92 ID:sF1WJXNTF.net
- GCは何時発動するか判らんのが欠点だけど
C#のGCはタイミングは常に判ってるのかな
- 605 :デフォルトの名無しさん :2020/11/16(月) 11:05:41.67 ID:qYJ3Dm/90.net
- タイミングがわかるわけじゃないけど引き起こす可能性のある手続きはわかっている
コーディングでそれを避けられる余地があるからUnityとかでまだ採用されてるんじゃない?
- 606 :デフォルトの名無しさん :2020/11/16(月) 11:27:25.87 ID:jhzDiMvL0.net
- 本当にクリティカルな区間はGCを(出来るだけ)禁止する等ある程度は制御できる
- 607 :デフォルトの名無しさん :2020/11/16(月) 11:30:54.33 ID:Ixi420Wb0.net
- GC禁止する前に、あらかじめ明示的にGCって出来る?
- 608 :デフォルトの名無しさん :2020/11/16(月) 12:05:22.31 ID:g+EUxdXIr.net
- GC連打しまくればいいよ
- 609 :デフォルトの名無しさん :2020/11/16(月) 13:22:47.27 ID:jhzDiMvL0.net
- GC.Collect()で強制実行出来るけど
世代上昇の問題もあるし使いこなすのは難しい
- 610 :デフォルトの名無しさん :2020/11/16(月) 13:24:47.04 ID:sF1WJXNTF.net
- 生き残りは強毒化するのか
- 611 :デフォルトの名無しさん :2020/11/16(月) 14:26:09.78 ID:vD+2eRn00.net
- 強制GC連打派
30秒に一回とかやってる
それでもなんか1秒ぐらい止まるときあるよ
- 612 :デフォルトの名無しさん :2020/11/16(月) 15:09:58.28 ID:dMCYT8Lea.net
- ストップザワールドしないGCを実装してくれたらもうアプリケーションでC/C++を使うことはないかも
- 613 :デフォルトの名無しさん :2020/11/16(月) 15:48:59.14 ID:eppT6X190.net
- むしろVC++に絶対的なGUI決定版が出たら個人開発のデスクトップアプリでC#使う事なくなるだろうな
個人開発程度の規模だとマクロのあるC++の方が返って開発速度早くなることも多いし
- 614 :デフォルトの名無しさん :2020/11/16(月) 17:13:00.16 ID:VrPIfzyD0.net
- GCSettings.LatencyModeで選べるよ
- 615 :デフォルトの名無しさん :2020/11/16(月) 18:58:34.38 ID:ZSbSJvSB0.net
- フォーム上に設置したボタンを表示したいのですが、
フォームだけ非表示もしくは透過0%にする方法を教えてください
フォームのopacityいじるとボタンも非表示になってしまいます
- 616 :デフォルトの名無しさん :2020/11/16(月) 19:19:54.16 ID:Le2Iq+UD0.net
- フォームの背景を単一色で塗り潰してTransparencyKeyで透明にしたい色を指定
- 617 :デフォルトの名無しさん :2020/11/16(月) 22:13:31.62 ID:G4eaPjr50.net
- c#とvsがなかったら一生プログラムやろうなんて思わなかった
- 618 :デフォルトの名無しさん :2020/11/16(月) 23:04:37.19 ID:cHmpQkkDM.net
- C#っていい言語だよね
飾らず、気取らず、それでいて力強い。
- 619 :デフォルトの名無しさん :2020/11/16(月) 23:25:26.59 ID:LWdxEv1Gd.net
- >>596,599,601,603
ありがとうございます!
- 620 :デフォルトの名無しさん :2020/11/16(月) 23:34:54.33 ID:LWdxEv1Gd.net
- >>597
ありがとうございます!
- 621 :デフォルトの名無しさん :2020/11/17(火) 01:43:59.23 ID:lN0UCm9Ya.net
- ファイルの日付時刻を比較したいんですがどうしたら良いですか?
- 622 :デフォルトの名無しさん :2020/11/17(火) 01:44:52.21 ID:qgtrLMb80.net
- datetime型を比較すれば?
- 623 :デフォルトの名無しさん :2020/11/17(火) 10:32:21.22 ID:sO+4iEeI0.net
- >>621
datediffや
- 624 :デフォルトの名無しさん :2020/11/17(火) 13:16:45.53 ID:GB1Hm8K4a.net
- >>615
WPFなら普通にできたはずだけどFormでは簡単にはいかないと思うよ。
不完全だけど一番簡単にそれっぽいのを作る方法はButtonを乗せるためだけの別のform2を作って
form1をそれの親にすること。
public Form1()
{
InitializeComponent();
var loc = new Point(100, 100);
var form2 = new Form2();
Action a = () => form2.Location = PointToScreen(loc);
form2.Show(this);
Load += (s, e) => a();
Move += (s, e) => a();
}
- 625 :デフォルトの名無しさん :2020/11/17(火) 15:43:12.61 ID:WBCoLdBR0.net
- WPFで作る利点ってのはクロスプラットフォームに出来るってこと?
Formしか作ったことないんやけど
- 626 :デフォルトの名無しさん :2020/11/17(火) 16:31:37.70 ID:EuUrSlgt0.net
- >>625
WPFはWinFormsと同じくWindowsのみ
- 627 :デフォルトの名無しさん :2020/11/17(火) 16:58:38.50 ID:RncVdZGd0.net
- 利点というか世界的に見たらWPFのほうが主流だから
むしろ今なぜFormなのかという感じだな
- 628 :デフォルトの名無しさん :2020/11/17(火) 17:15:11.29 ID:ogxxYnEyH.net
- Formsの方が簡単だから……
- 629 :デフォルトの名無しさん :2020/11/17(火) 18:04:37.48 ID:YcEiD0LrM.net
- グラフィック関係が壊滅的なので
skiaとかで支援しないと使い物にならないWPF
を勧めるとはお主も悪よのう
- 630 :デフォルトの名無しさん :2020/11/17(火) 18:39:12.50 ID:Hw9PIOp10.net
- WPFなんて死産みたいなもんじゃね・・・
出て結構経つけどWPFの仕事とかの話全然聞かないわ
- 631 :デフォルトの名無しさん :2020/11/17(火) 18:46:22.75 ID:PM1Apx6y0.net
- Visual Studioの皮ってWPFなんでしょ
- 632 :デフォルトの名無しさん :2020/11/17(火) 19:20:07.15 ID:cGx3KuHJ0.net
- >>630
仕事はいくつかあった
建物の入り口にあるディスプレイに飾っとくようなアプリ
3D空間にオブジェクトを配置するアプリ
- 633 :デフォルトの名無しさん :2020/11/17(火) 19:24:53.52 ID:FpFQah7Cd.net
- そういうタイプはunityとかのほうが楽そう
- 634 :デフォルトの名無しさん :2020/11/17(火) 19:26:16.29 ID:iD8vjuLm0.net
- うちは数年前から新製品で使い始めたよ。
特定業界向け会計ソフトだから一般の目に触れる事は殆どないと思うけど。
- 635 :デフォルトの名無しさん :2020/11/17(火) 19:34:04.55 ID:cGx3KuHJ0.net
- >>633
全くその通りで結局開発が進んで行くうちに帯に短し襷に長しみたいな中途半端力凄い
>>634
そういうのは絶対Webアプリのが使い勝手いいんだよなぁ
ログインしたらどこでもどのPCでも同じって強過ぎるよね
- 636 :デフォルトの名無しさん :2020/11/17(火) 19:37:52.56 ID:cGx3KuHJ0.net
- あと何気に困ったのが音
後ろで音楽かけてボタンとか押したら音鳴らしてってのが
わりかしできんかったっていうかなんかあやしいライブラリ使う羽目になったっていうか
まあ、色々動く画面作りたいときはいっそunity考えた方がいいと思う
- 637 :デフォルトの名無しさん :2020/11/17(火) 19:42:43.18 ID:qgtrLMb80.net
- unity 只け?
- 638 :デフォルトの名無しさん :2020/11/17(火) 20:40:45.04 ID:Tiv5/dm/0.net
- いまだに新規開発案件でforms使うところあるの?
- 639 :デフォルトの名無しさん :2020/11/17(火) 20:44:36.18 ID:ooCV67uO0.net
- あるよ
- 640 :デフォルトの名無しさん :2020/11/17(火) 20:56:30.30 ID:Fq1hGO400.net
- FAだとformで十分でウマーです。
- 641 :デフォルトの名無しさん :2020/11/17(火) 21:02:12.76 ID:Qs8QfDsD0.net
- windowsなのにformsを使わない理由を逆に知りたい
- 642 :デフォルトの名無しさん :2020/11/17(火) 21:04:02.66 ID:qYg8UIQi0.net
- >>641
高DPI対応が面倒
バインディングが使い物にならない
- 643 :デフォルトの名無しさん :2020/11/17(火) 22:28:01.75 ID:Rs8mNRLj0.net
- そして来年からはWinUIというWPF紛いのものが登場する、と
Win10ぽいルックスとx:Bindでコンパイル時にバインドエラー発見ってのはかなり大きい
そのうちAOTコンパイルもサポートされるそうだ
- 644 :デフォルトの名無しさん :2020/11/17(火) 22:33:32.13 ID:GB1Hm8K4a.net
- WPFは(既に実質的にはそうだったけど)いよいよディスコンになるの?
- 645 :デフォルトの名無しさん :2020/11/17(火) 22:39:07.63 ID:qYg8UIQi0.net
- >>644
現状維持
これからはWinUI推しでWinFormsとWPFは放置だろ
- 646 :デフォルトの名無しさん :2020/11/17(火) 22:40:03.59 ID:GB1Hm8K4a.net
- そうか無くなるわけじゃないよねw
メンテモードか
- 647 :デフォルトの名無しさん :2020/11/17(火) 22:48:31.36 ID:60XguBAo0.net
- .NET MAUI 楽しみ
- 648 :デフォルトの名無しさん :2020/11/18(水) 00:03:39.25 ID:MO86P+zt0.net
- maui期待しないほうがいい
ただの名前変更レベルの予感
Microsoftはなぜxamarinが失敗したか総括したのか?
表面上何もかわってないように見える
技術的にはSlimRenderアーキテクチャだかようしらんが
- 649 :デフォルトの名無しさん :2020/11/18(水) 15:05:11.31 ID:7Ekft4aVr.net
- VScodeで成功してるんだがElectronでいいじゃん
Electron.Netを正式サポートしろよ
- 650 :デフォルトの名無しさん :2020/11/18(水) 15:10:25.22 ID:870PPpSlr.net
- >>648
だね。
- 651 :デフォルトの名無しさん :2020/11/18(水) 15:39:37.23 ID:P3jn+KK20.net
- Electronは失敗だよな
VSCodeだけだし
- 652 :デフォルトの名無しさん :2020/11/18(水) 15:46:24.24 ID:UaAov2o20.net
- >>76
C#というのは前身がDelphiという言語なんだ
そのDelphiはVBとの死闘の末敗れてしまった
だからC#(Delphi残党)がVBを憎んでいるのは当然なんだ
ガンダムで例えるとC#はネオジオンでVBは連邦軍なんだよ
- 653 :デフォルトの名無しさん :2020/11/18(水) 15:54:18.16 ID:IPbBahkD0.net
- >>652
笑
- 654 :デフォルトの名無しさん :2020/11/18(水) 15:54:52.11 ID:IPbBahkD0.net
- >>651
笑
- 655 :デフォルトの名無しさん :2020/11/18(水) 16:11:46.00 ID:YM9VgCd+0.net
- >>638
わたしは中国人あるよ
- 656 :デフォルトの名無しさん :2020/11/18(水) 16:58:13.83 ID:gt3SSD7y0.net
- >>651
SlackやDiscordもElectronだよ
- 657 :デフォルトの名無しさん :2020/11/18(水) 16:59:19.38 ID:oW5F7Byc0.net
- Azure Data Studio
- 658 :デフォルトの名無しさん :2020/11/18(水) 19:57:00.23 ID:hzlSiPtIM.net
- >>657
ゴミは引っ込んでろ
- 659 :デフォルトの名無しさん :2020/11/18(水) 20:11:49.12 ID:oW5F7Byc0.net
- >>658
え?
- 660 :デフォルトの名無しさん :2020/11/18(水) 21:07:17.11 ID:RhWccaic0.net
- こいつら質問スレでテンプレ無視して雑談しなきゃならない使命でもあるのか?
- 661 :デフォルトの名無しさん :2020/11/19(木) 10:08:06.32 ID:fvT6uEqW0.net
- StringBuilderのパフォーマンス目的で使う割には最終的なToString()で再Allocが発生するという矛盾に嫌気がさして
アンセーフなstringラッパー作って
public Length => { fixed (char* p = str) *(int*)(p - 2) = value; }みたいなことしてマニュアルで長さ変えたりしてるんだけど、こういうことしてるとGCに影響あったりする?
初期バッファとしてstr = new string('\0', 0x1000);として0x1000文字分のメモリを頂戴したのに、上記の動作で長さを5に変えたりしてると、GCによる解放時に5文字分しか解放されずに残りがリークするって事にはならないんだろうか?
- 662 :デフォルトの名無しさん :2020/11/19(木) 11:07:34.05 ID:xT43LVbE0.net
- > StringBuilderのパフォーマンス目的で使う割には最終的なToString()で再Allocが発生するという矛盾
そもそもそこは別に矛盾じゃないだろ
「結合のたびにアロケーションが発生する」のを防ぐもんなんだから
- 663 :デフォルトの名無しさん :2020/11/19(木) 11:21:03.45 ID:RERzCypk0.net
- >>661
ZStringを使いなよ
色々な悩みから解放されるよ
- 664 :デフォルトの名無しさん :2020/11/19(木) 11:31:10.28 ID:fvT6uEqW0.net
- >>663
良く知らないけどそれもその都度string生成してるんじゃないの?
スレッドアンセーフで良いから生成は初回かキャパ更新程度に留めて使いまわしたいんだよね
そのキャパ更新の際に捨てるときにstring.Lengthを弄ってるとメモリリークの原因になるのではないかと
- 665 :デフォルトの名無しさん :2020/11/19(木) 11:37:15.19 ID:fvT6uEqW0.net
- さすがに内部でcalloc(sizeof(char), 0x1000)とかしたときの確保サイズメモっておいてくれてるのかね
GC内部の細かい挙動はMS社員でもない限り知りようないか
- 666 :デフォルトの名無しさん :2020/11/19(木) 13:58:51.49 ID:5X7qze6C0.net
- NameValueCollectionをコピペすると自動整形がうまくいかなくてかっこの位置がおかしくなるので
各行ごとにDelete→Enter→Endを繰り返して手動で整形しなおしてるのですが、ちゃんと整形してくれる方法ってあるんですか?
↓みたいになったりする。
NameValueCollection vals = new NameValueCollection
{
{ "hoge","hage"},
{ "fuge","hage"},
};
- 667 :デフォルトの名無しさん :2020/11/19(木) 15:16:47.51 ID:wGypJVfq0.net
- 1行にする
予期しないところにある改行が原因でフォーマッターが動かない
- 668 :デフォルトの名無しさん :2020/11/19(木) 15:26:56.05 ID:3nmF1AP8M.net
- >>661
いやそもそもStringBuilder.ToString()は再アロケーションしないぞ
内部のバッファをそのまま引き継ぐ実装だ
その後StringBuilderの方に追加の変更が加えられた時点で再アロケーションが発生する
- 669 :デフォルトの名無しさん :2020/11/19(木) 15:52:44.75 ID:5X7qze6C0.net
- >>667
1行というのはこういうことですか?
NameValueCollection vals = new NameValueCollection{{ "hoge","hage"},{ "fuge","hage"},};
実際には{ "hoge","hage"},が50行とかあったりするので↑では視認性やエラーチェックが面倒になります。
- 670 :デフォルトの名無しさん :2020/11/19(木) 16:13:28.80 ID:XTntku/z0.net
- >>668
StringBuilderはchar[]であってstringではない
たとえStringBuilderのCapacityがLengthと丁度良く=であったとしてもToStringで別途string用にアロケーションされる
StringBuilderはLengthを自由に変更出来て任意のインデックスからappendできるので、内部バッファがそのまま返されるようならstringは不変という法則が簡単に崩れ去れることになり>>661がやってるunsafeと何ら変わらなくなる
- 671 :デフォルトの名無しさん :2020/11/19(木) 16:33:47.05 ID:wGypJVfq0.net
- >>669
そういう長いものに自動整形を期待しない
そういう長いものを人間が視認する必要性を排除する
この手の自動整形をしようとすると負荷が半端ないことになって実用性に欠けるのですっぱり切っているのだと思う
- 672 :デフォルトの名無しさん :2020/11/19(木) 16:48:49.64 ID:k15rqtpOa.net
- >>670
そんな馬鹿な実装するはずがないと思うよw
そもそもイミュータブルとは状態を変更する方法を外部に提供しない、という意味以上でも以下でもない。
そこのところを勘違いしている気がする
- 673 :デフォルトの名無しさん :2020/11/19(木) 16:50:55.24 ID:EbSX4tjh0.net
- >>672
ソース見れば普通にわかるやろ
https://referencesource.microsoft.com/#mscorlib/system/text/stringbuilder.cs,338
string ret = string.FastAllocateString(Length);
- 674 :デフォルトの名無しさん :2020/11/19(木) 17:07:14.79 ID:9igY/Fs20.net
- りふぁれんすそーすw
- 675 :デフォルトの名無しさん :2020/11/19(木) 17:26:57.34 ID:k15rqtpOa.net
- .NETのStringが機械語レベルでどう実装されてるか勉強したことはないが、
普通に考えればパスカルストリングとCストリングのあいの子みたいな単純な構造でしょたぶん。
ごにょごにょした後のバイト列を普通にstringと「みなす」だけにするよね。
わざわざ別のメモリ確保してベタコピーする馬鹿な実装をする人がいるだろうか。
その必要性ができてからで遅くないと思うんだけど。
- 676 :デフォルトの名無しさん :2020/11/19(木) 18:08:19.31 ID:fvT6uEqW0.net
- >>675
C#のstringはBStrというoffset0にlength、offset4からcharの配列、そのoffset4へのポインタがstringとなる
末尾がnull文字じゃなくても問題ないが基本は末尾にnull文字が入ってるためconst wchar_t*としても扱える
そんなことはどうでもよくてマネージド内で上記の内部バイナリを書き換える方法は一切無いからわざわざアンセーフstringラッパーを作ったんだよ
一見書き換えられてるように見えるstring操作は全て新stringとして生成されてるだけだからな
+連結は長さが変わるから想像できるだろうけど、Substringすらも切り取り参照をしている訳ではなく新たにstringを生成してる(それを解決しうるマネージドな手段としてReadOnlySpanというのも一応あるが)
- 677 :デフォルトの名無しさん :2020/11/19(木) 19:50:48.14 ID:nKYhLbF50.net
- 細かいことを気にしてまでC#を使う矛盾をどう解決してるのか気になるわ
- 678 :デフォルトの名無しさん :2020/11/19(木) 20:59:45.17 ID:fvT6uEqW0.net
- >>677
だからプライベートリポの8割はC/C++って程度には普段はC使ってるけど
でもその理論言っちゃうと本家StringBuilderも要らんってことになるしな
全部+とか$"{}"でええやん
- 679 :デフォルトの名無しさん :2020/11/19(木) 21:03:40.41 ID:nKYhLbF50.net
- StringBuilderを使えというのは学ぶでしょ
そこまででいい
それ以上やるならもうC#使う意味ない
- 680 :デフォルトの名無しさん :2020/11/19(木) 21:04:23.57 ID:fvT6uEqW0.net
- >>679
それじゃSpanとか実装したMSがバカみたいじゃん
- 681 :デフォルトの名無しさん :2020/11/19(木) 21:28:29.15 ID:A4wcMVuA0.net
- >>663 が挙げてたZStringの解説記事
個人的にはそこまでパフォーマンス気にするような物作ってないから「へー」って感じで読んだだけだけど
ZString – Unity/.NET CoreにおけるゼロアロケーションのC#文字列生成
ttps://tech.cygames.co.jp/archives/3383/
- 682 :デフォルトの名無しさん :2020/11/19(木) 21:32:12.66 ID:s0VdR5fOd.net
- 国内C#erで有名どころだしstringはパフォーマンス絡みでよく上がるから割と有名な方じゃないかな?
あんなにパフォーマンス気にする人が知らないのには驚きだけどw
- 683 :デフォルトの名無しさん :2020/11/20(金) 01:24:52.99 ID:ViPIBq0U0.net
- パフォーマンスは気にしてないんじゃないの?
アロケーション気にしてただけで
- 684 :デフォルトの名無しさん :2020/11/20(金) 07:19:27.10 ID:ShozvaYJ0.net
- C++は基本がスタック、C#は基本がヒープ
この二者の最大の差はこれなのでC#のパフォーマンス改善=アロケーション回避に終始する
- 685 :デフォルトの名無しさん :2020/11/21(土) 03:48:47.56 ID:zIAbzPq60.net
- 俺バカだから何万回の処理で何ms差が出るのか教えてほしい
- 686 :デフォルトの名無しさん :2020/11/21(土) 08:27:18.63 ID:WoKZFdST0.net
- 手段が目的と化している人達にそんなこと聞いても無駄だよ
- 687 :デフォルトの名無しさん :2020/11/21(土) 11:57:08.18 ID:6fJp/BaL0.net
- 初心者スレらしい馬鹿がいて嬉しい
- 688 :デフォルトの名無しさん :2020/11/21(土) 11:59:54.22 ID:zQZxJMDr0.net
- >>681のブログ主みたいな人の方が結局生産性も高いのだから、パフォーマンス厨を馬鹿にするのは知への嫉妬にしか見えない
尤も初心者用スレで話す内容ではないが
- 689 :デフォルトの名無しさん :2020/11/21(土) 13:04:44.65 ID:Ny+zGkjNa.net
- まあちょっと前の数値演算の話と同じだよ。
純粋な学問として円周率の桁数を追求することを否定する人はいないけど、
実用上必要ないのにそれを追求するのはただの馬鹿なフェティシズム
- 690 :デフォルトの名無しさん :2020/11/21(土) 13:16:59.22 ID:QfF2kXL70.net
- こだわっている当人が>>663を提案されているのに
>良く知らないけどそれもその都度string生成してるんじゃないの
って見もせずに切り捨てているのがわけわからない。自分の作ったunsafeメソッド誉めてほしかったの?
- 691 :デフォルトの名無しさん :2020/11/21(土) 15:32:05.57 ID:TFceIuuT0.net
- 誰も>>661の質問自体には答えてあげてないんだからスレチとしてスルーで良いのでは
- 692 :デフォルトの名無しさん :2020/11/21(土) 16:59:03.08 ID:ZU3qCVhf0.net
- ASP.NET Coreを勉強してみようと思うんだけど
レンタルサーバの「使えるプログラム」のところに
PHP, Ruby, PyThon, Sh としか書かれてないところはダメですよね?
- 693 :デフォルトの名無しさん :2020/11/21(土) 18:32:27.77 ID:+zQLxjm30.net
- 勉強ならローカルで動かせばよろし。
- 694 :デフォルトの名無しさん :2020/11/21(土) 19:15:26.59 ID:pEQG3awY0.net
- >>690
ライブラリ教えてなんてレスは一度もしてないし主題とは違う返信に対して検索や外部リンクまでチェックする義務が発生する理屈の方が訳わからない
提案してくれた>>663には感謝するけど、あくまで自分の質問は660のレス内容
C#の質問をしたつもりだけど言語の質問とは違うということであればスレチと言われても仕方ないが
- 695 :デフォルトの名無しさん :2020/11/21(土) 20:16:31.79 ID:WQW9Bpg70.net
- >>669
編集してるXXX.csファイルを読み込んで
NameValueCollection vals = new NameValueCollection行の次の
{行からそのあとの};行の間の行に先頭スペースを揃えて挿入して
ファイルを上書き保存するミニアプリを作って実行すればいい
テキストの平文ファイルだから編集は簡単
VSで編集中にそのような外部エディタで編集がされると
編集を反映しますかって即座に聞いてくるからはいすれば位置がそろう
- 696 :デフォルトの名無しさん :2020/11/21(土) 23:02:14.09 ID:eXf0RCq40.net
- >>689 全世界で行われてる円周率演算がすべて世界記録出すために動いてると思ってる馬鹿
- 697 :デフォルトの名無しさん :2020/11/22(日) 02:05:01.90 ID:eyJ/0uPg0.net
- >>694
@マジレスするとメモリリークはしない。こんなのはGC.Collectしてメモリ使用量を見比べるだけで分かる
Aでも>>661の使い方ではインターンプールで潜在的なバグを抱えるからやめた方が良い
Bやりたいこと汲み取るなら先人が同じ悩みから到達したソースを使うべき
CZStringいいよ
余計な遠回りをしないようにこの結論から言ってくれてるんだよ
>>663は優しい奴だよ、まったく
- 698 :デフォルトの名無しさん :2020/11/22(日) 02:09:21.16 ID:r7dn6Jzr0.net
- >>696
何のためにやってるの?自己満オナニー?
- 699 :デフォルトの名無しさん :2020/11/22(日) 02:37:39.25 ID:XfbnXwSba.net
- >>696
どっから世界記録とか出てくるの?w
読解力大丈夫かこの人
- 700 :デフォルトの名無しさん :2020/11/22(日) 08:48:28.54 ID:VTf/cbNB0.net
- >>697
マジレスすると今のところはヘッダオンリーならぬ単ソースオンリーで済ませたいのであんまり外部ライブラリには乗り気じゃないというのもあるが
とは言えZStringを拝見したところu8stringをC#で実装出来てる凄いライブラリであるようなのでtext系ファイルやらwebやらdbのクエリやらで利用したい構想立ちまくったのでありがたくスターポチって記憶させていただく
確かにただのバッファとして作ったものの実態はstringに違いないので何かの拍子にstring.Internしてしまうと結構不味いことになるね
とりあえずGCに影響ないと教えてくれて大分スッキリしたのでありがとう
- 701 :デフォルトの名無しさん :2020/11/22(日) 09:03:29.09 ID:0zyBqMyr0.net
- >>699
「円周率の桁数を追求する」ってのは結局そういうこと
- 702 :デフォルトの名無しさん :2020/11/22(日) 09:27:31.41 ID:7FLAKb9y0.net
- 一番じゃないと駄目なんですか?
- 703 :デフォルトの名無しさん :2020/11/22(日) 13:34:50.51 ID:vJ51qgrt0.net
- superPIじゃ駄目なんですか?
- 704 :デフォルトの名無しさん :2020/11/25(水) 08:28:57.90 ID:5XzEVJhy0.net
- COMインターフェイスをstructに付けてboxing発生させずに使用する方法って皆無でしょうか?
- 705 :デフォルトの名無しさん :2020/11/28(土) 16:25:59.35 ID:Msb6oswN0.net
- c# プログラマは goto でコロナを拡散してるから、ウィルス作成罪とかで刑務所にぶちこむべき。
もちろん、実質的に goto と同じ if文 、swich case とか使ってるc# プログラマも有罪。
swift や Pythonプログラマは goto 使ってないから無罪。
- 706 :デフォルトの名無しさん :2020/11/28(土) 17:07:38.54 ID:goyIH8CW0.net
- 面白いと思って書いたの?
- 707 :デフォルトの名無しさん :2020/11/28(土) 17:18:49.30 ID:qYAW4hVUM.net
- 705は死刑
- 708 :デフォルトの名無しさん :2020/11/28(土) 17:53:33.87 ID:yGy7muY00.net
- >>705
Go To Hell
- 709 :デフォルトの名無しさん :2020/11/28(土) 17:57:32.34 ID:qYAW4hVUM.net
- >>708
このハゲェ!
- 710 :デフォルトの名無しさん :2020/11/28(土) 18:38:36.41 ID:pMGwV9fR0.net
- Windowsの ini ファイルの内容を Section, Key, Value の順で
List<Dictionary<string, List<Dictionary<string, string>>>> ini;
ini = new List<Dictionary<string, List<Dictionary<string, string>>>>();
として取り込んだものから Section の一覧(Delphi の ReadSections 相当)を
得たいのですが方法がわかりません。
教えていただけませんでしょうか。
- 711 :デフォルトの名無しさん :2020/11/28(土) 18:43:14.08 ID:YkgqIE2E0.net
- それのどこが分からないのか分からん
あとListはいらなくない?
- 712 :デフォルトの名無しさん :2020/11/28(土) 18:54:47.55 ID:v3rIW/CF0.net
- >>705
よくわかりません。
C#はgotoを使わずとも実質gotoできるが、
swiftやPythonが実質gotoもできない根拠を示して下さい。
- 713 :デフォルトの名無しさん :2020/11/28(土) 19:14:35.24 ID:pMGwV9fR0.net
- >>711
説明が下手ですいません。
セクション名の一覧が下記のような考え方で取得できないかと考えていました。
public void ReadSections(ref string[] sections)
{
Array.Resize(ref sections, ini.Count);
var i = 0;
foreach (var dic1 in ini)
{
sections[i] = セクション名
i++;
}
}
書き込んだ後、下記のようにしたら希望の動作をしました。
public void ReadSections(ref string[] sections)
{
Array.Resize(ref sections, ini.Count);
var i = 0;
foreach (var dic1 in ini)
{
dic1.Keys.CopyTo(sections, i);
i++;
}
}
- 714 :デフォルトの名無しさん :2020/11/28(土) 19:41:10.86 ID:7NcH7NyO0.net
- >>710
自分もList使う意味が見いだせない
var ini = Dictionary<string, Dictionary<string, string>>とかで良いんじゃないの?
これならvar value = ini["セクション名"]["キー名"]で取り出せる
if (ini.TryGetValue("セクション名", out var keys) && keys.TryGetValue("キー名", out var value)) とやったほうが良いと思うが
代入はini["セクション名"]["キー名"] = value;
- 715 :デフォルトの名無しさん :2020/11/28(土) 20:02:20.04 ID:M3lV8yHm0.net
- Sectionの配列を得たいなら>>714にLinqのini.Keys.ToArray()
- 716 :デフォルトの名無しさん :2020/11/28(土) 20:33:03.95 ID:pMGwV9fR0.net
- >>714,715
.NET 5 が出たのを機に c# を始めたところなのでよくわかっていません。
勉強がてら自作の Delphi7(Lazarus) の自作ライブラリと同じ物の作成に挑戦中です。
ini ファイルの読み込みもネットからダウンロードしたものをベースに
改造して動きを勉強しているところです。
ですので List になっている理由もまだ理解できていませんし、Dictionary も
今日初めて見た状態です。一応 List を外してみると
foreach (var dic1 in ini)
{
if (dic1.ContainsKey(section))
{
foreach (var dic2 in dic1[section])
{
if (dic2.ContainsKey(key))
{
return dic2[key];
}
}
}
}
のような場面で ContainsKey がエラーとなりました。
とりあえず Delphi の TMemIniFile と同じ程度までできました。
- 717 :デフォルトの名無しさん :2020/11/28(土) 21:13:18.17 ID:M3lV8yHm0.net
- >>716
Listを外してforeachする場合はこう変える必要がある
foreach (var dic1 in ini)
{
if (dic1.Key == section)
{
foreach (var dic2 in dic1.Value)
{
if (dic2.Key == key)
{
return dic2.Value;
}
}
}
}
もっと簡単な方法は>>714に書かれてる通り
if (ini.TryGetValue(section, out var keys) && keys.TryGetValue(key, out var value)) return value;
- 718 :デフォルトの名無しさん :2020/11/28(土) 21:20:41.11 ID:M3lV8yHm0.net
- pascalのiniなんてもう遥か昔に使ったきりだからあんまり覚えてないがそれっぽいの作るとしたらこんな感じか
Dictionary<string, Dictionary<string, string>> ini = Dictionary<string, Dictionary<string, string>>();
string ReadString(string section, string key)
{
if (ini.TryGetValue(section, out var keys) && keys.TryGetValue(key, out var value)) return value;
else return null;
}
これだとnullチェックが必要になるから、Tryメソッドの方が便利だったりする
bool TryReadString(string section, string key, out string value)
{
value = null;
return ini.TryGetValue(section, out var keys) && keys.TryGetValue(key, out value);
}
- 719 :デフォルトの名無しさん :2020/11/28(土) 21:27:31.90 ID:M3lV8yHm0.net
- そういえばiniは無かった場合の規定値を第3引数に入れておけばいいだけか
それならTryメソッドいらんね
- 720 :デフォルトの名無しさん :2020/11/28(土) 23:40:53.47 ID:xlHMBUaz0.net
- sectionの一覧が欲しいって言ってるのに、valueを取り出す説明を延々してる奴何なの?
- 721 :デフォルトの名無しさん :2020/11/29(日) 00:02:00.65 ID:agHPEKHb0.net
- string GetValue(Dictionary<string, Dictionary<string, string >> ini, string section, string key){
if(! ini.ContainsKey(section)) return null;
if(! ini[section].ContainsKey(key)) return null;
return ini[section][key];
}
c#に限った事ではないが、何をしたいのか分かりやすいコードを目指そうな。
- 722 :デフォルトの名無しさん :2020/11/29(日) 00:10:23.95 ID:eEpZgXkU0.net
- だから質問者が欲しいのはvalueじゃなくてsection一覧だっての
- 723 :デフォルトの名無しさん :2020/11/29(日) 06:31:38.45 ID:kNuJF9Ar0.net
- datagridviewにユーザーコントロールを埋め込みたいんですけどどうすればいいですか?
windowsformアプリです
ていうかdatagridviewじゃなくてもユーザーコントロールをリストで表示できれば何でもいいです
どなたか教えて下さい
- 724 :デフォルトの名無しさん :2020/11/29(日) 08:16:40.50 ID:+pk7xniq0.net
- >>723
TableLayoutPanel とか FlowLayoutPanel はどう?
- 725 :デフォルトの名無しさん :2020/11/29(日) 08:16:40.50 ID:+pk7xniq0.net
- >>723
TableLayoutPanel とか FlowLayoutPanel はどう?
- 726 :デフォルトの名無しさん :2020/11/29(日) 09:35:53.03 ID:yrxBBFH+0.net
- >>720
それは一番上に書いたんだが
- 727 :デフォルトの名無しさん :2020/11/29(日) 09:40:01.71 ID:yrxBBFH+0.net
- >>721
section取り出す説明は昨日一番最初のレスで書いたからもう脱線して話すけどなんでここまでTryGet使わない奴って多いんだろうな
どうせ後々インデクサアクセスするならTryGetValueの方がよっぽど分かりやすいと思うんだが
- 728 :デフォルトの名無しさん :2020/11/29(日) 12:22:24.94 ID:kNuJF9Ar0.net
- >>724
ありがとうございます
試してみます
- 729 :デフォルトの名無しさん :2020/11/29(日) 17:19:06.82 ID:b9LXd7l70.net
- >>723
DataGridViewCellとDataGridViewColumnを継承して自作
- 730 :デフォルトの名無しさん :2020/11/29(日) 17:32:18.08 ID:MpNpLm4W0.net
- >>721>>727
ConstainsKey → []は、まずContainsKeyの内部でFindEntry走らせて存在確認し、存在したらインデクサアクセスして再度内部でFindEntry走らせて取り出すという2度手間してるIQ低いコード
TryGetValueは存在確認時にFindEntryしたついでに値も取り出すというスマートな関数
そもそも前者で済むならTryGetValueは存在意義ないから、上記の仕組みを想像できずとも「なんでTryGetValueってあるんだろう?」と疑問に思わなければいけない
ま、C#は多様性受け入れてる言語だから個人開発なら好きに書いたらいいが
- 731 :デフォルトの名無しさん :2020/11/29(日) 18:14:07.88 ID:o/YPVzQP0.net
- そういう値をローカル変数に代入するのを無駄と言い張って勝手にワンライナーに書き直すような地雷プログラマの振りをするのはやめろよ……初心者が本気にしたらどうするんだよ
- 732 :デフォルトの名無しさん :2020/11/29(日) 18:23:09.50 ID:MpNpLm4W0.net
- >>731
今の話でローカル変数やワンライナーが出てくる余地あるか?
- 733 :デフォルトの名無しさん :2020/11/29(日) 18:52:20.22 ID:o/YPVzQP0.net
- >>732
明確にガード節で判定が切り分けられているのに、
「TryGetValueなら判定と取得を同時に行える」と言い出すのはまさしくワンライナー君の物言いだぞ
ifをあえて二つ用意してContainsKeyを使ってる時点で
「ははーん、論理重視のコーディングスタイルか」と察してやるのが有能なプログラマってもんだ
- 734 :デフォルトの名無しさん :2020/11/29(日) 18:58:47.11 ID:MpNpLm4W0.net
- >>733
???
2連続で全く不必要に同じ処理を挟むような奴がとても論理重視とは思えないんだが、ContainsKey + []とTryGetValueじゃ2倍以上パフォーマンス変わってくるって知ってる?
さっきも言ったけどContainsKeyでも内部的にFindEntryが走り、インデクサアクセスでも再度FindEntryが走るという無駄がある
再度言うがMSがなんでTryGetValueというメソッドを公式でわざわざ用意したかって疑問に思わない?
簡潔さ全振りならそもそもLinq使えばいい話
- 735 :デフォルトの名無しさん :2020/11/29(日) 19:01:28.82 ID:tRrXGfded.net
- メソッドの戻り値を一回判定するだけなら
一行で書かないほうが変じゃね?
それをわざわざ一旦保存とか逆になんの意図があるのかと
たまにはデバッグやらログで出したいからと言うのはあるがそれは2回利用に当たるから入れて当然やしな
- 736 :デフォルトの名無しさん :2020/11/29(日) 19:41:11.64 ID:o/YPVzQP0.net
- >>734
久々にふふってなった
まるで昨日の俺を見ているようだ……お前にもいつか悟れる日が来ると良いな
- 737 :デフォルトの名無しさん :2020/11/29(日) 20:16:26.39 ID:EVjNfLc/0.net
- 判定と取得を行いたいんじゃなくて取得を行いたい
なのに判定しないとプログラム上まずいことになるので判定機能付きの取得メソッドを使う
読む上でわざわざ判定と取得を別に書いてるならそこにあえての理由があるんだろうな、と推測しないといけない
今回のケースならあえてのケースなど無いので可読性を下げる要因でしか無い
- 738 :デフォルトの名無しさん :2020/11/29(日) 20:17:12.32 ID:3Ka2HmX40.net
- >>736
きみ中学生?
男?女?どこ住み?
- 739 :デフォルトの名無しさん :2020/11/29(日) 20:28:09.84 ID:HJnVnweF0.net
- >>736
それは廓然大悟かね?
- 740 :デフォルトの名無しさん :2020/11/29(日) 20:31:48.44 ID:yrxBBFH+0.net
- >>737
これのどっちが可読性良いかなんて個人の感想レベルだろ
実際俺は100%下のほうで書いてるけど一度もコードレビューで指摘されたことないしな
そして>>734が言うように実行効率は下の方が2倍近く良いので下を選択すべき理由はある
一方で上を選択すべき理由は見当たらない
if(! ini.ContainsKey(section)) return null;
if(! ini[section].ContainsKey(key)) return null;
return ini[section][key];
if (!ini.TryGetValue(section, out var keys)) return null;
if (!keys.TryGetValue(key, out var value)) return null;
return value;
- 741 :デフォルトの名無しさん :2020/11/29(日) 20:43:57.67 ID:yrxBBFH+0.net
- 一応言っておくけどここでは713や720に合わせて書いてるだけで実際には1行で書いたりこんなに複数retは使わない
returnは一つにしろというレビューは受けたことあるんでな
- 742 :デフォルトの名無しさん :2020/11/29(日) 20:51:31.28 ID:3Ka2HmX40.net
- >>740
普通に英語として下の方が直感的に分かる
上だと今ですら非直感的な上に変数名によっては更に分かりづらくなる可能性をはらんでる
- 743 :デフォルトの名無しさん :2020/11/29(日) 20:54:18.24 ID:YUoXGIHl0.net
- >>720
TryGetValue()知ってるオレカッケー
って言うおこちゃまだろw
- 744 :デフォルトの名無しさん :2020/11/29(日) 20:56:55.50 ID:EVjNfLc/0.net
- 無理に一行にするな、が通るならreturnを1つにしなくていいのでは?
数十行あるメソッドのいろんな箇所でreturnしてると気持ち悪いと思うが、こういうタイプなら複数returnで良い
可読性が個人レベルなのはそのとおり
文字の並びが似通っている、ではなくどういう機能を呼んでいるか?という意味
判定付き取得メソッドが標準で用意され、しかもメジャーな内容でパフォーマンスも良い
それでもあえてそれを呼ばないのは特殊な事情があるのでは?と読み手の思考を止めることにつながるという意味
- 745 :デフォルトの名無しさん :2020/11/29(日) 21:06:40.39 ID:o/YPVzQP0.net
- >>740
上のコードを採用する理由は何の値を戻しているか即座に分かるところ、と俺は判断した
return ini[section][key];
この一文で読解に要する数秒を削る為だけに2倍程度のパフォーマンスを許容するのは普通にありだよ
- 746 :デフォルトの名無しさん :2020/11/29(日) 21:23:27.82 ID:EVjNfLc/0.net
- メソッド名見りゃそれはわかんじゃん
return文にそういう責務を与える意味は?
どうしても必要というならコメントでも書いとけば良い
- 747 :デフォルトの名無しさん :2020/11/29(日) 21:36:16.22 ID:yrxBBFH+0.net
- >>744
returnについては可読性に関わる納得できた理由はちゃんとあるんだが自分やチームが使わないというだけで別にうちのコーディング規約を議題に上げるつもりはない(ツッコんでくる人いそうだったから一応書いただけ)
まぁもう好きにしたらええんやない
C#メインで使っていきたいなら言語として用意されてるものは出来る限り利用すべきと思うけど
そこまで学習コスト払いたくないってことなら一つの方法を出来る限り使いまわすというのも利に適ってるしな
- 748 :デフォルトの名無しさん :2020/11/29(日) 21:49:34.68 ID:EVjNfLc/0.net
- チーム内でのローカルルールがどうなってるかはどうでも良いんですよ
そのチームで合意が取れてるならなんの問題もない
ローカルルールを隠した状態で突っ込まれてローカルルールなんです!って言われても知るかよ、という感想しか出ない
ローカルなものでないなら、基本的には標準に準拠すべきで標準がわざわざtryメソッドを回避している書き方をしていない限り公の場でもそれに準じたほうが良いのでは?というだけ
- 749 :デフォルトの名無しさん :2020/11/29(日) 21:53:07.17 ID:yrxBBFH+0.net
- >>748
いやだからTryGetValueに関してはそれが標準だろっていうのが一貫した俺の意見であってローカルルールなのは>>741で書いた事
実際にギブハブなんかで数多くのプロジェクト参考にしてきたけどLinqで手っ取り早く書く事は多くてもTryGetValueを使わずにContainsとインデクサとかいう非効率な方法採用してる人なんて見た記憶ないしな
- 750 :デフォルトの名無しさん :2020/11/29(日) 21:58:49.11 ID:EVjNfLc/0.net
- >>749
なんで突っかかってくるかわからんけど747の前半は複数retの話、後半はtryの話
わざわざローカルの話である複数retのことなんざ話題に上げんで良いよ、try使うのが標準なんだからそれに習ったほうがよくね、
後半は君と同意見なんだよ
- 751 :デフォルトの名無しさん :2020/11/29(日) 22:01:07.98 ID:yrxBBFH+0.net
- >>750
捕捉程度のノリで書いた事に異様に突っ込んでくるなと思ってビックリしたんでね
それも議題に上げたいのであれば>>740でそういう書き方してるから
- 752 :デフォルトの名無しさん :2020/11/29(日) 22:11:12.12 ID:EVjNfLc/0.net
- >>751
前提として標準に準拠したほうが良いよね、という主張がある
標準では複数retなんて当たり前に使ってる
それをなぜか否定しているので突っ込んだらローカルルールだ!と言われる
そういうローカルルールがあるのは構わんが、それならそう明記しなきゃ標準に準拠しようという主張とズレてブレブレなだけでは?
まさかレビューを受けたことがある、がうちにはそういうコーディング規約があるんです、の意味だったの?
- 753 :デフォルトの名無しさん :2020/11/29(日) 22:16:38.50 ID:yrxBBFH+0.net
- >>752
だから本気で否定したいなら739でもそうやって書いてるって言ってるやん
740で書いたのは「沢山return書いてる時点で可読性低い」みたいなツッコミが入るかなーと予測して"一応"と前置きして書いたと言っただろ
そこを議論するつもりはないと書いたのに異様に拘るんだな
- 754 :デフォルトの名無しさん :2020/11/29(日) 22:22:25.03 ID:kxXRvhGP0.net
- 複数リターン禁止www
- 755 :デフォルトの名無しさん :2020/11/29(日) 22:22:55.87 ID:o/YPVzQP0.net
- >>749
正直俺も見たことないが、>>721が書いてるんだからいるところにはいるんだろ
肝心なのはそいつが何を思ってそういうスタイルにしたのか察して評価してやることで、
>>730みたいに重箱の隅突いて喜ぶのはただの地雷コーダーだからやめるべきだよ
例えば誰かが「ギブハブ」とか言ってても、わざわざ「ギブハブってなんだよバカかよ」と噛み付く必要はないだろ?
GitHubなのは分かるし話は通じてるんだからこいつの中ではこうなのかと納得して「ほーん、ギブハブがどうした?」と聞き返すのが有能なんだよ
- 756 :デフォルトの名無しさん :2020/11/29(日) 22:26:49.20 ID:EVjNfLc/0.net
- >>753
意味がわからんけど補足がなけりゃツッコミなんてなかったんだよw
こだわってるのはそっちでしょwこっちはそうですか、という感想しか無いよって言ってるやんw
- 757 :デフォルトの名無しさん :2020/11/29(日) 22:38:58.86 ID:5TTB8+bC0.net
- チャゲアスASUKAのギフハブに監視されてるネタに掛けてGitHubをギフハブと呼ぶのは5chの標準語だと俺も思ってたがそこまで浸透してないのか
- 758 :デフォルトの名無しさん :2020/11/29(日) 22:42:09.42 ID:T9vV3uABa.net
- なんとも不思議な世界があるんだなあ・・・・
TryGetValueを使うのが今どきの常識的なコーディングだと思ってた自分としては
老害(あるいは悪意があって不適切なコーディングを押し付けようとしてる人)が世迷言をほざいてるだけにしか見えないや
- 759 :デフォルトの名無しさん :2020/11/29(日) 22:53:33.81 ID:yrxBBFH+0.net
- >>755
その理屈で行くとコードレビューなんて出来なくなるな
(これ明らかに意味のない文だけど何かスピリチュアル的な深い意味があるのだろうか…?配慮して指摘すべきではないか…?)なんて一々考察しなきゃいけないのかよ
- 760 :デフォルトの名無しさん :2020/11/29(日) 23:00:13.09 ID:YUoXGIHl0.net
- 了解
- 761 :デフォルトの名無しさん :2020/11/29(日) 23:03:55.81 ID:YUoXGIHl0.net
- >>754
MISRAにもあるし高信頼性を要求される場面ではそれなりにありがちな話だよ
- 762 :デフォルトの名無しさん :2020/11/29(日) 23:14:22.90 ID:iy3zNsHi0.net
- >>759
レビュー受けてるような新人はそんなこと考えなくていいと思うよ
多次元辞書でアクセスそのまま返す利点が分からないならまだお勉強段階なんだから、そういうやり方もあると素直に学んでおけば良い
とりあえずチューニングはベテランがもっと後でやる仕事だから、パフォーマンスがーとか言い出すのは十年早い
- 763 :デフォルトの名無しさん :2020/11/29(日) 23:30:20.42 ID:yrxBBFH+0.net
- そう主張するのであれば具体的な利点を述べろよ
TryGetValue派は俺以外にもメリット述べてる奴いるけどContainsKey派は「そのほうが見やすい」程度の個人の感想以上は出てきてない
勿論それもメリットではあるがTryGetValueの方が見やすいと言う人もいるのでそこでは差は付かない
- 764 :デフォルトの名無しさん :2020/11/29(日) 23:51:14.64 ID:kxXRvhGP0.net
- >>761
ねーよ
- 765 :デフォルトの名無しさん :2020/11/29(日) 23:59:15.56 ID:AAs5LLYH0.net
- 宗教論争オモロイなw
- 766 :デフォルトの名無しさん :2020/11/30(月) 00:00:33.52 ID:n5NKB6GR0.net
- >>763
しょうがないな
こういうケースは極端化すれば明確になる
dic.TryGetValue(a, out var dic2)
dic2.TryGetValue(b, out var dic3)
dic3.TryGetValue(c, out var dic4)
dic4.TryGetValue(d, out var dic5)
dic5.TryGetValue(e, out var value)
vs
var value = dic[a][b][c][d][e]
とりあえず値の取得を比較した場合こうなる
非常に馬鹿げたコードだが後者の方が察しやすくバグりにくいのは分かるはず
これは分岐を差し込んでも同じこと
こんなコードは現実にあり得ないから無効と言い張るなら、所詮はその程度のレベルなんだから黙るべき
- 767 :デフォルトの名無しさん :2020/11/30(月) 00:20:59.97 ID:9x2/PpIx0.net
- TryGetValue vs ContainsKey+[]の争いでしょ?
なら下はちゃんと一つ一つにContainsKey挟むべき
そして後者の方がバグりにくい理由が全く分からない。まず何のバグを対象としているのか明確に
- 768 :デフォルトの名無しさん :2020/11/30(月) 00:25:39.57 ID:G1P0/YpK0.net
- レビューを受けるのが新人とか言ってる時点でまともじゃないでしょ
いつの時代のエンジニア思想よw
- 769 :デフォルトの名無しさん :2020/11/30(月) 00:26:29.87 ID:E5czHbG2a.net
- なんというかb7e4-nc77みたいなのがレビュアーやったら地獄だな
自分が新人だったらたまったもんじゃない
- 770 :デフォルトの名無しさん :2020/11/30(月) 00:36:41.15 ID:EEdVS6ls0.net
- >>767
お前さんプログラマ向いてないから転職した方が良いよ、マジで
ちゃんと理屈で教えられたことを受け付けないとか先が無さすぎる
- 771 :デフォルトの名無しさん :2020/11/30(月) 00:39:46.85 ID:qXuQLmTVa.net
- どうせ過疎スレだからスレ消費するのは問題ないと思うけど
あまりに下らな過ぎる論争で萎えるねw
よく読んでないので素っ頓狂なこと言ってるかもしれないけど、
iniファイルぐらいなら馬鹿正直にDictionaryをネストなんかしなくても
section+keyをキーにして平坦化しても良いような気もする
- 772 :デフォルトの名無しさん :2020/11/30(月) 00:45:42.05 ID:9x2/PpIx0.net
- >>770
答えられないんだね
- 773 :デフォルトの名無しさん :2020/11/30(月) 01:29:55.64 ID:a85534SW0.net
- ini parserの中身を見たらContainsKey + インデクサだった
https://github.com/rickyah/ini-parser/blob/development/src/IniParser/Model/SectionCollection.cs#L62-L77
自分なら使う側のコードがシンプルになるようにini[section][key]かini[section]?[key]の形で
sectionかkeyがnullならnullを返すようにDictionaryを少し拡張するかな
- 774 :デフォルトの名無しさん :2020/11/30(月) 05:30:56.15 ID:lgcZd+iw0.net
- >>764
お前がそういう世界を知らんだけ
- 775 :デフォルトの名無しさん :2020/11/30(月) 08:23:44.56 ID:gN60+pZv0.net
- 相変わらず質問者無視で議論してるのウケる
テンプレ読めない人多すぎでしょw
- 776 :デフォルトの名無しさん :2020/11/30(月) 08:57:23.41 ID:8S8hZPx60.net
- >>771
そもそもini直接操作するならWin32APIにセクション名とキー名と無かった場合の規定値を突っ込むだけで良いからDictionaryすらも何もいらない
pascalにはMemIniみたいな基本はファイルには書き込まないクラスがあるからそれを実装しようと思ったらDictionaryがベストなんじゃない
>>775
section一覧を返す方法は一昨日の一番最初のレスでしたって昨日言ったはずだが無視してるのはお前の方だろ
- 777 :デフォルトの名無しさん :2020/11/30(月) 09:04:32.51 ID:8S8hZPx60.net
- >>773
そのプロジェクト見た感じTryGetValueを一度も使ってないから恐らくJavaか何か出身で存在知らないんだろうな
ContainsKeyは割と色んな言語にあるからこっちの方が認知度高いのは間違いない
なので昨日も言ったが一々C#に学習コスト払いたくないって人もいるだろうからそういう場合は好きにしたらいい
- 778 :デフォルトの名無しさん :2020/11/30(月) 10:07:26.68 ID:3MSQwEh40.net
- >>776
テンプレ読めよ
「議論」するなと言っているんだが
- 779 :デフォルトの名無しさん :2020/11/30(月) 10:12:11.16 ID:I8/NWgIp0.net
- テンプレ読めないって事はレスも読めないんだから言っても無駄
粛々とNG
- 780 :デフォルトの名無しさん :2020/11/30(月) 10:29:32.82 ID:lgcZd+iw0.net
- >>766-767
まあここまで極端な例なら
try {
var value = dic[a][b][c][d][e];
} catch(){
}
ってやる事を検討してもいいかも
- 781 :デフォルトの名無しさん :2020/11/30(月) 10:45:42.20 ID:0LXXOsdO0.net
- >>777
お、ようやく自分の間違いを認めたか
まあContainsKeyの方が可読性高いのは当たり前なんだが
762 名前:デフォルトの名無しさん (ワッチョイ 9f24-GtYN) [sage] :2020/11/29(日) 23:30:20.42 ID:yrxBBFH+0
そう主張するのであれば具体的な利点を述べろよ
TryGetValue派は俺以外にもメリット述べてる奴いるけどContainsKey派は「そのほうが見やすい」程度の個人の感想以上は出てきてない
勿論それもメリットではあるがTryGetValueの方が見やすいと言う人もいるのでそこでは差は付かない
- 782 :デフォルトの名無しさん :2020/11/30(月) 11:16:43.36 ID:o8riI3080.net
- >>781
可読性と認知度は全然違う意味だと思うけど、っていうのは置いといて
>>733とか>>766とかさすがに釣りでしょって思わせるレスがちらほらあるから、喧嘩両成敗はちょっと可哀想な流れ
- 783 :デフォルトの名無しさん :2020/11/30(月) 11:55:30.78 ID:tpJ2df0N0.net
- >>774
ちょっとはググれよ
- 784 :デフォルトの名無しさん :2020/11/30(月) 11:58:06.51 ID:UK/ABAdxa.net
- 認知度と可読性が別物か
職場で宇宙人って呼ばれてそう
- 785 :デフォルトの名無しさん :2020/11/30(月) 12:11:19.73 ID:zbjAWIZjd.net
- >>780
これでええやん
例外が重い?知るかよ
- 786 :デフォルトの名無しさん :2020/11/30(月) 12:13:44.19 ID:lgcZd+iw0.net
- >>783
> ちょっとはググれよ
ブーメラン過ぎる、ってかググっても悪魔の証明はできないぞw
- 787 :デフォルトの名無しさん :2020/11/30(月) 12:15:09.00 ID:0LXXOsdO0.net
- TryGetValueを使うことに拘りすぎててアスペ臭しか感じない
好きにしろと言いながら必死で反論してんのが特にな
多様性を許容するっていうのは>>755みたいなスタンスなんだよ
ここまで言われて「何言ってんのか分かんない」と騒ぎ続けるのは感情で理解を拒んでるだけの地雷君
「そういうの嫌われるからやめよ?」って指摘されてるのに「なんで? 俺が正しいじゃん?」って返すのは馬鹿を通り越した何かだわ
- 788 :デフォルトの名無しさん :2020/11/30(月) 12:26:00.27 ID:tnWbc17e0.net
- こういうレスちんぽバトルやめねぇ?
- 789 :デフォルトの名無しさん :2020/11/30(月) 12:51:21.50 ID:tpJ2df0N0.net
- >>786
MISRAって名前まで分かってるのに?
- 790 :デフォルトの名無しさん :2020/11/30(月) 12:52:22.17 ID:PPubPKASd.net
- いまだに複数リターン禁止なんて言ってる時代錯誤なやつがいるのかよ…
- 791 :デフォルトの名無しさん :2020/11/30(月) 14:08:46.39 ID:lgcZd+iw0.net
- >>789
???
ないことの証明だよ?
悪魔の証明って知らんの?
- 792 :デフォルトの名無しさん :2020/11/30(月) 14:09:59.63 ID:lgcZd+iw0.net
- >>790
だからお前等の知らない世界があるって話
まあC++とかC#だと例外とか使えるからだいぶ緩和されるけど
- 793 :デフォルトの名無しさん :2020/11/30(月) 14:11:44.42 ID:tpJ2df0N0.net
- >>791
まずはあることを示してから
- 794 :デフォルトの名無しさん :2020/11/30(月) 14:31:16.69 ID:zbjAWIZjd.net
- >>792
アセンブラ以外でFalseは即リターンなんてベストプラクティスやん
if elseとか基本ダサいんだよね
- 795 :デフォルトの名無しさん :2020/11/30(月) 15:11:50.10 ID:lgcZd+iw0.net
- >>793
それこそ misra multiple return とかでググればいくらでも出てくるだろw
https://www.viva64.com/en/w/v2506/
>>794
だからそう言うのが非推奨な現場があるというだけの事
個人的には関数の頭でのエラーチェックでエラーだったら即リターンとかよくやってる
- 796 :デフォルトの名無しさん :2020/11/30(月) 15:27:06.61 ID:tpJ2df0N0.net
- >>795
それのどこがC#なんだ?
- 797 :デフォルトの名無しさん :2020/11/30(月) 16:36:59.20 ID:r8rQ87Qr0.net
- 関数の出口が、複数ある奴か。
危険だから、MISRA-C の禁止事項
一方、Linux では関数の冒頭で、処理しない場合は、即リターンするとかやってる。
関数の出口に、goto で例外処理をまとめたりとか
MISRA-Cを守らない場合は、逸脱手続きが必要。
トヨタなどは、MISRA-Cで、4/100 しか点数を取れなかったとか聞いたw
MISRA-C研究会にも、トヨタのベテランが加入してるのに
- 798 :デフォルトの名無しさん :2020/11/30(月) 16:46:43.31 ID:dO4rlTbV0.net
- 俺社環だけど、これ指摘したらそれは例外処理や自動メモリ管理がないCであって、C#ではそこまで気にする必要ないんじゃね?で終わったな
- 799 :デフォルトの名無しさん :2020/11/30(月) 16:53:06.40 ID:r8rQ87Qr0.net
- 辞書のキーが存在しないのは、例外じゃない。
最初から想定内の事で、予想がつくから
例外はファイルが存在しないとか
Go では例外を嫌って、複数の戻り値で、エラー値を返す
- 800 :796 :2020/11/30(月) 16:56:08.66 ID:r8rQ87Qr0.net
- 漏れは、戻り値を変数に入れておいて、return は1つだけにしてる
if 条件
result = 1
else
result = 2
end
return result
- 801 :デフォルトの名無しさん :2020/11/30(月) 17:07:26.72 ID:pPofn0IB0.net
- うっかりミスってreturnし忘れてもIDEが警告してくれるから、分岐それぞれでreturnするほうが好き
- 802 :デフォルトの名無しさん :2020/11/30(月) 17:08:29.73 ID:8S8hZPx60.net
- 複数returnとかワンライナーとかはそれこそ正解の無い事だから各々好きにしてくれよ
TryGetValueとContainskey+インデクサは正解があると思ってるからこっちはつい反論し続けてしまったが
- 803 :デフォルトの名無しさん :2020/11/30(月) 17:11:06.92 ID:DAJE5R+zd.net
- なぜこのスレはテンプレを見る限り質問スレなのにスレタイにそれを示唆する文言が入っていないのですか?
- 804 :デフォルトの名無しさん :2020/11/30(月) 17:15:26.09 ID:3PLmCTmV0.net
- ヌルチェックやりはじめてから一刻も早くreturnすることを考えて書くようになった
階層が深くならないので見やすいし、上の部分だけである条件にあてはまった処理が完結してるので読みやすい
- 805 :デフォルトの名無しさん :2020/11/30(月) 17:24:24.88 ID:tpJ2df0N0.net
- >>798
ね、Cですら"推奨"なのに
- 806 :デフォルトの名無しさん :2020/11/30(月) 18:17:44.47 ID:a85534SW0.net
- >>797
>危険だから、MISRA-C の禁止事項
Mandatory, Required, Advisoryの3段階のうちAdvisoryなので禁止事項ではないね
- 807 :デフォルトの名無しさん :2020/11/30(月) 18:30:53.38 ID:n+7nNLssM.net
- >>801
さすがにMISRAとかが言ってるのはそう言う低レベルな話じゃなくて途中脱出でのリソース開放漏れとかを心配してる
なのでC#なら例外とかusingとかを適切に使えばそれほど問題にならない
クラス継承させた時のIDisposeのコーディングが面倒なのがたまにキズだけど
- 808 :デフォルトの名無しさん :2020/11/30(月) 18:52:25.38 ID:+JMSCADPD.net
- 議論は然るべきスレでどうぞ
ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1469538912/
- 809 :デフォルトの名無しさん :2020/11/30(月) 19:48:14.13 ID:xZxi3SwM0.net
- >>806
またRuby君がいい加減な知識で嘘を垂れ流そうとしてたわけか
- 810 :デフォルトの名無しさん :2020/11/30(月) 21:11:19.50 ID:X4ikUZ5gM.net
- いい加減なのは知識じゃなくて遺伝子じゃねえのか
欠陥品なんだから
- 811 :デフォルトの名無しさん :2020/11/30(月) 21:11:29.21 ID:a85534SW0.net
- 少し調べてみたけどMISRAがsingle returnを推奨する根拠に上げてるIEC 61508には
”subprograms should have a single entry and a single exit only;”と書かれているだけ
そこに参考文献としてヨードン/コンスタンティンの「ソフトウェアの構造化設計法」を上げてるが
ヨードンやダイクストラが提唱したsingle exitは時代的にも意味が違うのでルール自体の根拠が薄い
https://softwareengineering.stackexchange.com/questions/118703/
1993年出版のCode Completeでも今回のようなケースはmultiple returnが推奨されてるくらいなので
single returnはリソースクリーンアップが必要だけど
他の方法がどうしても取れないような特殊なケースでしか意味がないと思って良さそう
- 812 :デフォルトの名無しさん :2020/11/30(月) 21:15:38.40 ID:tnWbc17e0.net
- どうでもよくねw
- 813 :796 :2020/11/30(月) 21:56:17.24 ID:r8rQ87Qr0.net
- Cプログラミングの落とし穴
C Traps and Pitfalls, Andrew Koenig, 1989
ここから、Lint, MISRA-C などが出来た
- 814 :デフォルトの名無しさん :2020/11/30(月) 22:27:10.33 ID:n5+DCEBK0.net
- c#スレなんですがそれは
- 815 :デフォルトの名無しさん :2020/12/01(火) 11:25:23.55 ID:ZwYRJuoF0.net
- C#とはC++++、つまりCとC++を継承した言語である
よってC#スレにおいてCとC++は範囲内
悔しかったら言語名を変えることだな
- 816 :デフォルトの名無しさん :2020/12/01(火) 11:27:04.96 ID:vLuBExG+d.net
- キチガイ
- 817 :デフォルトの名無しさん :2020/12/01(火) 11:45:19.44 ID:K5BMxGNOM.net
- 似た話でelseを省略するな派もたまにいるけど、元はCOBOLの文法ではelse書かないとブロックの区切りが分かりにくいかららしいね
- 818 :デフォルトの名無しさん :2020/12/01(火) 12:14:20.95 ID:k3h/30i7a.net
- そんな流派の人に会ったことないけど、意図はたぶん古典的なぶら下がり問題対策だろうね
俺はこんなミスしたことないしIDEの時代には杞憂だと思うけど
if (true)
if (false) {}
else Console.WriteLine("来ないはず");
- 819 :デフォルトの名無しさん :2020/12/01(火) 14:56:29.62 ID:6hEFZljjM.net
- elseを省略しちゃダメって言うのは俺も見たことないな
>>818みたいなのを避けるために { } を省略しちゃダメって言うのは見かけるけど
- 820 :デフォルトの名無しさん :2020/12/02(水) 00:57:12.14 ID:+AssLSaA0.net
- 最近久しぶりに起動したらVSのテキストエディタの「自動メンバー表示」の項目ををカーソルキーで動かすのがとんでもなく重いんだけど俺環?
- 821 :デフォルトの名無しさん :2020/12/02(水) 01:47:00.65 ID:HjUyDubp0.net
- Dispose()しないといけない条件がいまいち分からないんですが、
コンポジションとして参照を保持しているメンバーがDispose()メソッドを持ってたら、Dispose()を実装しないといけない、ていう理解でいいんでしょうか?
- 822 :デフォルトの名無しさん :2020/12/02(水) 10:14:54.41 ID:ebqkblVHH.net
- >>821
たとえばファイルを開いて中身を書き換える処理をFileStreamでするじゃん
開いてる間は他の人やプログラムがそのファイルを使えない状況になるから
使い終わったらちゃんとDisposeで閉じましょうねって事
- 823 :デフォルトの名無しさん :2020/12/02(水) 12:15:24.35 ID:q6qthHEM0.net
- 画像とかメモリ消費量が多いオブジェクトに対して、使い終わったらちゃんとDisposeで破棄しましょうねって事
- 824 :デフォルトの名無しさん :2020/12/02(水) 12:32:26.40 ID:/5AdVnEZ0.net
- >>821
基本はYes
内部でそのメンバをDisposeする仕組みが他にあるなら別に実装しなくても良いが、とは言えIDisposableを実装しておけばそのラップクラスでもusingステートメント使えるから分かりやすいしね
IDisposableはコードでDisposeせずともGCによる破棄タイミングでDisposeしてくれるから最悪し忘れても大丈夫だが(GCによるオートDisposeはパフォーマンスが悪いので出来れば避けるべきだが)
- 825 :デフォルトの名無しさん :2020/12/02(水) 12:51:23.41 ID:VuN4nxV5M.net
- >>821
そうとは限らない
たとえば外部のAPIを使っていて、使い終わったら必ずある処理を最後に呼ばなければならないという決まりがある場合
たとえばある一連の処理の間は一時ファイルを作り、最後に消す必要がある場合
そういったユースケースをクラスにするならDisposeを実装することになるだろうな
Disposeってのはつまり、最後に特定の処理を必ず呼ばなければならないという規約に他ならない
- 826 :デフォルトの名無しさん :2020/12/02(水) 18:14:26.77 ID:w77bbFvMa.net
- >>821
エンジニアは教条主義的に考えてはいけない。
何も難しくない。
オブジェクトが自分のメンバー(フィールドかプロパティ)のDisposeを呼ぶべきタイミングを
自分で判断できるならわざわざDisposeを実装して他人にそれを任せる必要はない。
できないならDisposeを晒して他人にお願いする。
それだけでしょ。
でも「Disposeを呼ぶべきタイミングを自分で判断できる」のはメソッド呼び出しが
完了した後も別のスレッドで動作を続けるタイプのオブジェクトだけなので
そうは多くないはずだよね。
- 827 :デフォルトの名無しさん :2020/12/02(水) 19:47:17.83 ID:o81q9kO+D.net
- >>1
> なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#, C♯, C#相談室 Part94
http://mevius.5ch.net/test/read.cgi/tech/1553075856/
ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1469538912/
テンプレも読めない奴らがする議論は、
もはや議論ではなくマウンティング合戦
- 828 :デフォルトの名無しさん :2020/12/02(水) 20:41:49.29 ID:w77bbFvMa.net
- >>827
君がやってるのもそのマウンティング合戦のうちなのは自覚して欲しいよねw
もはや5ch全体がそうだけど特にここは過疎スレなわけで、そんな目くじら立てることないと思うよ
誰か困る奴いるの?w
誰もいないって。
- 829 :デフォルトの名無しさん :2020/12/02(水) 21:21:31.32 ID:hwkqsjy70.net
- 過疎スレでもルールは守れよ
- 830 :デフォルトの名無しさん :2020/12/02(水) 21:58:13.02 ID:4huF2MSH0.net
- マウンティング合戦なんか起こってたら
初心者が尻込みして書き込むのをやめてしまったりするわな
- 831 :デフォルトの名無しさん :2020/12/03(木) 00:08:24.38 ID:AfLSjnCy0.net
- winformでwebview2を使ってるんですけどcookieをセットする方法がわからなくて困ってます
どなたかわかる方教えて下さい
- 832 :820 :2020/12/03(木) 02:05:41.69 ID:plL1xX/c0.net
- みなさんありがとうございます。
そして何かすみませんでした。
- 833 :デフォルトの名無しさん :2020/12/03(木) 06:58:36.35 ID:HwhU8QlY0.net
- >>832
絶対に許さねぇからな
末代まで祝ってやるから覚悟しろよ
- 834 :デフォルトの名無しさん :2020/12/03(木) 07:07:12.64 ID:UmUyqAch0.net
- 今更訊きづらいけどgoto文のラベルの命名ルールって
goto maki;
hirohisa:
System.Console.WriteLine("誰だよ");
goto hell;
maki:
System.Console.WriteLine("知ってる");
goto hirohisa;
hell:
System.Console.WriteLine("そうだな");
こんなんでいいの?
- 835 :デフォルトの名無しさん :2020/12/03(木) 09:22:44.20 ID:Mqqeu2dm0.net
- >>831
webView2.CoreWebView2.CookieManagerはどう?
- 836 :デフォルトの名無しさん :2020/12/03(木) 16:26:09.15 ID:UmUyqAch0.net
- webview2とCEFSharpのどっちがいいのか
- 837 :デフォルトの名無しさん :2020/12/04(金) 01:59:10.27 ID:/XRPGQMq0.net
- IDisposable obj = otherObj;
using(obj){
obj = anotherObj;
}
- 838 :デフォルトの名無しさん :2020/12/04(金) 03:16:37.86 ID:yDsXPkFS0.net
- >>837
これビルド通るの?
>オブジェクトは、using ブロック内では読み取り専用です。変更したり再割り当てしたりすることはできません。
- 839 :デフォルトの名無しさん :2020/12/04(金) 16:12:00.25 ID:ZsgfFad40.net
- nugetからインストールしたライブラリですが
別のパソコンから同じプロジェクトを開けるとusing句がエラーになってしまい
ライブラリを一度アンインストール→インストールし直さなくてはなりません
複数のパソコンで同一プロジェクトを編集するときnugetは使えないのでしょうか
- 840 :デフォルトの名無しさん :2020/12/04(金) 16:16:23.76 ID:0hbyHhKrd.net
- nugetの修復みたいなことすれば足りないもの探して再DLしてくれるよ
- 841 :デフォルトの名無しさん :2020/12/04(金) 16:31:08.42 ID:e5C89TYX0.net
- ”別のパソコンから”ってもしかしてネットワーク共有して直接開いてるの?
- 842 :デフォルトの名無しさん :2020/12/04(金) 16:55:03.48 ID:ot5BaqCCa.net
- >>839
COMじゃないならライブラリのアセンブリをプロジェクトのフォルダ内に置いて
それを参照すれば一応できるんじゃないの?
やったことないから知らんけど
- 843 :デフォルトの名無しさん :2020/12/04(金) 16:55:13.19 ID:edWfS5jb0.net
- >>839
nugetのライブラリって各PCっていうかVS毎に管理しているから、ソースを別の場所に
持っていったらその環境で指定されているライブラリを拾わないとダメなんじゃ
なかったっけ?
>>840が言ってるみたいなことがnugetの管理ツールだかメニューにあったような
- 844 :デフォルトの名無しさん :2020/12/04(金) 17:04:36.37 ID:ZLeuk8KN0.net
- >>839
チキンマックナゲットは
セールのときは5個入り200円だから
そのときに買うのがベストだと思うよ。
- 845 :デフォルトの名無しさん :2020/12/04(金) 17:05:31.23 ID:ZLeuk8KN0.net
- ソースは必ずバーベキューを。
バーベキュー以外は糞まずくハズレ。
- 846 :デフォルトの名無しさん :2020/12/04(金) 17:25:30.91 ID:0hbyHhKrd.net
- CIでビルドするとき、確実にnugetの修復が必要になるから構築したことあるならわかるはず
コマンドラインからnugetにsln渡してやればDLしてくれる
つうかオンラインからいつでも好きなversionを落としてこれるのがnuget等ライブラリ管理ソフトの強みなんだからプロジェクト内にファイルなんて置いたらメリットが減る
外部ライブラリを編集しないのにバージョン管理下においてプロジェクトを肥大化させる意味がない
- 847 :デフォルトの名無しさん :2020/12/04(金) 17:50:19.19 ID:EWRKs4L00.net
- Nugetってmpnと比べて
なんでなんなにトラブルの?
- 848 :デフォルトの名無しさん :2020/12/04(金) 17:56:44.09 ID:vwTMj3ZS0.net
- mpn…なんな…?
- 849 :デフォルトの名無しさん :2020/12/04(金) 18:37:31.14 ID:4RJVpdFOr.net
- わりっ!
- 850 :デフォルトの名無しさん :2020/12/04(金) 18:50:13.35 ID:V5csDP6P0.net
- dotnet restoreすればいいけどdotnet buildとかやれば勝手にやってくれる
- 851 :デフォルトの名無しさん :2020/12/04(金) 18:57:48.00 ID:L60rBM570.net
- >>838
適当なクラスに置き換えたらビルドできますよ。
- 852 :デフォルトの名無しさん :2020/12/04(金) 22:05:08.94 ID:9AUT9QCq0.net
- 新潟から週2回東京に出勤、サイボウズの複業採用社員に聞く複業ライフのリアル。
https://www.businessinsider.jp/post-166126
兼業でフリーライター、サイボウズ社員・明石悠佳に学ぶパラレルワーク術
https://www.wwdjapan.com/articles/752575
「複業を解禁しなければ人も企業も成長しない」複業全面OKのサイボウズ社長と実践社員の本音対談
https://www.businessinsider.jp/post-33893
育休は最長6年、副業もOK! サイボウズはなぜ「100人100通りの人事制度」を作ったのか
https://logmi.jp/business/articles/50252
超異例「週休4日制」の導入をSMBC日興証券社長が決めた理由
https://diamond.jp/articles/-/223832
週休3日制をさらに進めた週休4日制
https://www.k-society.com/recruit/why-four-days-off-a-week/
採用情報(週休3日制を超えた週休4日制の正社員求人 | 副業OK
https://www.k-society.com/recruit/
2020年4月より「週休3日制」を導入。テックカンパニー化に向け、好循環を生み出すエンジニアリング組織へ
https://prtimes.jp/main/html/rd/p/000000096.000016431.html
- 853 :デフォルトの名無しさん :2020/12/05(土) 09:07:58.88 ID:7mh3qGhb0.net
- ライブラリの話ですみません
SevenZipSharpにてSolid圧縮ファイルを[STAThread](FormやWPFのメインスレッド)にてExtractArchiveするとフリーズしてしまうのは私だけでしょうか?
別スレッドやTask化したり、そもそもSTAThreadが使われないConsoleアプリでは同期でも全く正常にSolid圧縮も解凍されるのですが
- 854 :デフォルトの名無しさん :2020/12/05(土) 10:37:20.60 ID:kSej4vti0.net
- List<List<List<int>>>→List<List<int>>
List<List<int>>→List<int>
にする方法ってLINQでは不可能ですか?
並び順は変えないとします。
for使うしかないですか?
- 855 :デフォルトの名無しさん :2020/12/05(土) 10:38:07.01 ID:kSej4vti0.net
- 後者が
{1,2,4}{3,9,8}→1,2,4,3,9,8って感じ
- 856 :デフォルトの名無しさん :2020/12/05(土) 11:00:35.05 ID:DXfBmITDd.net
- >>854
var result = iList.SelectMany( i => i )
- 857 :デフォルトの名無しさん :2020/12/05(土) 11:12:57.38 ID:+y18mv1b0.net
- ぐぐればすぐ見つかるわよ
- 858 :デフォルトの名無しさん :2020/12/05(土) 11:31:13.29 ID:CCPlFK06M.net
- >>857
なぐるわよ
- 859 :デフォルトの名無しさん :2020/12/05(土) 11:42:56.05 ID:kSej4vti0.net
- >>856
順番変わりますか?
- 860 :デフォルトの名無しさん :2020/12/05(土) 11:52:38.53 ID:qYbtudQ20.net
- TOARRAYのADDRANGEだよさっさとしろよグズ
- 861 :デフォルトの名無しさん :2020/12/05(土) 12:31:48.70 ID:fwzFFaeU0.net
- >>859
多分変わらないけど、やってみて。
- 862 :デフォルトの名無しさん :2020/12/05(土) 12:39:27.19 ID:qL2nBB2w0.net
- >>853
それは本来1秒とかで終わるはずがいつまで経っても終わらないってこと?
まあUIスレッドでやることじゃないからTask使ってればいいよ
- 863 :デフォルトの名無しさん :2020/12/05(土) 13:26:31.39 ID:UBJq3HVh0.net
- nlogで入れた.configが読み専になったから、しょうがなくありものを先に置いといてnugetしなおしたらなんとかなった
- 864 :デフォルトの名無しさん :2020/12/05(土) 14:02:33.08 ID:cSIoQ91v0.net
- >>859
仮に駄目なら自分で拡張メソッド書けばいいだけだよ
数分で書ける程度のもの
- 865 :デフォルトの名無しさん :2020/12/05(土) 15:30:56.23 ID:OcFAL7DuM.net
- 手元では大丈夫でもリリースした先でダメでした、というオチがたのしそう
- 866 :デフォルトの名無しさん :2020/12/06(日) 10:13:12.99 ID:a+vxG21/r.net
- c#9.0でガラッと変わるので皆さん頑張ってお勉強してください
- 867 :デフォルトの名無しさん :2020/12/06(日) 10:18:38.00 ID:a+vxG21/r.net
- C#の思想が塗り替えられています
- 868 :デフォルトの名無しさん :2020/12/06(日) 10:20:10.96 ID:xxrxxdsn0.net
- たとえば?
- 869 :デフォルトの名無しさん :2020/12/06(日) 10:26:12.41 ID:a+vxG21/r.net
- recordです
他の言語から輸入した超便利機能です
- 870 :デフォルトの名無しさん :2020/12/06(日) 11:07:39.97 ID:GAck2gc00.net
- recordは便利だけど勉強しなおさなきゃいけないレベルでもない
新しいこといくつか覚えればいいだけ
- 871 :デフォルトの名無しさん :2020/12/06(日) 11:11:11.75 ID:HPmVPA7T0.net
- expression blocksあたりが来たらC#はC#とは違う別のなにかになりそうな勢いだな
- 872 :デフォルトの名無しさん :2020/12/06(日) 11:38:38.75 ID:q4vfNSTS0.net
- recordって別にただのstructだろ?
比較の仕方が違うだけで
- 873 :デフォルトの名無しさん :2020/12/06(日) 11:42:51.47 ID:bQe6lBYR0.net
- 参照型のイコールの動作がわかんなかった
- 874 :デフォルトの名無しさん :2020/12/06(日) 11:51:20.42 ID:oEu15NIyd.net
- >>872
根本的に勘違いしてるぞお前
record はstructじゃねーよ
- 875 :デフォルトの名無しさん :2020/12/06(日) 12:22:22.88 ID:3Mg1tJ4o0.net
- >>874
KWSK
- 876 :デフォルトの名無しさん :2020/12/06(日) 12:41:32.76 ID:GAck2gc00.net
- https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-9#record-types
レコード型を使用すると、変更できない参照型を .NET で簡単に作成できます。
従来、.NET 型は、参照型 (クラス型と匿名型を含む) と値型 (構造体とタプルを含む) に大別されています。
- 877 :デフォルトの名無しさん :2020/12/06(日) 12:56:19.96 ID:E6YSEnmp0.net
- つまり、リードオンリーで参照するみたいな感じか?
- 878 :デフォルトの名無しさん :2020/12/06(日) 13:08:05.96 ID:e5/goOFG0.net
- record自体に動的な参照型は持てない感じ?
- 879 :デフォルトの名無しさん :2020/12/06(日) 13:08:42.54 ID:a+vxG21/r.net
- 多分今後recordを使ってないコードを見るとイライラするようになるでしょう
今すぐにじゃなくてもそのうち確実に
古いコードは全部打ち捨てられるでしょう
ただMVVM命の人には関係ないでしょう
- 880 :デフォルトの名無しさん :2020/12/06(日) 13:13:29.20 ID:a+vxG21/r.net
- そして普通にprivateを使わなくなる可能性もあります
C#の初期の思想が徐々に塗り替えられ捨てられていきます
- 881 :デフォルトの名無しさん :2020/12/06(日) 13:18:25.99 ID:3Mg1tJ4o0.net
- 既にキマイラだよなぁ
- 882 :デフォルトの名無しさん :2020/12/06(日) 13:23:50.76 ID:a+vxG21/r.net
- どうせrecordで既存のコード捨てられるから言語ごと最初から作り直したほうが良いかもしれない
最初から作り直せるとしたらデリゲートはなくなるのかどうか
C#+F#のような言語ができたら非常に面白い
- 883 :デフォルトの名無しさん :2020/12/06(日) 13:30:56.71 ID:e5/goOFG0.net
- 作成後に変更できないって言ってるのに比較なんてする必要あるの?
ってのが疑問
- 884 :デフォルトの名無しさん :2020/12/06(日) 13:37:19.87 ID:a+vxG21/r.net
- Listから特定のインスタンス削りたい場合で位置がわからなければ比較するしかないでしょう
- 885 :デフォルトの名無しさん :2020/12/06(日) 13:40:30.34 ID:e5/goOFG0.net
- そういうの言語の機能使うのは俺的にNG
doubleのイコール比較は誤差入るのか?
- 886 :デフォルトの名無しさん :2020/12/06(日) 14:29:36.48 ID:a+vxG21/r.net
- Linq使うにせよなんにせよ比較は使う
初心者以下のレベルの話
- 887 :デフォルトの名無しさん :2020/12/06(日) 14:57:26.26 ID:E6YSEnmp0.net
- ん?レコードってのは何が嬉しいの?
- 888 :デフォルトの名無しさん :2020/12/06(日) 15:11:34.04 ID:3Mg1tJ4o0.net
- PASCALとかALGOLにあった奴の
先祖帰りかなぁ?
- 889 :デフォルトの名無しさん :2020/12/06(日) 15:15:02.40 ID:wbXowyVSa.net
- 亡き飼い主の声が聞こえる
- 890 :デフォルトの名無しさん :2020/12/06(日) 16:04:31.40 ID:+WMwzRY70.net
- 変更できない参照型って言うのはそれなりに使えるとは思うがなんでrecordなんて名前なんだ?
- 891 :デフォルトの名無しさん :2020/12/06(日) 16:16:48.48 ID:wcxECur/M.net
- OCaml由来
- 892 :デフォルトの名無しさん :2020/12/06(日) 16:19:27.32 ID:oEu15NIyd.net
- >>890
Javaがrecord を採用したから
最初はdataだった
- 893 :デフォルトの名無しさん :2020/12/06(日) 16:20:25.26 ID:oEu15NIyd.net
- >>875
structにもrecord つけられるようにする対応はC#10.0以降
- 894 :デフォルトの名無しさん :2020/12/06(日) 17:02:01.60 ID:3Mg1tJ4o0.net
- >>893
THX
- 895 :デフォルトの名無しさん :2020/12/06(日) 17:09:37.16 ID:L/mxF/rBa.net
- >>876
このスレのレスだけ見てたらそんなの何が嬉しいんだと思ったが、
なるほどそれなりに便利そう
ただ、MSのドキュメントに列挙されてる
- 値ベースの等価比較のためのメソッド
- GetHashCode() のオーバーライド
- コピー メンバーとクローン メンバー
これらが自動実装されるのは確かに嬉しいが、これを実現するために何でイミュータブルにする
必要があるのかいまいちよく分からない
- 896 :デフォルトの名無しさん :2020/12/06(日) 17:40:09.94 ID:R+T9okNaa.net
- エミュー食べる必要は無いからなあ
- 897 :デフォルトの名無しさん :2020/12/06(日) 18:18:00.03 ID:4CZ8QguV0.net
- むしろimutableなものが欲しい、からスタートした機能
- 898 :デフォルトの名無しさん :2020/12/06(日) 18:29:39.04 ID:ozrCEgJEd.net
- 普通に作ってる分にはいらんわな
- 899 :デフォルトの名無しさん :2020/12/06(日) 18:31:30.50 ID:Cw8pwO+X0.net
- 変なところで値書き換えるやつがいるから、それを型として禁止したってだけだと思ってた
- 900 :デフォルトの名無しさん :2020/12/06(日) 18:43:23.29 ID:e5/goOFG0.net
- doubleの比較は何?
また、c#のウンコみたいなイプシロン使って
同値判定してんの?
- 901 :デフォルトの名無しさん :2020/12/06(日) 18:49:40.35 ID:Cw8pwO+X0.net
- 勘違いしてた。わざわざ書いてたいつものコードを書かなくて済むようになるのがメリットか
ところで、「record Person」の例で同姓同名の別人を区別したくなったらどうすればいいのん?
- 902 :デフォルトの名無しさん :2020/12/06(日) 18:55:24.02 ID:e5/goOFG0.net
- 大丈夫だ
それはDNAListが異なるので判別できる
- 903 :デフォルトの名無しさん :2020/12/06(日) 19:03:18.97 ID:atqZF9NJ0.net
- 「Effective 何々」とかによく書いてある、3種の神器だろ
Ruby なら宇宙船演算子、<=> で比較関数を再定義する。
ハッシュ関数を再定義する。
p 関数を再定義する。
こういう謎のようなインスタンスID ではなく、分かりやすい表示を再定義する
class A
end
p a = A.new #=> #<A:0x00000000031c2f98>
- 904 :デフォルトの名無しさん :2020/12/06(日) 19:10:34.23 ID:a+vxG21/r.net
- recordはプロパティが基本publicになった
今まではprivateで隠蔽されていて外部から変更されなかった
これはカプセル化なんだけどこれがpublicになっただけじゃ意図しない変更をされる場合がある
非常に困る
だいたいのケースでは参照されても変更されなければ問題がないのでイミュータブルにするじゃねーかなと
- 905 :デフォルトの名無しさん :2020/12/06(日) 19:16:53.81 ID:4CZ8QguV0.net
- だから順番が逆
immutableな型が欲しい→immutableなんだからpublicでok
- 906 :デフォルトの名無しさん :2020/12/06(日) 19:18:27.50 ID:a+vxG21/r.net
- 世の中もイミュータブルが求められていると言うのもその通り
ValueObjectはいったん値を設定したら変えない
値を変えたくなったら新しいValueObjectをnewして挿げ替える
- 907 :デフォルトの名無しさん :2020/12/06(日) 19:23:32.30 ID:iGfaGXq00.net
- 別にrecord = イミューダブルじゃないからね?
- 908 :デフォルトの名無しさん :2020/12/06(日) 19:23:45.93 ID:iGfaGXq00.net
- イミュータブル
- 909 :デフォルトの名無しさん :2020/12/06(日) 19:29:20.15 ID:a+vxG21/r.net
- 他の簡易な言語などでもデフォルトはprivateじゃなくpublic
イミュータブルかどうかは別としてデフォがpublicが流行り
- 910 :デフォルトの名無しさん :2020/12/06(日) 19:48:28.39 ID:a+vxG21/r.net
- どちらにせよ
C#は9.0で大変身した
- 911 :デフォルトの名無しさん :2020/12/06(日) 19:50:57.76 ID:+WMwzRY70.net
- >>901
社員番号とかを追加しときゃいいだろ
- 912 :デフォルトの名無しさん :2020/12/06(日) 20:39:59.39 ID:5/KOVLSv0.net
- >>901
それはべつにrecordで初めて発生する問題じゃないいな。
識別できる情報が足りないならそれを追加しなきゃならんというだけ。
- 913 :デフォルトの名無しさん :2020/12/07(月) 02:42:51.99 ID:FMWF8Lcl0.net
- 9に限らず今までのversion upはどれも影響度が大きい
8のnullable、7のtuple、6の自動実装プロパティ、5の非同期、4のdynamic、3のlinq
他にもいっぱいあるけど
どれも現状のC#にとって超重要な内容
- 914 :デフォルトの名無しさん :2020/12/07(月) 03:27:02.89 ID:1hmL4SHh0.net
- 10年ぶりにwindowsアプリ作りたいんだけど最近は何で作るのが主流ですか?
まだwinformsだったりする?
- 915 :デフォルトの名無しさん :2020/12/07(月) 03:34:00.01 ID:obD3rptW0.net
- 結局WinFormsかWPF
- 916 :デフォルトの名無しさん :2020/12/07(月) 06:24:24.79 ID:AjKIX7D20.net
- バージョン9が話題らしいですがc#のバージョンてどこ見りゃわかるの?
- 917 :デフォルトの名無しさん :2020/12/07(月) 07:20:40.19 ID:VGjx4xxr0.net
- >>916
VS2019なら、ソースの適当なとこに、
#error version
って書いて、versionにマウスカーソル合わせると表示される。
あと、9かそうでないかの判断だけなら、setの代わりにinit使ったプロパティが認識されるなら9。
int Hage{get; init;}
- 918 :デフォルトの名無しさん :2020/12/07(月) 07:27:50.50 ID:AjKIX7D20.net
- >>917
ありがたう。言語バージョン7.3て書いてあった。
保守的な現場だから簡単にバージョンあげたりはしないのだろうな。
recordか。仕事で使ってみたかった。
- 919 :デフォルトの名無しさん :2020/12/07(月) 07:33:11.23 ID:jipj8SHtM.net
- >>918
お大事に。
- 920 :デフォルトの名無しさん :2020/12/07(月) 07:47:15.09 ID:B8tartMNM.net
- Record型って最初聞いた時に、データベースのレコードを突っ込む型と思ってたわ…
更新できないってことは
中身書き換えてEFに投げてデータベース更新することができないってことだよな。
俺もいまいち使い道がわからんわ。
どういうシステムで使うんだろ。
- 921 :デフォルトの名無しさん :2020/12/07(月) 09:03:38.47 ID:qwdGv73V0.net
- 多値からなる識別子とか
- 922 :デフォルトの名無しさん :2020/12/07(月) 09:15:00.72 ID:5xO4uxgk0.net
- >>918
.NET Frameworkだと7までしか使えないんじゃなかったかな
8も設定すれば使えるけど一部機能に制限あったはず
- 923 :デフォルトの名無しさん :2020/12/07(月) 10:31:45.42 ID:mtQ69pRI0.net
- .NET Core〜.NET5でWindows用アプリをビルドするとexeやdllやjsonが生成されてそれら全て必要なようですが、.NET Frameworkのようなスマートな出力には出来ないんでしょうか?
丸々exe一本にしたい訳ではなくライブラリは別にしたいので単一ファイル化とはちょっと違うのですが
- 924 :デフォルトの名無しさん :2020/12/07(月) 12:22:21.16 ID:obD3rptW0.net
- Framework dependent
- 925 :デフォルトの名無しさん :2020/12/08(火) 00:25:30.96 ID:8YwC0Fuu0.net
- >>920
DDDとかValueObjectとかに関わってないと分からんかもな
- 926 :デフォルトの名無しさん :2020/12/08(火) 08:36:58.75 ID:qADZolAoM.net
- >>925
そのキーワードでググってみた
とにかく
Record型ってのはValueObjectを作ることを目的としたクラスであって
DBから取得したレコードを突っ込むクラスではないのね
https://www.infoq.com/jp/articles/DDD_ValueObject_0325/
…じゃあValueObject型って名前にしろよ!
- 927 :デフォルトの名無しさん :2020/12/08(火) 08:59:31.84 ID:QL1pojox0.net
- >>926
DBのレコード突っ込む型とか、自分で言ってて頭悪いと思わないのかな
- 928 :デフォルトの名無しさん :2020/12/08(火) 09:04:14.01 ID:ThBsNynLd.net
- 名称なんて年単位で議論してたんだから提案あるならしてくりゃ良かったのに
- 929 :デフォルトの名無しさん :2020/12/08(火) 09:08:19.56 ID:qADZolAoM.net
- >>927
我ながらアホっぽいな
しかしレコード型と言われて、はいはいレコード型ねって理解できる奴いるのかね。
- 930 :デフォルトの名無しさん :2020/12/08(火) 09:25:23.43 ID:WA2T93A40.net
- レコードなんだから再生できても録音できないのは当たり前だろ
- 931 :デフォルトの名無しさん :2020/12/08(火) 09:30:24.02 ID:qADZolAoM.net
- 確かにそうだな
データベースのレコードを更新するってよく考えたら変な言い回しなんだな
- 932 :デフォルトの名無しさん :2020/12/08(火) 09:44:59.64 ID:0unpAQOY0.net
- >>929
新しいキーワードや概念が出てきたなら名前から安易に決めつけたりせずにどんなものか調べるのが当たり前の行動でないの?
- 933 :デフォルトの名無しさん :2020/12/08(火) 11:08:44.41 ID:CR6HP8eG0.net
- DVD-ROM型
- 934 :デフォルトの名無しさん :2020/12/08(火) 11:09:42.33 ID:+Hjnd8Yr0.net
- Spanで返してくれるHtmlパーサーってある?
そもそも標準のパーサーってあったっけ
jsと同じ感覚でquerySelectorとか使えると良いんだけど
- 935 :デフォルトの名無しさん :2020/12/08(火) 12:04:51.25 ID:GTdYvNE8a.net
- >>925
プロパティーの型はイミュータブルなのが好ましいのは誰でも分かると思う。
- 936 :デフォルトの名無しさん :2020/12/08(火) 12:20:44.27 ID:MydVvHcuM.net
- >>930-931
ネタだと思うがマジで言ってたら単なる老害だぞw
レコードは記録
一般でもコースレコードを更新しましたとか言うだろ
- 937 :デフォルトの名無しさん :2020/12/08(火) 12:27:24.23 ID:QPlJJaQdr.net
- >>932
漢字文化圏では字面から意味がだいたい分かることに甘えたやつが多い
- 938 :デフォルトの名無しさん :2020/12/08(火) 12:35:05.35 ID:f+ofKIWhM.net
- 全く関係ないが昔ログインの事を略してログと呼んでいる奴がいて
それに気が付くまで話が全く理解できなかった
- 939 :デフォルトの名無しさん :2020/12/08(火) 12:42:21.79 ID:Jz5aG9hcM.net
- ログオンしないの?
- 940 :デフォルトの名無しさん :2020/12/08(火) 12:57:17.36 ID:UAWkpbVf0.net
- 爪折ったカセットテープ型
- 941 :デフォルトの名無しさん :2020/12/08(火) 13:07:42.70 ID:u9TUBJ18p.net
- 平和守る名前さ〜♪
- 942 :デフォルトの名無しさん :2020/12/08(火) 13:23:08.32 ID:v7gdDVm90.net
- ダグオンwww
- 943 :デフォルトの名無しさん :2020/12/08(火) 14:49:14.43 ID:qADZolAoM.net
- >>932
おっしゃる通りだが、名前にもう少し情報をいれてほしいなあ
こんなわかりにくい名前つけていいのか
英語圏の人はピンとくるのかな
- 944 :デフォルトの名無しさん :2020/12/08(火) 15:12:08.46 ID:L/fvSJtl0.net
- >>936
「更新」の意味を古い記録を新しい記録で差し替えるという意味にとるか
古い記録自体を変更して最新状態にするという意味にとるかの違い
前者はイミュータブルで後者はミュータブル
- 945 :デフォルトの名無しさん :2020/12/08(火) 15:23:20.07 ID:0ctxmOmz0.net
- >>923
必要ないのも混ざってるよ
- 946 :デフォルトの名無しさん :2020/12/08(火) 15:29:38.69 ID:bfWpuCm70.net
- >>944
そういうどっちにも取れるような名前を付けていいんか?
って話じゃね?
少なくともデータベースやPascal系言語ではレコードの内容を書き換えられるんだし
- 947 :デフォルトの名無しさん :2020/12/08(火) 16:14:06.02 ID:KeS4W5RD0.net
- くそコード書いといて
えー読めないのみたいな顔するやつ死ね
- 948 :デフォルトの名無しさん :2020/12/08(火) 16:43:14.25 ID:v7gdDVm90.net
- だからrecord 自体は別にイミュータブルでも何でもないんだってば
- 949 :デフォルトの名無しさん :2020/12/08(火) 19:03:10.97 ID:f+ofKIWhM.net
- デビュー前にレコード大賞を盗った場合はどうなるの?
- 950 :デフォルトの名無しさん :2020/12/08(火) 19:32:57.86 ID:MwY7tEEj0.net
- tmpとかもやめて欲しいな。
- 951 :デフォルトの名無しさん :2020/12/08(火) 19:33:13.64 ID:y8tTQ7tr0.net
- 質問スレで平日の昼間からずっと雑談づくしってお前らそういう仕事なの?
- 952 :デフォルトの名無しさん :2020/12/08(火) 19:54:46.60 ID:+Hjnd8Yr0.net
- >>951
このご時世で昼間に家からカキコできないほうが終わってる定期
- 953 :デフォルトの名無しさん :2020/12/09(水) 02:33:30.28 ID:WuZTb4kZM.net
- なにごちゃごちゃ抜かしとるんじゃ我ェ!?
- 954 :デフォルトの名無しさん :2020/12/11(金) 09:52:21.87 ID:xnlTyNu60.net
- エンディアンのバイトスワップめんどくせー
- 955 :デフォルトの名無しさん :2020/12/11(金) 11:23:36.63 ID:RmJd06BU0.net
- あるウェブサイトにWebrequestを使ってアクセスしようとしたところ、
「ご使用のブラウザはCookieまたはJavaScriptの設定が無効です」
と出てウェブブラウザでは表示されるページが取得できませんでした。
webrequestは今まで何度も使っていますがこんなことになったのは初めてです。
↓のようにどこの解説サイトでも掲載されているような普通のやり方でやっているだけなのですが、回避する方法はあるのでしょうか?
CookieContainer myCC = new CookieContainer()
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.CookieContainer = myCC:
- 956 :デフォルトの名無しさん :2020/12/11(金) 12:09:30.98 ID:RmJd06BU0.net
- すいません、自己解決しました
- 957 :デフォルトの名無しさん :2020/12/11(金) 12:28:58.18 ID:e2z+8YzhM.net
- プロジェクト内で定義された派生クラスを全てリストする方法ってあるでしょうか?
例えば動物という基底クラスがあり、
派生クラスに猫、犬と2つ作ったとします。
基底クラスには鳴き声メソッドがあるとします。
猫の鳴き声メソッドは「ニャーニャー」と返します。
ある関数で「ワンワン」という文字列が来た際に
プロジェクト内の動物派生クラスを個別に生成して鳴き声メソッドを叩き、
ワンワンと鳴く派生クラスを特定する逆引きのような処理をしたいです。
if文で全派生クラスを書けばいいですが、派生クラスはガンガン増えていくので、派生クラスを定義するたびににそのif文をメンテするのはメンテ漏れのバグのリスクがあるので
プロジェクト内に現在定義された動物派生クラスを全部取ってくる事が出来れば、それをグルグル回せばメンテナンス不要のコードにできるのですが
- 958 :デフォルトの名無しさん :2020/12/11(金) 12:46:55.66 ID:VHLzC15hd.net
- SourceGeneratorならできるだろうけど、何の情報もなしにclass探すのは無理じゃない?
テーブル内のclassに対して全部処理するとかはできるだろうから編集箇所は最小限で済ませられるけど
- 959 :デフォルトの名無しさん :2020/12/11(金) 12:49:19.99 ID:9hZE0nsxd.net
- >>957
リフレクションで頑張れば行けるかもね
- 960 :デフォルトの名無しさん :2020/12/11(金) 13:03:11.90 ID:exUCYAAha.net
- >>957
動的にサブクラスを列挙するのはたぶん無理じゃないの?
public abstract class Animal
{
public Animal(Animal a)
{
...
}
}
こういう風にAnimalのコンストラクタでthisを渡すことを強制しておけば
少なくともインスタンス化されたものは把握できるね。
- 961 :デフォルトの名無しさん :2020/12/11(金) 14:37:47.39 ID:m/dnIqsS0.net
- typeof(Animal).Assembly.GetTypes().Where(_type => _type.IsSubclassOf(typeof(Animal)))
型の列挙自体はこんなんでできるけど
インスタンスどうするの?っていう
全部の型にpublicな引数なしコンストラクタが必ずありますならなんとかなるけど
- 962 :デフォルトの名無しさん :2020/12/11(金) 15:40:59.87 ID:69jKb/QY0.net
- そういやクラスに、静的に実行される静的イニシャライザを書けるようにしてくれたらいいのにと思うことあるな
- 963 :デフォルトの名無しさん :2020/12/11(金) 16:53:05.38 ID:CVvHA/5PM.net
- >>962
書けるぞ
- 964 :デフォルトの名無しさん :2020/12/11(金) 18:41:57.69 ID:bOY22DN70.net
- >>960
それthisじゃない。
- 965 :デフォルトの名無しさん :2020/12/11(金) 19:31:50.50 ID:exUCYAAha.net
- >>964
意味が分からんけど
public class Cat:Animal
{
Cat():base(this){ ... }
}
これはNGみたいだね。
別にこれで良かったのか
public abstract class Animal
{
private static List<Type> Animals = new List<Type>();
public Animal()
{
var t = this.GetType();
Animals.Remove(t);
Animals.Add(t);
}
}
- 966 :デフォルトの名無しさん :2020/12/11(金) 19:37:25.05 ID:PS9oWtr00.net
- >>961
自分のインスタンスを返す静的メソッドって作れないのか
それを親クラスかインターフェイスで規定しておけばよいんじゃ
つかわざわざインスタンス生成しなくても、鳴き声が自分かどうか判定する静的メソッドで事足りる気がするな
- 967 :デフォルトの名無しさん :2020/12/11(金) 20:32:27.16 ID:ZS/vCbaU0.net
- >>941-942
渋谷で超勇者展始まったぞ!
- 968 :デフォルトの名無しさん :2020/12/11(金) 21:16:51.65 ID:69jKb/QY0.net
- >>963
ま、まじで?
なんて機能名でググれば出てきそう?
- 969 :デフォルトの名無しさん :2020/12/11(金) 21:34:43.36 ID:bOExnmUya.net
- 「C# 静的イニシャライザ」で検索して普通に引っかかるでしょ
イニシャライザ/コンストラクタと呼び方が異なるだけで
- 970 :デフォルトの名無しさん :2020/12/13(日) 02:19:21.24 ID:1g8P/X2hM.net
- c#でRSSリーダー作れましゅか?
- 971 :デフォルトの名無しさん :2020/12/13(日) 02:27:42.98 ID:mhM78eSV0.net
- もちろん作れるさ
- 972 :デフォルトの名無しさん :2020/12/13(日) 06:26:58.36 ID:TsdjEAD7M.net
- c#では作れないものはありますか?
- 973 :デフォルトの名無しさん :2020/12/13(日) 07:37:48.18 ID:18RrlrES0.net
- >>966
全ての派生クラスで同じ名前の静的メソッドやプロパティを強要できるならそれでよさそうだけど出来なくね?
- 974 :デフォルトの名無しさん :2020/12/13(日) 09:06:36.69 ID:unG5NNsQ0.net
- >>973
静的メソッドって継承できないのか。知らなかったぜ
C#8.0でインターフェイスに定義できるようになったのかな
- 975 :デフォルトの名無しさん :2020/12/13(日) 10:08:37.85 ID:3XNF+7/F0.net
- >>972
お前の能力を超えたソフト
- 976 :デフォルトの名無しさん :2020/12/13(日) 10:11:14.52 ID:7La4X7B8a.net
- ネイティブDLLが作れるようになってくれないかな
- 977 :デフォルトの名無しさん :2020/12/13(日) 10:21:46.03 ID:BQqdDV6m0.net
- >>972
カーネルドライバ
- 978 :デフォルトの名無しさん :2020/12/13(日) 10:26:06.52 ID:QKeUnYpp0.net
- >>972
完全なマシン語にコンパイルされるプログラム
これでないとOSカーネルとかデバイスドライバとか作れない
- 979 :デフォルトの名無しさん :2020/12/13(日) 11:14:15.79 ID:KcA96kkp0.net
- マシン語にしたバイナリを出力するアプリをC#で作ればなんでもできることになる
- 980 :デフォルトの名無しさん :2020/12/13(日) 14:02:37.13 ID:U1NW+seS0.net
- nativeaot(-llvm)?(旧corert)ってのがあってぇ…
- 981 :デフォルトの名無しさん :2020/12/13(日) 14:07:55.69 ID:3XNF+7/F0.net
- .NETNative をちゃんと作ればC#でもネイティブコードにコンパイルできるだろうし、そもそも性能がたいして必要ないならインタプリタでもドライバを書くことはできるだろうけどGCに依存してる言語はタイミングが読めないから難しいわな
- 982 :デフォルトの名無しさん :2020/12/13(日) 14:47:32.03 ID:E31xy0lw0.net
- C++/CLI復権してくれたらなぁ。まずないとは思うが。
- 983 :デフォルトの名無しさん :2020/12/14(月) 19:47:40.61 ID:EY+baBGY0.net
- WEBの写真ダウンロード処理をしてるのですが、出来るものと出来にくいものがあります。
出来にくいもの(EDGEブラウザで開けるとすぐ見れるがダウンロードでは20秒くらいかかる)
https://i.dailymail.co.uk/i/pix/2013/05/09/article-2321812-19B162BA000005DC-124_634x449.jpg
出来るもの(すぐにダウンロードできる。EDGEブラウザでもすぐ見れる)
https://i.imgur.com/bnUR6en.png
System.Net.WebClient client = new System.Net.WebClient();
client.DownloadFile("https://i.dailymail.co.uk/i/pix/2013/05/09/article-2321812-19B162BA000005DC-124_634x449.jpg", @"D:\tmp.jpg");
こういうのはサーバー側でアクセス種類がブラウザかプログラムか見分けられて
対策されてるのでしょうか?
- 984 :デフォルトの名無しさん :2020/12/14(月) 20:29:19.80 ID:w+atsEVh0.net
- 出来る出来ないなら、サーバー側でUserAgentやクッキーやその他ヘッダを見てブロックするというのは普遍的な手法だからよくある事だけど
出来るものと出来にくいものはよくわからないが、一応ダウンロード前にこれ挟んで試してみるといい
client.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36");
- 985 :デフォルトの名無しさん :2020/12/14(月) 21:37:41.18 ID:A7r1gxtPa.net
- ブラウザでの表示が早いのはキャッシュされてるだけだと思うけど・・・・
キャッシュ全クリアしても本当にすぐ見れる?
- 986 :デフォルトの名無しさん :2020/12/15(火) 10:35:58.18 ID:md2wlUIm0.net
- >>984
やってみましたら止まらずすぐにダウンロードできるようになりました。
サーバー側でUSERAGENTが入ってるか入ってないかでプログラムアクセスかどうかの選り分けをして
USERAGENTが空のものには20秒くらいわざとジラシが入ってるようです。
一括ダウンローダーとかの対策かなんかかもしれませんね。
ありがとうございました。
- 987 :デフォルトの名無しさん :2020/12/15(火) 12:40:58.94 ID:uedfi1MA0.net
- UA偽装とかリファラ偽装とか懐かしいワードを思い出した
- 988 :デフォルトの名無しさん :2020/12/15(火) 13:14:41.01 ID:fP0YYSyi0.net
- >>986
ちなみにChromeはかなり小まめにアプデ入る訳だが
Botは往々にして"Chrome/87.0.4280.88"の部分が古いままという特徴があって最新版一つ手前よりも前のバージョンだと弾くって言う対策してる鯖もある
まぁここまで対策してくるのは稀だから放置でも大方問題にはならないが、インスコフォルダやレジストリや最悪webなどからバーション取得する方法あった気がするから暇なら最新版のUAにするロジックも入れておいた方がいい
- 989 :デフォルトの名無しさん :2020/12/15(火) 21:23:57.67 ID:2D6p9tgnM.net
- 規模のでかいプロジェクトを開発してるといつもどのファイルを開いてるのかわからなくなったり、目的のファイルが見つからなかったり大変なんですけどどうしたらいいですか?
目的のフォルダに対してブックマーク的なものが設定できたりしたら迷子にならなくてすむんですがそんなのないですか?
- 990 :デフォルトの名無しさん :2020/12/15(火) 23:06:40.58 ID:fP0YYSyi0.net
- ref readonly変数のstructのメンバ関数呼ぶと防御コピーが発生するのは仕様?
refだけなら防御コピー発生しないのは確認できたんだけど
- 991 :デフォルトの名無しさん :2020/12/15(火) 23:23:22.02 ID:j+VqSr9F0.net
- >>989
フォルダじゃなくてファイルだけどvisual studioならブックマークあるよ
ただ、そもそも大規模になっても迷子にはあんまならないかな?
- 992 :デフォルトの名無しさん :2020/12/15(火) 23:26:47.80 ID:OK3TNwGLM.net
- >>991
クソみたいな設計だから困ってたんですよ
ありがとうございます
- 993 :デフォルトの名無しさん :2020/12/15(火) 23:32:36.78 ID:korWFWn50.net
- >>989
同じ事思ってる。
VSだと開いてるファイルのタブに、プロジェクト毎に色分けする拡張入れてる。
あとソリューションエクスプローラーを複数開いたりしてる。
- 994 :デフォルトの名無しさん :2020/12/16(水) 01:40:22.65 ID:FCFqtT9K0.net
- >>993
複数開くってどうやるの?
- 995 :デフォルトの名無しさん :2020/12/16(水) 03:17:07.88 ID:eAMqD84A0.net
- 共通プラットフォームの .NET 5 が出てきたってことは、.net standard はもう次バージョンは出ないんですか?
- 996 :デフォルトの名無しさん :2020/12/16(水) 03:21:40.46 ID:4YU+JB8/0.net
- うん
- 997 :デフォルトの名無しさん :2020/12/16(水) 07:09:48.69 ID:ksVkXCtR0.net
- >>995
誰も新しい方使わなかったらまだワンチャンあるかも?
- 998 :デフォルトの名無しさん :2020/12/16(水) 11:31:10.25 ID:TSvQ057dM.net
- 次スレ立てた
ふらっと C#,C♯,C#(初心者用) Part149
https://mevius.5ch.net/test/read.cgi/tech/1608085775/
- 999 :デフォルトの名無しさん :2020/12/16(水) 20:14:15.21 ID:p7rmX8ox0.net
- >>990
そりゃメソッドは内部でメンバを書き換えてるかもしれないからな
readonlyなメソッドならコピーされない
- 1000 :デフォルトの名無しさん :2020/12/17(木) 20:00:41.21 ID:Z1ozW/Gv0.net
- >>998
スレたて乙
- 1001 :デフォルトの名無しさん :2020/12/17(木) 20:54:36.61 ID:czJEN8EN0.net
- 埋め
- 1002 :2ch.net投稿限界:Over 1000 Thread
- 2ch.netからのレス数が1000に到達しました。
総レス数 1002
278 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★