!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part144
https://mevius.5ch.net/test/read.cgi/tech/1563258983/
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
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
探検
ふらっと C#,C♯,C#(初心者用) Part145
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 1e7b-qjLW)
2019/10/07(月) 20:16:17.93ID:9eyAES450420デフォルトの名無しさん (ワッチョイ 0b6e-ANgw)
2019/11/05(火) 21:59:36.96ID:R3NaIBm20 >>417
あーまぁ今回の例だとそうかもしれないですね。
ただ実際の開発だとxmlを読み込むんですけどちょっと処理が膨大で。読み込む先、今回で言うところのPersonクラスも相当でかいので分けないといかんだろと
あーまぁ今回の例だとそうかもしれないですね。
ただ実際の開発だとxmlを読み込むんですけどちょっと処理が膨大で。読み込む先、今回で言うところのPersonクラスも相当でかいので分けないといかんだろと
421デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/11/05(火) 22:21:14.48ID:rzC/SdAh0 >>416
正直どっちも勘弁してって感じ
インスタンス生成の責務をファクトリに割り当てる頻出パターンなので
ファクトリやファクトリメソッドのキーワードでググればいいと思う
ファクトリクラスはusing Personしても参照を持つ必要はない
正直どっちも勘弁してって感じ
インスタンス生成の責務をファクトリに割り当てる頻出パターンなので
ファクトリやファクトリメソッドのキーワードでググればいいと思う
ファクトリクラスはusing Personしても参照を持つ必要はない
422デフォルトの名無しさん (ワッチョイ 0363-ORrh)
2019/11/05(火) 22:43:58.63ID:hT1YfL4n0 >>420
personは分解できないの?
そんな巨大ならpersonを分解して
xml読み込んでパースした情報を保持するやつ
パースした情報からpersonの部品を作るやつ
personの部品からpersonを作るやつ
みたいに段階踏むかなぁ
personは分解できないの?
そんな巨大ならpersonを分解して
xml読み込んでパースした情報を保持するやつ
パースした情報からpersonの部品を作るやつ
personの部品からpersonを作るやつ
みたいに段階踏むかなぁ
423デフォルトの名無しさん (ワッチョイ 0363-ORrh)
2019/11/05(火) 22:45:42.68ID:hT1YfL4n0 nugetなんて誰でもリリースできるんだから著名じゃないライブラリの良し悪しは中々情報は得にくいだろうね。
頑張って元言語の記事読むしかないんじゃない?
頑張って元言語の記事読むしかないんじゃない?
424デフォルトの名無しさん (ワッチョイ ca7d-qV4/)
2019/11/05(火) 22:48:54.04ID:dsMkwNKQ0 まじかよ
nugetはどっかの技術検査受けて
認められたのだけがnugetにリリースされてるんだと勝手に思ってた
nugetはどっかの技術検査受けて
認められたのだけがnugetにリリースされてるんだと勝手に思ってた
425デフォルトの名無しさん (アウアウウー Sa2f-jEuW)
2019/11/05(火) 23:00:27.36ID:Ra2VTEEXa >>420
どうしても分ける前提なわけね。
まあPersonReader がPersonのインスタンスを持つのは普通に変だよねやっぱり。
どこにも必然性がない。
PersonReader が状態を持つ必要がなければstaticクラスのstaticメソッドでいいはず
どうでもいいけど、
// ファイルを読み込む処理
person = 〜
じゃなくて、例えば
// ファイルを読み込む処理
person.Hoge = 〜;
person.Hage = 〜;
person.Piyo = 〜;
...
だよね多分?
どうしても分ける前提なわけね。
まあPersonReader がPersonのインスタンスを持つのは普通に変だよねやっぱり。
どこにも必然性がない。
PersonReader が状態を持つ必要がなければstaticクラスのstaticメソッドでいいはず
どうでもいいけど、
// ファイルを読み込む処理
person = 〜
じゃなくて、例えば
// ファイルを読み込む処理
person.Hoge = 〜;
person.Hage = 〜;
person.Piyo = 〜;
...
だよね多分?
426デフォルトの名無しさん (アウアウイー Sa43-4Sz2)
2019/11/05(火) 23:15:11.57ID:Uakp03G7a 最近のVisualStudioなら暮らすライブラリのプロジェクトで[ビルド(B)]-[パッケージ(P)]をクリックするだけで
nuget登録用のnupkgが出来上がるよ
あとはnugetにログインしてWeb上から適当に情報入力して登録すればすぐ反映される
悪意のあるパッケージとかどうやって識別してrejectしてるのか正直不思議
それとも表沙汰になってないだけでnpmみたいな汚染が日常的に起こってるのか
さすがにストアアプリよりははるかにマシだけどNuGetも玉石混合、というかゴミパッケージのほうが多いと思うよ
nuget登録用のnupkgが出来上がるよ
あとはnugetにログインしてWeb上から適当に情報入力して登録すればすぐ反映される
悪意のあるパッケージとかどうやって識別してrejectしてるのか正直不思議
それとも表沙汰になってないだけでnpmみたいな汚染が日常的に起こってるのか
さすがにストアアプリよりははるかにマシだけどNuGetも玉石混合、というかゴミパッケージのほうが多いと思うよ
427デフォルトの名無しさん (ワッチョイ cbda-qV4/)
2019/11/05(火) 23:24:58.96ID:2pF9vl9I0 「玉石混交」な
428デフォルトの名無しさん (アウアウエー Sac2-Y4hk)
2019/11/05(火) 23:32:45.78ID:mzMh853Ma attributeって結構使うもん?
429デフォルトの名無しさん (ワッチョイ 6f5f-qQ6b)
2019/11/05(火) 23:43:07.83ID:UYy2SJn60 >>428
自分で作ることは滅多にないけど、標準で用意されてるのは時々使う
FlagsAttributeやDllImportAttributeなんかは比較的良く使われているのではないだろうか
使わない人は全然使わないだろうけど
自分で作ることは滅多にないけど、標準で用意されてるのは時々使う
FlagsAttributeやDllImportAttributeなんかは比較的良く使われているのではないだろうか
使わない人は全然使わないだろうけど
430デフォルトの名無しさん (アウアウエー Sac2-Y4hk)
2019/11/05(火) 23:52:58.07ID:mzMh853Ma >>429
初学でASP.NET Coreのソースおっかけたりしても意味わからんくて困っている
初学でASP.NET Coreのソースおっかけたりしても意味わからんくて困っている
431デフォルトの名無しさん (ブーイモ MM76-xr2D)
2019/11/06(水) 00:06:43.42ID:YY5sm69bM 調べてないけどxmlからデータクラス生成するくらいなんかのライブラリに投げちゃいかんの?
432デフォルトの名無しさん (ブーイモ MM76-xr2D)
2019/11/06(水) 00:10:22.77ID:YY5sm69bM と思ったら言語標準の機能で十分行けるな
433デフォルトの名無しさん (ワッチョイ 6f5f-qQ6b)
2019/11/06(水) 00:10:24.55ID:vTr6jChq0 >>430
Attribute自体はプロパティやメソッドに付与して、コンパイラやライブラリに対して追加の情報を与えるだけ
Attributeが具体的に何を意味をするのかは、それぞれのAttributeによる
ASP.NET Coreのソースだったら、Validation関係かな
Attribute自体はプロパティやメソッドに付与して、コンパイラやライブラリに対して追加の情報を与えるだけ
Attributeが具体的に何を意味をするのかは、それぞれのAttributeによる
ASP.NET Coreのソースだったら、Validation関係かな
434デフォルトの名無しさん (ワッチョイ 0363-ORrh)
2019/11/06(水) 00:13:31.71ID:fi/5YPdO0 >>428
自作はenumにラベルつけるのに作るくらいかなぁ
enumの定義値とメニュー上の表示文字列対応させるみたいな感じ
多言語対応とかあるような案件じゃ使えないけど
すでにあるのはちょいちょい使う
TestとかBenchmarkとかは属性ありきだったりするし
自作はenumにラベルつけるのに作るくらいかなぁ
enumの定義値とメニュー上の表示文字列対応させるみたいな感じ
多言語対応とかあるような案件じゃ使えないけど
すでにあるのはちょいちょい使う
TestとかBenchmarkとかは属性ありきだったりするし
435デフォルトの名無しさん (ワッチョイ 6f5f-qQ6b)
2019/11/06(水) 00:59:37.18ID:vTr6jChq0436デフォルトの名無しさん (ワッチョイ 0363-ORrh)
2019/11/06(水) 01:07:17.94ID:fi/5YPdO0437デフォルトの名無しさん (ワッチョイ 6f5f-qQ6b)
2019/11/06(水) 01:31:17.54ID:vTr6jChq0438デフォルトの名無しさん (アウアウウー Sa2f-jEuW)
2019/11/06(水) 01:36:47.06ID:sSqMDD2ka 属性をキーにするぐらいにあらenumを直接キーにすりゃいいじゃんw
素直に拡張メソッドてToString定義した方が早いよw
素直に拡張メソッドてToString定義した方が早いよw
439デフォルトの名無しさん (ワッチョイ c322-GD6V)
2019/11/06(水) 01:41:30.82ID:TfmivfRs0 >>434
それ自作しなくてもDescriptionAttributeが標準であるよ
それ自作しなくてもDescriptionAttributeが標準であるよ
440デフォルトの名無しさん (アウアウウー Sa2f-jEuW)
2019/11/06(水) 01:41:32.51ID:sSqMDD2ka 拡張メソッドが使える以前はenumと相互に暗黙変換できるクラスを作って
そこに変換メソッドを書いてたけど、あれは実にあほらしい作業だったなあ
そこに変換メソッドを書いてたけど、あれは実にあほらしい作業だったなあ
441デフォルトの名無しさん (ワッチョイ 0363-ORrh)
2019/11/06(水) 02:20:17.85ID:fi/5YPdO0 >>439
実際にはenumとラベルを相互に変換したり複数対応させたり等々ケースに応じて細かな要件が出てくるからそういう拡張をするときのベースとして使ってる
あとキャッシュしないと遅いから自作側でキャッシュ処理も含めて作ることが多い
descriptionだとその属性自身を機能拡張したいときにしづらくない?
実際にはenumとラベルを相互に変換したり複数対応させたり等々ケースに応じて細かな要件が出てくるからそういう拡張をするときのベースとして使ってる
あとキャッシュしないと遅いから自作側でキャッシュ処理も含めて作ることが多い
descriptionだとその属性自身を機能拡張したいときにしづらくない?
442デフォルトの名無しさん (ワッチョイ 4a90-W2Md)
2019/11/06(水) 10:06:07.21ID:ju8QJ8Hj0 BindでEnumToStringConverter作るからそこでやるだろ。そこでリソース文字列を引っ張るようにする
443デフォルトの名無しさん (JP 0Hcf-Ri0F)
2019/11/07(木) 00:45:40.72ID:9Le1AJukH チャートエリアとか図解したサイトないですか?
シリーズだかなんやら意味分からん
シリーズだかなんやら意味分からん
444デフォルトの名無しさん (ワッチョイ 8b6e-msxt)
2019/11/07(木) 18:27:33.71ID:4Y6lEZUW0 C++のライブラリのちょっとした機能使いたくて現状C++でexe作ってそれをprocessで呼び出してる構造なんですけどなんかデメリットあります?
一応ラッパーもあってC#に一元化も出来るんですけどまぁ遅い。それに実行ファイル配るときに一緒にdllわさっと渡さないといけなくて。今はC#とC++のexe2つ渡すだけです
ソースコード別になっちゃって管理がめんどいくらいしか思いつかなかったんですけど、なんかトラブルの種になりそうなことありますか?
一応ラッパーもあってC#に一元化も出来るんですけどまぁ遅い。それに実行ファイル配るときに一緒にdllわさっと渡さないといけなくて。今はC#とC++のexe2つ渡すだけです
ソースコード別になっちゃって管理がめんどいくらいしか思いつかなかったんですけど、なんかトラブルの種になりそうなことありますか?
445デフォルトの名無しさん (ワッチョイ 8b6e-msxt)
2019/11/07(木) 18:36:24.70ID:4Y6lEZUW0446デフォルトの名無しさん (ワッチョイ 5b2f-DaD1)
2019/11/07(木) 18:55:13.67ID:5UmAe6Qb0 フォーム上に左1/4が欠けた円を表示させたいです。
FillEllipseで円を書いてFillRectangle背景色で1/4を塗りつぶせばいいや
と思ったら、FillRectangleが隣り合った塗りつぶしたくない図形も塗りつぶしてしまう。
なにかいい方法は無いでしょうか?
FillEllipseで円を書いてFillRectangle背景色で1/4を塗りつぶせばいいや
と思ったら、FillRectangleが隣り合った塗りつぶしたくない図形も塗りつぶしてしまう。
なにかいい方法は無いでしょうか?
447デフォルトの名無しさん (スップ Sdbf-4TTv)
2019/11/07(木) 19:05:19.59ID:rg6PQaG0d >>444
別に現状で不満ないなら良いのでは?
配布するものならexeが複数あるとC++の方のexe起動してうごかねーっていうのがくるかも
あと動かす環境が変わったときに両方のexeの再ビルドが必要になる可能性があるとか
環境まで言い出したらexeかどうかなん些細な話かもしれんが
別に現状で不満ないなら良いのでは?
配布するものならexeが複数あるとC++の方のexe起動してうごかねーっていうのがくるかも
あと動かす環境が変わったときに両方のexeの再ビルドが必要になる可能性があるとか
環境まで言い出したらexeかどうかなん些細な話かもしれんが
448デフォルトの名無しさん (ワッチョイ 9f2c-3bRk)
2019/11/07(木) 19:07:46.68ID:tx6c8EjT0 >>446
FillPieでできない?
FillPieでできない?
449デフォルトの名無しさん (ワッチョイ 9fa5-EJQs)
2019/11/07(木) 19:09:01.70ID:Cw78xltR0 >>446
DrawPie、FillPieがあるわけだが
DrawPie、FillPieがあるわけだが
450デフォルトの名無しさん (オイコラミネオ MMcf-KCNP)
2019/11/07(木) 19:19:51.87ID:6XnNaJpnM dllにでもしたほうがいい気はする
451デフォルトの名無しさん (ワッチョイ 5b2f-DaD1)
2019/11/07(木) 19:19:52.40ID:5UmAe6Qb0 すいません。
扇形ではなくて、左1/4のところでまっすぐカットしているという意味です。
図形の説明難しいな・・・。
扇形ではなくて、左1/4のところでまっすぐカットしているという意味です。
図形の説明難しいな・・・。
452デフォルトの名無しさん (ワッチョイ 9fa5-EJQs)
2019/11/07(木) 19:38:40.99ID:Cw78xltR0 よくわからんが、SetClipで描画範囲を指定すればいいんじゃないの
453デフォルトの名無しさん (ワッチョイ 9f2c-3bRk)
2019/11/07(木) 19:52:29.15ID:tx6c8EjT0 円弧の端と円の中心、もう片方の端と円の中心でそれぞれ線分を引いた形じゃなくて
円弧の端と端を1本の線分でつないだ形?
まあGraphicsPath作ってFillPathすればいいんじゃない
円弧の端と端を1本の線分でつないだ形?
まあGraphicsPath作ってFillPathすればいいんじゃない
454デフォルトの名無しさん (ブーイモ MM4f-4fxd)
2019/11/07(木) 20:58:33.81ID:YpFFJiGZM 私なら直線分解してポリゴン描画かな😅
455デフォルトの名無しさん (アウアウウー Sacf-FD+t)
2019/11/07(木) 21:34:03.21ID:nmFTkuxva >>446
境界線が不要でただ塗りつぶすだけならこれが一番簡単だね
public void FillSlicedEllipseL(Graphics g,Brush brush, RectangleF rect, double ratio)
{
var clip = g.Clip;
var sliceRect = rect; sliceRect.Width *= (float)ratio;
g.SetClip(sliceRect, CombineMode.Exclude);
g.FillEllipse(brush, rect);
g.Clip = clip;
}
必用ならパス作るしかないか
境界線が不要でただ塗りつぶすだけならこれが一番簡単だね
public void FillSlicedEllipseL(Graphics g,Brush brush, RectangleF rect, double ratio)
{
var clip = g.Clip;
var sliceRect = rect; sliceRect.Width *= (float)ratio;
g.SetClip(sliceRect, CombineMode.Exclude);
g.FillEllipse(brush, rect);
g.Clip = clip;
}
必用ならパス作るしかないか
456デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/07(木) 21:35:04.28ID:debRpYWr0 >>444
Process経由の場合はDLL使ったAPI呼び出しに比べると
マーシャリング/アンマーシャリング、エラーハンドリングが面倒になりがち
現状そこに不満がないなら無理してDLLに変更する必要はないと思う
あと一応バイナリリソースとしてdllやexeをC#のアセンブリに埋め込んで1ファイルにすることも可能
(リソースからexeを取り出して起動したりDLLをロードしたりするための追加コードが必要)
Process経由の場合はDLL使ったAPI呼び出しに比べると
マーシャリング/アンマーシャリング、エラーハンドリングが面倒になりがち
現状そこに不満がないなら無理してDLLに変更する必要はないと思う
あと一応バイナリリソースとしてdllやexeをC#のアセンブリに埋め込んで1ファイルにすることも可能
(リソースからexeを取り出して起動したりDLLをロードしたりするための追加コードが必要)
457デフォルトの名無しさん (ワッチョイ bb5f-vPHs)
2019/11/07(木) 22:01:55.24ID:cfOynPV20458デフォルトの名無しさん (ブーイモ MM4f-4fxd)
2019/11/07(木) 22:58:10.38ID:YpFFJiGZM EXEもLoadLibrary出来るのよ。
なので関数をexport出来れば、どちらでも使える
なので関数をexport出来れば、どちらでも使える
459デフォルトの名無しさん (ワッチョイ 5b2f-DaD1)
2019/11/07(木) 23:09:00.51ID:5UmAe6Qb0 いろいろありがとうございます。
説明ヘタですいません。
https://ja.wikipedia.org/wiki/%E5%BC%A7_(%E5%B9%BE%E4%BD%95%E5%AD%A6)
の上から2番めの図のABで円の端を切り落とした形状です。
任意の半径をしていするとこの形状が表示できるようにしたいのです。
隅っこがAB直線で欠けた円ですね。
説明ヘタですいません。
https://ja.wikipedia.org/wiki/%E5%BC%A7_(%E5%B9%BE%E4%BD%95%E5%AD%A6)
の上から2番めの図のABで円の端を切り落とした形状です。
任意の半径をしていするとこの形状が表示できるようにしたいのです。
隅っこがAB直線で欠けた円ですね。
460デフォルトの名無しさん (ワッチョイ 5b2f-DaD1)
2019/11/07(木) 23:10:57.49ID:5UmAe6Qb0 https://ja.wikipedia.org/wiki/%E5%BC%A7_(%E5%B9%BE%E4%BD%95%E5%AD%A6)
貼り付けたら後ろがハイパーリンクじゃなくなってますが、コピペしていただくとwikiのページが開きます。
貼り付けたら後ろがハイパーリンクじゃなくなってますが、コピペしていただくとwikiのページが開きます。
461デフォルトの名無しさん (ワッチョイ 5b2f-DaD1)
2019/11/07(木) 23:18:55.53ID:5UmAe6Qb0 やっかいなのは
欠けた円の半径を任意に変更したいのでGraphicPathで円に接する直線を引くのが難しいこと
欠けた円をたくさん描くので、rectangleやgclipでやると隣の欠けた円にも影響を及ぼすこと
なんですよね。
clipならできるのかなぁ。
欠けた円の半径を任意に変更したいのでGraphicPathで円に接する直線を引くのが難しいこと
欠けた円をたくさん描くので、rectangleやgclipでやると隣の欠けた円にも影響を及ぼすこと
なんですよね。
clipならできるのかなぁ。
462デフォルトの名無しさん (ワッチョイ 9fa7-cErl)
2019/11/07(木) 23:22:58.14ID:6/qmKr7m0 単純に描画順で回避すればいいじゃん
464デフォルトの名無しさん (ワッチョイ 9fa7-cErl)
2019/11/07(木) 23:25:47.22ID:6/qmKr7m0 それもできないなら一度
どっかのピクチャーボックス(wpf?winforms?)に貼り付けて
欠けた円を作ったあとで
それを必要な領域だけくり抜いて持って来ればええよ
どっかのピクチャーボックス(wpf?winforms?)に貼り付けて
欠けた円を作ったあとで
それを必要な領域だけくり抜いて持って来ればええよ
465デフォルトの名無しさん (ワッチョイ 4f0d-3CWa)
2019/11/08(金) 01:03:44.16ID:OPBfzRS70 vs2019でc#フォームアプリを作ろうとするとデフォが.net coreなのね
.net frameworkはやたら下の方に出てくるしこっちもデフォはユーザコントロール用だ
.net frameworkはやたら下の方に出てくるしこっちもデフォはユーザコントロール用だ
466デフォルトの名無しさん (JP 0Hcf-Ri0F)
2019/11/08(金) 01:52:25.99ID:u/zQOw3qH467デフォルトの名無しさん (ブーイモ MM7f-rO36)
2019/11/08(金) 07:02:50.73ID:uJPiJMNYM Properties.Settings.Default を変数dに入れて
クラス内のpublic変数にしたいんだけど
何かうまい方法はないだろうか
記述が長すぎるから短縮したいんだよね
クラス内のpublic変数にしたいんだけど
何かうまい方法はないだろうか
記述が長すぎるから短縮したいんだよね
468デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/08(金) 10:09:55.65ID:q9/Fdf+e0469デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/08(金) 10:55:00.38ID:l/9rfM6i0 usingは無理でした
名前空間はPropertiesだけで
Properties.Setting.Default のエイリアスや参照は作れないようです
privateだと参照が作れるんですが
publicにするとDefaultが internal sealedで定義されているため
エラーになっちゃうんですよね…
名前空間はPropertiesだけで
Properties.Setting.Default のエイリアスや参照は作れないようです
privateだと参照が作れるんですが
publicにするとDefaultが internal sealedで定義されているため
エラーになっちゃうんですよね…
470デフォルトの名無しさん (ワッチョイ 4f7c-3bRk)
2019/11/08(金) 11:05:14.26ID:gdoQlzgA0 そりゃそうだろ
internalでいいじゃん
using static hoge.Properties.Settings;
で Default.fuga なんて書き方もできるけど
internalでいいじゃん
using static hoge.Properties.Settings;
で Default.fuga なんて書き方もできるけど
471デフォルトの名無しさん (スップ Sdbf-4TTv)
2019/11/08(金) 11:46:56.06ID:QwZEyG0Sd publicなgetter setterもったラッパーでも作っちゃえば?
472デフォルトの名無しさん (アウウィフ FFcf-tB+Q)
2019/11/08(金) 13:05:04.27ID:3E1/z7K0F >>461
これじゃいかんのか
http://20100718seko.blog130.fc弐.com/blog-えんとり-43.html
https://どぼん.net/vb/dotnet/graphics/drawrectangle.html#section7
https://docs.microsoft.com/ja-jp/dotnet/api/system.drawing.graphics.fillellipse
これじゃいかんのか
http://20100718seko.blog130.fc弐.com/blog-えんとり-43.html
https://どぼん.net/vb/dotnet/graphics/drawrectangle.html#section7
https://docs.microsoft.com/ja-jp/dotnet/api/system.drawing.graphics.fillellipse
473デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 13:27:02.99ID:GoK8IDZc0 以下のプログラムについて質問お願いいたします。
--- 以下プログラム ---
public static int TwoAdicValuation(ulong x)
=> TwoAdicValuationTable[(x & ~x + 1) % 67];
static readonly int[] TwoAdicValuationTable
= InitializeTwoAdicValuationTable();
static int[] InitializeTwoAdicValuationTable() {
var table = new int[67];
table[0] = -1;
for (var i = 0; i < 64; i++) {
table[(1UL << i) % 67] = i;
}
return table;
}
--- 以上プログラム ---
上記の TwoAdicValuation メソッドは、
・引数 x がゼロのときは -1 を返す
・それ以外の場合、引数 x が 2 で割れる回数を返す
という動作をするようです。
例えば TwoAdicValuation(2*3*5) は 1,
TwoAdicValuation(2*2*2*17) は 3,
TwoAdicValuation(19) は 0,
TwoAdicValuation(0) は -1 を返します。
しかしプログラムを読んでみても、
何がどうなってそのような動作になっているのかどうしても理解できません。
何かお分かりになることがあれば
どんなことでも構いませんので教えていただけないでしょうか。
どうぞよろしくお願いいたします。
--- 以下プログラム ---
public static int TwoAdicValuation(ulong x)
=> TwoAdicValuationTable[(x & ~x + 1) % 67];
static readonly int[] TwoAdicValuationTable
= InitializeTwoAdicValuationTable();
static int[] InitializeTwoAdicValuationTable() {
var table = new int[67];
table[0] = -1;
for (var i = 0; i < 64; i++) {
table[(1UL << i) % 67] = i;
}
return table;
}
--- 以上プログラム ---
上記の TwoAdicValuation メソッドは、
・引数 x がゼロのときは -1 を返す
・それ以外の場合、引数 x が 2 で割れる回数を返す
という動作をするようです。
例えば TwoAdicValuation(2*3*5) は 1,
TwoAdicValuation(2*2*2*17) は 3,
TwoAdicValuation(19) は 0,
TwoAdicValuation(0) は -1 を返します。
しかしプログラムを読んでみても、
何がどうなってそのような動作になっているのかどうしても理解できません。
何かお分かりになることがあれば
どんなことでも構いませんので教えていただけないでしょうか。
どうぞよろしくお願いいたします。
474デフォルトの名無しさん (ワッチョイ 9f2c-E8Ce)
2019/11/08(金) 13:54:06.44ID:bNpOstnB0 Ruby で説明すると、
2進数で、右から連続する、0の数が、2の累乗を表す。
0b は、2進数
0b0101(5) → 奇数
0b0110(6), 0b1010(10) → 2^1
0b0100(4) → 2^2
0b1000(8) → 2^3
2進数で、右から連続する、0の数が、2の累乗を表す。
0b は、2進数
0b0101(5) → 奇数
0b0110(6), 0b1010(10) → 2^1
0b0100(4) → 2^2
0b1000(8) → 2^3
475デフォルトの名無しさん (アウアウウー Sacf-FD+t)
2019/11/08(金) 13:55:40.06ID:Y8kt1QUVa >>473
なんか1年ぐらい前にも同じネタがあった気がするんだけど...
コードよく読んでないけど、要するに2進数で見た時に
「値が1の最下位ビットの位置」を求めてるだけだと思うよ。
2進数で2で割ることは右に算術シフトするのと同じなのは分かるよね?
あと、奇数とはbit0が1の数なのも分かるよね?
だから「x が 2 で割れる回数」と「値が1の最下位ビットの位置」は同じになる
なんか1年ぐらい前にも同じネタがあった気がするんだけど...
コードよく読んでないけど、要するに2進数で見た時に
「値が1の最下位ビットの位置」を求めてるだけだと思うよ。
2進数で2で割ることは右に算術シフトするのと同じなのは分かるよね?
あと、奇数とはbit0が1の数なのも分かるよね?
だから「x が 2 で割れる回数」と「値が1の最下位ビットの位置」は同じになる
476デフォルトの名無しさん (アウアウウー Sacf-FD+t)
2019/11/08(金) 14:03:08.97ID:Y8kt1QUVa477デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/08(金) 15:02:17.09ID:l/9rfM6i0 なるほど因数分解して2がいくつあるか数えるのね
478デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 15:11:25.53ID:GoK8IDZc0 >>474-477
ありがとうございます。
色々と実験してみた結果、
x & ~x + 1 が、x と 2で割れる回数が同じ、
1UL << i の形の値になることがわかりました。
ただ、どうして x & ~x + 1 と 1UL << i が
結びつくのかまだ理解できておらず、
67 で割った余りを計算する理由も分かっていないので
引き続き考えてみようと思います。
もし他にもヒントがあれば教えていただけると嬉しいです。
よろしくお願いいたします。
ありがとうございます。
色々と実験してみた結果、
x & ~x + 1 が、x と 2で割れる回数が同じ、
1UL << i の形の値になることがわかりました。
ただ、どうして x & ~x + 1 と 1UL << i が
結びつくのかまだ理解できておらず、
67 で割った余りを計算する理由も分かっていないので
引き続き考えてみようと思います。
もし他にもヒントがあれば教えていただけると嬉しいです。
よろしくお願いいたします。
479474 (ワッチョイ 9f2c-E8Ce)
2019/11/08(金) 15:35:02.78ID:bNpOstnB0 Ruby で作った!
そんな、67 とか、訳の分からないロジックを解析しても、仕方ないだろ。無視すべしw
def func( num )
return -1 if num == 0
# 2進数の文字列にして、逆転して、左から探す
num.to_s( 2 ).reverse.index( "1" )
end
nums = %w(0 5 10 4 8).map!( &:to_i ) # 数値の配列
p nums.map { |num| func( num ) }
#=> [-1, 0, 1, 2, 3]
そんな、67 とか、訳の分からないロジックを解析しても、仕方ないだろ。無視すべしw
def func( num )
return -1 if num == 0
# 2進数の文字列にして、逆転して、左から探す
num.to_s( 2 ).reverse.index( "1" )
end
nums = %w(0 5 10 4 8).map!( &:to_i ) # 数値の配列
p nums.map { |num| func( num ) }
#=> [-1, 0, 1, 2, 3]
480デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/08(金) 16:37:08.11ID:l/9rfM6i0 なぜC#スレにruby厨が?
481デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/08(金) 16:48:42.14ID:q9/Fdf+e0 >>473
tableの中身を理解するにはi, table[i], 1UL <<1, (1UL<<1 %67)を0~64の範囲で逐次出力してみる
xとx&(~x +1)の関係を理解するには一旦byteで考えてビット演算を図にして考えてみる
x=1, ~x=254, x&(~x+1)=1
x=2, ~x=253, x&(~x+1)=2
x=3, ~x=252, x&(~x+1)=1
x=4, ~x=251, x&(~x+1)=4
x=5, ~x=250, x&(~x+1)=1
x=6, ~x=249, x&(~x+1)=2
x=7, ~x=248, x&(~x+1)=1
x=8, ~x=247, x&(~x+1)=8
64と67の関係は、16と19, 32と37でも同じ結果が得られそう
ぶっちゃけbrainfuck系のコードなのでビット演算を理解すればあとは忘れていい類だと思う
tableの中身を理解するにはi, table[i], 1UL <<1, (1UL<<1 %67)を0~64の範囲で逐次出力してみる
xとx&(~x +1)の関係を理解するには一旦byteで考えてビット演算を図にして考えてみる
x=1, ~x=254, x&(~x+1)=1
x=2, ~x=253, x&(~x+1)=2
x=3, ~x=252, x&(~x+1)=1
x=4, ~x=251, x&(~x+1)=4
x=5, ~x=250, x&(~x+1)=1
x=6, ~x=249, x&(~x+1)=2
x=7, ~x=248, x&(~x+1)=1
x=8, ~x=247, x&(~x+1)=8
64と67の関係は、16と19, 32と37でも同じ結果が得られそう
ぶっちゃけbrainfuck系のコードなのでビット演算を理解すればあとは忘れていい類だと思う
482デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/08(金) 16:50:19.91ID:l/9rfM6i0 >>478
わかったわ
x & ~x + 1 は、最下位の1のビットだけ残す計算
ビット反転して1を足すことで、最下位の1まで繰り上がり
他のビットは必ずどちらかが0になるのでandで消える
で、67で割った余りを求める理由は、2^t を67で割った場合
tが0〜63の範囲ならユニークな値になるから
最小サイズの配列のインデックスを返す値として
最も適していたということだな
なかなか面白いプログラムだった
わかったわ
x & ~x + 1 は、最下位の1のビットだけ残す計算
ビット反転して1を足すことで、最下位の1まで繰り上がり
他のビットは必ずどちらかが0になるのでandで消える
で、67で割った余りを求める理由は、2^t を67で割った場合
tが0〜63の範囲ならユニークな値になるから
最小サイズの配列のインデックスを返す値として
最も適していたということだな
なかなか面白いプログラムだった
483デフォルトの名無しさん (ワッチョイ cb88-4TTv)
2019/11/08(金) 17:03:13.19ID:N8JdoV2L0 文字列にするとかいう高コストの処理をしないためのアルゴリズムなのに無視すべきとか何言ってんだw
競技プログラムとか触ったこと無いの?
競技プログラムとか触ったこと無いの?
484デフォルトの名無しさん (アウアウウー Sacf-U/KP)
2019/11/08(金) 17:10:37.08ID:n8X47CXXa >>480
そいつはいろんな所に湧いて出てくる有名人だ。スルー推奨。
そいつはいろんな所に湧いて出てくる有名人だ。スルー推奨。
485デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/08(金) 17:10:58.46ID:l/9rfM6i0 >>482を修正
>で、67で割った余りを求める理由は、2^t を67で割った場合
割った余りを求めれば
>tが0〜63の範囲ならユニークな値になるから
tが1〜64の場合だな
かなり洗練されているが読みやすさとしては
仕事で扱うには勘弁してほしいw
ところでまさかこれ課題じゃねーよな?
>で、67で割った余りを求める理由は、2^t を67で割った場合
割った余りを求めれば
>tが0〜63の範囲ならユニークな値になるから
tが1〜64の場合だな
かなり洗練されているが読みやすさとしては
仕事で扱うには勘弁してほしいw
ところでまさかこれ課題じゃねーよな?
486デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 18:04:22.31ID:GoK8IDZc0 >>479
ありがとうございます。
Ruby を扱う技術が私には無いので
アイディアだけお借りして C# に翻訳してみたところ、
期待通りに動作いたしました。
ちなみに、他の方から実行速度に関するご指摘があったので
オリジナルと比較してみたところ、私の書いたコードでは
オリジナルよりも 250 倍程度時間がかかってしまうようでした。
とはいえ読みやすさは良いプログラムの重要な条件なので、
場面に応じて使い分けるのが良さそうですね。
ありがとうございます。
Ruby を扱う技術が私には無いので
アイディアだけお借りして C# に翻訳してみたところ、
期待通りに動作いたしました。
ちなみに、他の方から実行速度に関するご指摘があったので
オリジナルと比較してみたところ、私の書いたコードでは
オリジナルよりも 250 倍程度時間がかかってしまうようでした。
とはいえ読みやすさは良いプログラムの重要な条件なので、
場面に応じて使い分けるのが良さそうですね。
487デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 18:04:48.09ID:GoK8IDZc0 >>481-482
大変わかりやすいご説明どうもありがとうございます。
>>481
> xとx&(~x +1)の関係を理解するには一旦byteで考えてビット演算を図にして考えてみる
>>482
> x & ~x + 1 は、最下位の1のビットだけ残す計算
いただいたアドバイスを元に↓のような実験をしてみて理解できたと思います。
00101100 (44)
11010011 (~44)
11010100 (~44 + 1)
00000100 (44 & ~44 + 1)
>>481
tableの中身を理解するにはi, table[i], 1UL <<1, (1UL<<1 %67)を0~64の範囲で逐次出力してみる
>>482
> 67で割った余りを求める理由は、2^t を67で割った場合
> tが0〜63の範囲ならユニークな値になる
なるほど!実験してみて、確かにそうなっていることがわかりました。
40 人のクラスの中で同じ誕生日のペアがいる確率は 90% 近いと
聞いたことがあるので、なんだか不思議な感じがします。
>>481
> 64と67の関係は、16と19, 32と37でも同じ結果が得られそう
すごく興味深いです。私も実験してみたところ、
1 と 2、2 と 3、4 と 5、8 と 11 という感じになったのですがあってますか?
また、「16と19, 32と37」というのをさらっと書いてくださっていますが、
これは実際に調べてくださったのですか?
それとも、きちんと数学を勉強していればすぐに分かることなのでしょうか。。。
大変わかりやすいご説明どうもありがとうございます。
>>481
> xとx&(~x +1)の関係を理解するには一旦byteで考えてビット演算を図にして考えてみる
>>482
> x & ~x + 1 は、最下位の1のビットだけ残す計算
いただいたアドバイスを元に↓のような実験をしてみて理解できたと思います。
00101100 (44)
11010011 (~44)
11010100 (~44 + 1)
00000100 (44 & ~44 + 1)
>>481
tableの中身を理解するにはi, table[i], 1UL <<1, (1UL<<1 %67)を0~64の範囲で逐次出力してみる
>>482
> 67で割った余りを求める理由は、2^t を67で割った場合
> tが0〜63の範囲ならユニークな値になる
なるほど!実験してみて、確かにそうなっていることがわかりました。
40 人のクラスの中で同じ誕生日のペアがいる確率は 90% 近いと
聞いたことがあるので、なんだか不思議な感じがします。
>>481
> 64と67の関係は、16と19, 32と37でも同じ結果が得られそう
すごく興味深いです。私も実験してみたところ、
1 と 2、2 と 3、4 と 5、8 と 11 という感じになったのですがあってますか?
また、「16と19, 32と37」というのをさらっと書いてくださっていますが、
これは実際に調べてくださったのですか?
それとも、きちんと数学を勉強していればすぐに分かることなのでしょうか。。。
488デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 18:05:15.79ID:GoK8IDZc0489474 (ワッチョイ 9f2c-E8Ce)
2019/11/08(金) 19:01:19.01ID:bNpOstnB0490デフォルトの名無しさん (ワッチョイ abe6-DaD1)
2019/11/08(金) 20:36:38.33ID:83cZSp6a0 コレクションの初期化子で複数を同じ値でまとめて指定する方法はないでしょうか?
Pythonの、l=[False]*100みたいなことをやりたいのですが、
var l = new List<bool> { False, False・・(100個分)}ぐらいしか思いつかず・・
Pythonの、l=[False]*100みたいなことをやりたいのですが、
var l = new List<bool> { False, False・・(100個分)}ぐらいしか思いつかず・・
491デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/08(金) 20:40:33.49ID:3NnH1vyN0 >>490
Enumerable.Repeatでググろう
Enumerable.Repeatでググろう
492デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/08(金) 20:42:51.62ID:3NnH1vyN0493デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/08(金) 20:45:08.81ID:3NnH1vyN0 ruby君はほんとひどいな
自分が軽く触れそうな話題にだけ飛びついてわからない部分は謎理論で適当な回答しかしない
自分が軽く触れそうな話題にだけ飛びついてわからない部分は謎理論で適当な回答しかしない
494デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 20:51:12.72ID:GoK8IDZc0495デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/08(金) 21:38:06.59ID:3NnH1vyN0496デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 22:38:41.75ID:GoK8IDZc0 >>495
レスありがとうございます。
フェルマーの小定理について調べてみました。
フェルマーの小定理から分かることとして、p が奇数の素数のとき、
(2^0)%p と (2^(p-1))%p はともに 1 になるようです。
つまり >>482 さんの言葉をお借りするなら、
奇数の素数 p がビット数 n 以下のとき
t が 0〜(n-1) の範囲で変化すると (2^t)%p がユニークにならないため、
ビット数 n の対としてn 以下の奇数の素数は不適切ということになります。
ただ、フェルマーの小定理は p > n のときに (2^t)%p がユニークになることを
保証するものではありませんし、そもそも奇数の素数じゃなくても
ビット数 n の対としてn 以下の数が適切でないのは当たり前な気がするので、
フェルマーの小定理から直ちに欲しい情報が得られるというわけではないようです。
とはいえ、関連しそうな分野が分かっただけでも大きな前進ですので、
もう少し詳しく調べてみようと思います。どうもありがとうございました。
レスありがとうございます。
フェルマーの小定理について調べてみました。
フェルマーの小定理から分かることとして、p が奇数の素数のとき、
(2^0)%p と (2^(p-1))%p はともに 1 になるようです。
つまり >>482 さんの言葉をお借りするなら、
奇数の素数 p がビット数 n 以下のとき
t が 0〜(n-1) の範囲で変化すると (2^t)%p がユニークにならないため、
ビット数 n の対としてn 以下の奇数の素数は不適切ということになります。
ただ、フェルマーの小定理は p > n のときに (2^t)%p がユニークになることを
保証するものではありませんし、そもそも奇数の素数じゃなくても
ビット数 n の対としてn 以下の数が適切でないのは当たり前な気がするので、
フェルマーの小定理から直ちに欲しい情報が得られるというわけではないようです。
とはいえ、関連しそうな分野が分かっただけでも大きな前進ですので、
もう少し詳しく調べてみようと思います。どうもありがとうございました。
497デフォルトの名無しさん (ブーイモ MM4f-4fxd)
2019/11/08(金) 22:59:25.16ID:EylFl5WNM ついでにガロア体も調べると、
QRのコード化で楽になるよ:-p
QRのコード化で楽になるよ:-p
498デフォルトの名無しさん (ワッチョイ abe6-DaD1)
2019/11/08(金) 23:04:00.88ID:83cZSp6a0499デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/08(金) 23:08:44.38ID:3NnH1vyN0 >>498
もしfalse限定ならC#のbool変数の初期値はfalseに決まってるからbool配列100個を作るだけで目的のものは作れるよ
trueの場合はRepeatすることになるけど、falseなら配列宣言で済ませたほうがパフォーマンスは良い
100個程度なら微々たる差ではあるけど
もしfalse限定ならC#のbool変数の初期値はfalseに決まってるからbool配列100個を作るだけで目的のものは作れるよ
trueの場合はRepeatすることになるけど、falseなら配列宣言で済ませたほうがパフォーマンスは良い
100個程度なら微々たる差ではあるけど
500デフォルトの名無しさん (ワッチョイ 9f61-DaD1)
2019/11/08(金) 23:10:41.57ID:oRbRRQfv0 >>498のは値型だからいいけど参照型でやると楽しいことになる
501デフォルトの名無しさん (ワッチョイ 8b1b-rQqJ)
2019/11/08(金) 23:27:30.91ID:kn5mNyzW0 値型でしか使ったことなかったけど調べたら参照型は複製してくれないのかよ!
やっぱforループしか信じられねえわ
やっぱforループしか信じられねえわ
502デフォルトの名無しさん (ワッチョイ abe6-DaD1)
2019/11/08(金) 23:27:57.31ID:83cZSp6a0 >>500
Pythonで[[0, 1]]*10とかやって、恐ろしいことになったのを思い出しました
今はちゃんと[[0,1] for _ in range(10)]としてますが、C#でも同じですね
それにしてもPythonから移ってくると、C#は難しいですね・・
Pythonで[[0, 1]]*10とかやって、恐ろしいことになったのを思い出しました
今はちゃんと[[0,1] for _ in range(10)]としてますが、C#でも同じですね
それにしてもPythonから移ってくると、C#は難しいですね・・
503デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 23:28:43.13ID:GoK8IDZc0 >>497
レスありがとうございます。
いろいろなビット数 n の対になる数を調べてみると、
必ずしも素数になるとは限らないものの、
調べた範囲では全て p^k(p は素数、k は自然数)の形になっていました。
で、教えていただいたガロア体というのは要素の個数 p^k の集合ということで
ビンゴかと思ったのですが、
どうやら私が考えているのは p^k を法とする剰余環というものらしく、
k = 1 で無い限りガロア体とは本質的に異なるもののようです。
しかし色々と調べれば調べるほどこのあたりの分野から答えが見つかりそうだと
思えてきたので、もう少し頑張ってみようと思います。どうもありがとうございます。
レスありがとうございます。
いろいろなビット数 n の対になる数を調べてみると、
必ずしも素数になるとは限らないものの、
調べた範囲では全て p^k(p は素数、k は自然数)の形になっていました。
で、教えていただいたガロア体というのは要素の個数 p^k の集合ということで
ビンゴかと思ったのですが、
どうやら私が考えているのは p^k を法とする剰余環というものらしく、
k = 1 で無い限りガロア体とは本質的に異なるもののようです。
しかし色々と調べれば調べるほどこのあたりの分野から答えが見つかりそうだと
思えてきたので、もう少し頑張ってみようと思います。どうもありがとうございます。
504デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/08(金) 23:52:22.74ID:3NnH1vyN0 >>501
newするRepeatをGenericで作ればいいよ
whereで値型と参照型分けるようにして作ってそっち呼ぶようにすれば気にする必要もなくなる
インスタンス生成が多くなるようなプロジェクトではよく使う
ゲーム系なんかだと結構使われること多いんじゃないかな?
newするRepeatをGenericで作ればいいよ
whereで値型と参照型分けるようにして作ってそっち呼ぶようにすれば気にする必要もなくなる
インスタンス生成が多くなるようなプロジェクトではよく使う
ゲーム系なんかだと結構使われること多いんじゃないかな?
505デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/08(金) 23:55:21.55ID:J2B6vaPv0 >>501
LINQ の速度が許容できるなら、こんな感じでやろうぜ。
Enumerable.Range(0, 100)
.Select( i => new CertainClass { ... } )
.ToList();
for 文ダサい。
LINQ の速度が許容できるなら、こんな感じでやろうぜ。
Enumerable.Range(0, 100)
.Select( i => new CertainClass { ... } )
.ToList();
for 文ダサい。
506デフォルトの名無しさん (ワッチョイ 9f2f-E8Ce)
2019/11/09(土) 05:56:33.04ID:b9xnhqog0 LINQ覚えたてで使いたくてしょうがなくてイキって書いたコードに見えるわ
507デフォルトの名無しさん (ワッチョイ 0fa7-DaD1)
2019/11/09(土) 08:50:31.29ID:Bvga/TrM0 Visual Studio2019で新プロジェクトを作ろうとしたらWindows Forms App(.NET Core)がさも推奨かのように上の方に出てきますが、
Windowsで使う想定のWinFormsアプリを作る場合も.NET Coreで作ったほうがいいんでしょうか?
Windowsで使う想定のWinFormsアプリを作る場合も.NET Coreで作ったほうがいいんでしょうか?
508デフォルトの名無しさん (ワッチョイ 2be5-3N2q)
2019/11/09(土) 09:05:30.09ID:SXTesUyU0509デフォルトの名無しさん (JP 0Hcf-ApVS)
2019/11/09(土) 09:13:38.87ID:pySBQwYBH ロードマップではこれからcore主流になるんでしょ
510デフォルトの名無しさん (ササクッテロラ Sp0f-Y4Hd)
2019/11/09(土) 09:36:44.32ID:7/SeOb4dp CoreってWindowsに標準でインストールされてるの?
ユーザーに別途インストールさせるようなことない?
ユーザーに別途インストールさせるようなことない?
511デフォルトの名無しさん (ワッチョイ fb0c-DaD1)
2019/11/09(土) 10:32:51.34ID:HanEs9+F0 されてないし今のところWUで配るような予定も無いとさ
逆にインストール不要なcoreのランタイムそのものを同梱して配布はできる
逆にインストール不要なcoreのランタイムそのものを同梱して配布はできる
512デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/09(土) 10:38:23.18ID:YXlbcSmw0513デフォルトの名無しさん (ワッチョイ 9fa7-cErl)
2019/11/09(土) 10:55:47.68ID:Bq7xaXZQ0 ちょっと条件変わったときに途中で引っ掛けにくいよね
あ、ここ、フラグでcontinueいるわ
あ、i%10==0毎に処理いるわ
あ、i±Nまで見る必要あるわ
とか、for文のが圧倒的に拡張性が高い
あ、ここ、フラグでcontinueいるわ
あ、i%10==0毎に処理いるわ
あ、i±Nまで見る必要あるわ
とか、for文のが圧倒的に拡張性が高い
514デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/09(土) 11:01:23.16ID:c61Xm8G30 foreachがインデックスも定義できれば
もっと活用の幅が広がるのだけど
もっと活用の幅が広がるのだけど
515デフォルトの名無しさん (ワッチョイ fb0c-DaD1)
2019/11/09(土) 11:15:58.41ID:HanEs9+F0 インデックス付きSelect/Whereとかでええんちゃうの
516デフォルトの名無しさん (ワッチョイ 8bad-DP7C)
2019/11/09(土) 11:17:41.47ID:UZitXSsm0 別に i は LINQ でも出来るような気が。
517デフォルトの名無しさん (アウアウエー Sa3f-pFIx)
2019/11/09(土) 11:18:29.90ID:aDURcOtda ループ内を雑に拡張して後で困るのが嫌だからLinqとLinq拡張ライブラリを使う
n件ごと、前後n件なんて頻出処理だしなおさらね
n件ごと、前後n件なんて頻出処理だしなおさらね
518デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/09(土) 11:24:19.54ID:c61Xm8G30 >>515
そんなのあるの?
そんなのあるの?
519デフォルトの名無しさん (ワッチョイ 9f2c-E8Ce)
2019/11/09(土) 11:56:21.81ID:Ypm9+s0e0 >>501-502
Ruby でも、ブロック無しで、Array.new すると、同じ参照を使ってしまうが、
ブロックを渡せば、ブロック内で個々のインスタンスを作れる
p ary = Array.new( 2, [ 0, 0 ] ) #=> [[0, 0], [0, 0]]
ary[ 0 ][ 1 ] = 2
p ary #=> [[0, 2], [0, 2]]
ary_2 = Array.new( 2 ) { [ 0, 0 ] }
ary_2[ 0 ][ 1 ] = 2
p ary_2 #=> [[0, 2], [0, 0]]
Ruby でも、ブロック無しで、Array.new すると、同じ参照を使ってしまうが、
ブロックを渡せば、ブロック内で個々のインスタンスを作れる
p ary = Array.new( 2, [ 0, 0 ] ) #=> [[0, 0], [0, 0]]
ary[ 0 ][ 1 ] = 2
p ary #=> [[0, 2], [0, 2]]
ary_2 = Array.new( 2 ) { [ 0, 0 ] }
ary_2[ 0 ][ 1 ] = 2
p ary_2 #=> [[0, 2], [0, 0]]
520デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/09(土) 12:15:40.62ID:YXlbcSmw0 >>513
設計せずに書き出すダメプログラマー丸出しの発言だな。そうやってできるのは、いちおう動くけどバグが埋れてて、変数ダンプしながらフローを追わないと挙動がわからない可読性の低いコードになるんだよ。
君のいうことは、インデックス付き Select や GroupBy & SelectMany や TakeWhile なんかを組み合わせれば簡単にできるよ。
もともとは System.Linq の Enumerable.Repeat が参照型では Shallow Copy になるってことから始まったのだから Select 使って Deep Copy にすることでいいんでないの。
設計せずに書き出すダメプログラマー丸出しの発言だな。そうやってできるのは、いちおう動くけどバグが埋れてて、変数ダンプしながらフローを追わないと挙動がわからない可読性の低いコードになるんだよ。
君のいうことは、インデックス付き Select や GroupBy & SelectMany や TakeWhile なんかを組み合わせれば簡単にできるよ。
もともとは System.Linq の Enumerable.Repeat が参照型では Shallow Copy になるってことから始まったのだから Select 使って Deep Copy にすることでいいんでないの。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- (´・ω・`)おはよ
- さかまた「過呼吸になった」かなた「耳聞こえない」ござる「声出ない」まつり「ご飯食べれない」
- 【画像】カリカリ女、脱いだらすごい😨 [632966346]
- くそしてかがやけ
- 🪬本日のコンマ占い🧿
