ふらっと C#,C♯,C#(初心者用) Part148at TECH
ふらっと C#,C♯,C#(初心者用) Part148 - 暇つぶし2ch686:デフォルトの名無しさん
20/11/19 20:59:45.17 fvT6uEqW0.net
>>677
だからプライベートリポの8割はC/C++って程度には普段はC使ってるけど
でもその理論言っちゃうと本家StringBuilderも要らんってことになるしな
全部+とか$"{}"でええやん

687:デフォルトの名無しさん
20/11/19 21:03:40.41 nKYhLbF50.net
StringBuilderを使えというのは学ぶでしょ
そこまででいい
それ以上やるならもうC#使う意味ない

688:デフォルトの名無しさん
20/11/19 21:04:23.57 fvT6uEqW0.net
>>679
それじゃSpanとか実装したMSがバカみたいじゃん

689:デフォルトの名無しさん
20/11/19 21:28:29.15 A4wcMVuA0.net
>>663 が挙げてたZStringの解説記事
個人的にはそこまでパフォーマンス気にするような物作ってないから「へー」って感じで読んだだけだけど
ZString – Unity/.NET CoreにおけるゼロアロケーションのC#文字列生成
URLリンク(tech.cygames.co.jp)

690:デフォルトの名無しさん
20/11/19 21:32:12.66 s0VdR5fOd.net
国内C#erで有名どころだしstringはパフォーマンス絡みでよく上がるから割と有名な方じゃないかな?
あんなにパフォーマンス気にする人が知らないのには驚きだけどw

691:デフォルトの名無しさん
20/11/20 01:24:52.99 ViPIBq0U0.net
パフォーマンスは気にしてないんじゃないの?
アロケーション気にしてただけで

692:デフォルトの名無しさん
20/11/20 07:19:27.10 ShozvaYJ0.net
C++は基本がスタック、C#は基本がヒープ
この二者の最大の差はこれなのでC#のパフォーマンス改善=アロケーション回避に終始する

693:デフォルトの名無しさん
20/11/21 03:48:47.56 zIAbzPq60.net
俺バカだから何万回の処理で何ms差が出るのか教えてほしい

694:デフォルトの名無しさん
20/11/21 08:27:18.63 WoKZFdST0.net
手段が目的と化している人達にそんなこと聞いても無駄だよ

695:デフォルトの名無しさん
20/11/21 11:57:08.18 6fJp/BaL0.net
初心者スレらしい馬鹿がいて嬉しい

696:デフォルトの名無しさん
20/11/21 11:59:54.22 zQZxJMDr0.net
>>681のブログ主みたいな人の方が結局生産性も高いのだから、パフォーマンス厨を馬鹿にするのは知への嫉妬にしか見えない
尤も初心者用スレで話す内容ではないが

697:デフォルトの名無しさん
20/11/21 13:04:44.65 Ny+zGkjNa.net
まあちょっと前の数値演算の話と同じだよ。
純粋な学問として円周率の桁数を追求することを否定する人はいないけど、
実用上必要ないのにそれを追求するのはただの馬鹿なフェティシズム

698:デフォルトの名無しさん
20/11/21 13:16:59.22 QfF2kXL70.net
こだわっている当人が>>663を提案されているのに
>良く知らないけどそれもその都度string生成してるんじゃないの
って見もせずに切り捨てているのがわけわからない。自分の作ったunsafeメソッド誉めてほしかったの?

699:デフォルトの名無しさん
20/11/21 15:32:05.57 TFceIuuT0.net
誰も>>661の質問自体には答えてあげてないんだからスレチとしてスルーで良いのでは

700:デフォルトの名無しさん
20/11/21 16:59:03.08 ZU3qCVhf0.net
ASP.NET Coreを勉強してみようと思うんだけど
レンタルサーバの「使えるプログラム」のところに
PHP, Ruby, PyThon, Sh としか書かれてないところはダメですよね?

701:デフォルトの名無しさん
20/11/21 18:32:27.77 +zQLxjm30.net
勉強ならローカルで動かせばよろし。

702:デフォルトの名無しさん
20/11/21 19:15:26.59 pEQG3awY0.net
>>690
ライブラリ教えてなんてレスは一度もしてないし主題とは違う返信に対して検索や外部リンクまでチェックする義務が発生する理屈の方が訳わからない
提案してくれた>>663には感謝するけど、あくまで自分の質問は660のレス内容
C#の質問をしたつもりだけど言語の質問とは違うということであればスレチと言われても仕方ないが

703:デフォルトの名無しさん
20/11/21 20:16:31.79 WQW9Bpg70.net
>>669
編集してるXXX.csファイルを読み込んで
NameValueCollection vals = new NameValueCollection行の次の
{行からそのあとの};行の間の行に先頭スペースを揃えて挿入して
ファイルを上書き保存するミニアプリを作って実行すればいい
テキストの平文ファイルだから編集は簡単
VSで編集中にそのような外部エディタで編集がされると
編集を反映しますかって即座に聞いてくるからはいすれば位置がそろう

704:デフォルトの名無しさん
20/11/21 23:02:14.09 eXf0RCq40.net
>>689 全世界で行われてる円周率演算がすべて世界記録出すために動いてると思ってる馬鹿

705:デフォルトの名無しさん
20/11/22 02:05:01.90 eyJ/0uPg0.net
>>694
①マジレスするとメモリリークはしない。こんなのはGC.Collectしてメモリ使用量を見比べるだけで分かる
②でも>>661の使い方ではインターンプールで潜在的なバグを抱えるからやめた方が良い
③やりたいこと汲み取るなら先人が同じ悩みから到達したソースを使うべき
④ZStringいいよ
余計な遠回りをしないようにこの結論から言ってくれてるんだよ
>>663は優しい奴だよ、まったく

706:デフォルトの名無しさん
20/11/22 02:09:21.16 r7dn6Jzr0.net
>>696
何のためにやってるの?自己満オナニー?

707:デフォルトの名無しさん
20/11/22 02:37:39.25 XfbnXwSba.net
>>696
どっから世界記録とか出てくるの?w
読解力大丈夫かこの人

708:デフォルトの名無しさん
20/11/22 08:48:28.54 VTf/cbNB0.net
>>697
マジレスすると今のところはヘッダオンリーならぬ単ソースオンリーで済ませたいのであんまり外部ライブラリには乗り気じゃないというのもあるが
とは言えZStringを拝見したところu8stringをC#で実装出来てる凄いライブラリであるようなのでtext系ファイルやらwebやらdbのクエリやらで利用したい構想立ちまくったのでありがたくスターポチって記憶させていただく
確かにただのバッファとして作ったものの実態はstringに違いないので何かの拍子にstring.Internしてしまうと結構不味いことになるね
とりあえずGCに影響ないと教えてくれて大分スッキリしたのでありがとう

709:デフォルトの名無しさん
20/11/22 09:03:29.09 0zyBqMyr0.net
>>699
「円周率の桁数を追求する」ってのは結局そういうこと

710:デフォルトの名無しさん
20/11/22 09:27:31.41 7FLAKb9y0.net
一番じゃないと駄目なんですか?

711:デフォルトの名無しさん
20/11/22 13:34:50.51 vJ51qgrt0.net
superPIじゃ駄目なんですか?

712:デフォルトの名無しさん
20/11/25 08:28:57.90 5XzEVJhy0.net
COMインターフェイスをstructに付けてboxing発生させずに使用する方法って皆無でしょうか?

713:デフォルトの名無しさん
20/11/28 16:25:59.35 Msb6oswN0.net
c# プログラマは goto でコロナを拡散してるから、ウィルス作成罪とかで刑務所にぶちこむべき。
もちろん、実質的に goto と同じ if文 、swich case とか使ってるc# プログラマも有罪。
swift や Pythonプログラマは goto 使ってないから無罪。

714:デフォルトの名無しさん
20/11/28 17:07:38.54 goyIH8CW0.net
面白いと思って書いたの?

715:デフォルトの名無しさん
20/11/28 17:18:49.30 qYAW4hVUM.net
705は死刑

716:デフォルトの名無しさん
20/11/28 17:53:33.87 yGy7muY00.net
>>705
Go To Hell

717:デフォルトの名無しさん
20/11/28 17:57:32.34 qYAW4hVUM.net
>>708
このハゲェ!

718:デフォルトの名無しさん
20/11/28 18:38:36.41 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 相当)を
得たいのですが方法がわかりません。
教えていただけませんでしょうか。

719:デフォルトの名無しさん
20/11/28 18:43:14.08 YkgqIE2E0.net
それのどこが分からないのか分からん
あとListはいらなくない?

720:デフォルトの名無しさん
20/11/28 18:54:47.55 v3rIW/CF0.net
>>705
よくわかりません。
C#はgotoを使わずとも実質gotoできるが、
swiftやPythonが実質gotoもできない根拠を示して下さい。

721:デフォルトの名無しさん



722:>2020/11/28(土) 19:14:35.24 ID:pMGwV9fR0.net



723:デフォルトの名無しさん
20/11/28 19:41:10.86 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;

724:デフォルトの名無しさん
20/11/28 20:02:20.04 M3lV8yHm0.net
Sectionの配列を得たいなら>>714にLinqのini.Keys.ToArray()

725:デフォルトの名無しさん
20/11/28 20:33:03.95 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 と同じ程度までできました。

726:デフォルトの名無しさん
20/11/28 21:13:18.17 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;

727:デフォルトの名無しさん
20/11/28 21:20:41.11 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);
}

728:デフォルトの名無しさん
20/11/28 21:27:31.90 M3lV8yHm0.net
そういえばiniは無かった場合の規定値を第3引数に入れておけばいいだけか
それならTryメソッドいらんね

729:デフォルトの名無しさん
20/11/28 23:40:53.47 xlHMBUaz0.net
sectionの一覧が欲しいって言ってるのに、valueを取り出す説明を延々してる奴何なの?

730:デフォルトの名無しさん
20/11/29 00:02:00.65 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#に限った事ではないが、何をしたいのか分かりやすいコードを目指そうな。

731:デフォルトの名無しさん
20/11/29 00:10:23.95 eEpZgXkU0.net
だから質問者が欲しいのはvalueじゃなくてsection一覧だっての

732:デフォルトの名無しさん
20/11/29 06:31:38.45 kNuJF9Ar0.net
datagridviewにユーザーコントロールを埋め込みたいんですけどどうすればいいですか?
windowsformアプリです
ていうかdatagridviewじゃなくてもユーザーコントロールをリストで表示できれば何でもいいです
どなたか教えて下さい

733:デフォルトの名無しさん
20/11/29 08:16:40.50 +pk7xniq0.net
>>723
TableLayoutPanel とか FlowLayoutPanel はどう?

734:デフォルトの名無しさん
20/11/29 08:16:40.50 +pk7xniq0.net
>>723
TableLayoutPanel とか FlowLayoutPanel はどう?

735:デフォルトの名無しさん
20/11/29 09:35:53.03 yrxBBFH+0.net
>>720
それは一番上に書いたんだが

736:デフォルトの名無しさん
20/11/29 09:40:01.71 yrxBBFH+0.net
>>721
section取り出す説明は昨日一番最初のレスで書いたからもう脱線して話すけどなんでここまでTryGet使わない奴って多いんだろうな
どうせ後々インデクサアクセスするならTryGetValueの方がよっぽど分かりやすいと思うんだが

737:デフォルトの名無しさん
20/11/29 12:22:24.94 kNuJF9Ar0.net
>>724
ありがとうございます
試してみます

738:デフォルトの名無しさん
20/11/29 17:19:06.82 b9LXd7l70.net
>>723
DataGridViewCellとDataGridViewColumnを継承して自作

739:デフォルトの名無しさん
20/11/29 17:32:18.08 MpNpLm4W0.net
>>727
ConstainsKey → []は、まずContainsKeyの内部でFindEntry走らせて存在確認し、存在したらインデクサアクセスして再度内部でFindEntry走らせて取り出すという2度手間してるIQ低いコード
TryGetValueは存在確認時にFindEntryしたついでに値も取り出すというスマートな関数
そもそも前者で済むならTryGetValueは存在意義ないから、上記の仕組みを想像できずとも「なんでTryGetValueってあるんだろう?」と疑問に思わなければいけない
ま、C#は多様性受け入れてる言語だから個人開発なら好きに書いたらいいが

740:デフォルトの名無しさん
20/11/29 18:14:07.88 o/YPVzQP0.net
そういう値をローカル変数に代入するのを無駄と言い張って勝手にワンライナーに書き直すような地雷プログラマの振りをするのはやめろよ……初心者が本気にしたらどうするんだよ

741:デフォルトの名無しさん
20/11/29 18:23:09.50 MpNpLm4W0.net
>>731
今の話でローカル変数やワンライナーが出てくる余地あるか?

742:デフォルトの名無しさん
20/11/29 18:52:20.22 o/YPVzQP0.net
>>732
明確にガード節で判定が切り分けられているのに、
「TryGetValueなら判定と取得を同時に行える」と言い出すのはまさしくワンライナー君の物言いだぞ
ifをあえて二つ用意してContainsKeyを使ってる時点で
「ははーん、論理重視のコーディングスタイルか」と察してやるのが有能なプログラマってもんだ

743:デフォルトの名無しさん
20/11/29 18:58:47.11 MpNpLm4W0.net
>>733
???
2連続で全く不必要に同じ処理を挟むような奴がとても論理重視とは思えないんだが、ContainsKey + []とTryGetValueじゃ2倍以上パフォーマンス変わってくるって知ってる?
さっきも言ったけどContainsKeyでも内部的にFindEntryが走り、インデクサアクセスでも再度FindEntryが走るという無駄がある
再度言うがMSがなんでTryGetValueというメソッドを公式でわざわざ用意したかって疑問に思わない?
簡潔さ全振りならそもそもLinq使えばいい話

744:デフォルトの名無しさん
20/11/29 19:01:28.82 tRrXGfded.net
メソッドの戻り値を一回判定するだけなら
一行で書かないほうが変じゃね?
それをわざわざ一旦保存とか逆になんの意図があるのかと
たまにはデバッグやらログで出したいからと言うのはあるがそれは2回利用に当たるから入れて当然やしな

745:デフォルトの名無しさん
20/11/29 19:41:11.64 o/YPVzQP0.net
>>734
久々にふふってなった
まるで昨日の俺を見ているようだ……お前にもいつか悟れる日が来ると良いな

746:デフォルトの名無しさん
20/11/29 20:16:26.39 EVjNfLc/0.net
判定と取得を行いたいんじゃなくて取得を行いたい
なのに判定しないとプログラム上まずいことになるので判定機能付きの取得メソッドを使う
読む上でわざわざ判定と取得を別に書いてるならそこにあえての理由があるんだろうな、と推測しないといけない
今回のケースならあえてのケースなど無いので可読性を下げる要因でしか無い

747:デフォルトの名無しさん
20/11/29 20:17:12.32 3Ka2HmX40.net
>>736
きみ中学生?
男?女?どこ住み?

748:デフォルトの名無しさん
20/11/29 20:28:09.84 HJnVnweF0.net
>>736
それは廓然大悟かね?

749:デフォルトの名無しさん
20/11/29 20:31:48.44 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;

750:デフォルトの名無しさん
20/11/29 20:43:57.67 yrxBBFH+0.net
一応言っておくけどここでは713や720に合わせて書いてるだけで実際には1行で書いたりこんなに複数retは使わない
returnは一つにしろというレビューは受けたことあるんでな

751:デフォルトの名無しさん
20/11/29 20:51:31.28 3Ka2HmX40.net
>>740
普通に英語として下の方が直感的に分かる
上だと今ですら非直感的な上に変数名によっては更に分かりづらくなる可能性をはらんでる

752:デフォルトの名無しさん
20/11/29 20:54:18.24 YUoXGIHl0.net
>>720
TryGetValue()知ってるオレカッケー
って言うおこちゃまだろw

753:デフォルトの名無しさん
20/11/29 20:56:55.50 EVjNfLc/0.net
無理に一行にするな、が通るならreturnを1つにしなくていいのでは?
数十行あるメソッドのいろんな箇所でreturnしてると気持ち悪いと思うが、こういうタイプなら複数returnで良い
可読性が個人レベルなのはそのとおり
文字の並びが似通っている、ではなくどういう機能を呼んでいるか?という意味
判定付き取得メソッドが標準で用意され、しかもメジャーな内容でパフォーマンスも良い
それでもあえてそれを呼ばないのは特殊な事情があるのでは?と読み手の思考を止めることにつながるという意味

754:デフォルトの名無しさん
20/11/29 21:06:40.39 o/YPVzQP0.net
>>740
上のコードを採用する理由は何の値を戻しているか即座に分かるところ、と俺は判断した
return ini[section][key];
この一文で読解に要する数秒を削る為だけに2倍程度のパフォーマンスを許容するのは普通にありだよ

755:デフォルトの名無しさん
20/11/29 21:23:27.82 EVjNfLc/0.net
メソッド名見りゃそれはわかんじゃん
return文にそういう責務を与える意味は?
どうしても必要というならコメントでも書いとけば良い

756:デフォルトの名無しさん
20/11/29 21:36:16.22 yrxBBFH+0.net
>>744
returnについては可読性に関わる納得できた理由はちゃんとあるんだが自分やチームが使わないというだけで別にうちのコーディング規約を議題に上げるつもりはない(ツッコんでくる人いそうだったから一応書いただけ)
まぁもう好きにしたらええんやない
C#メインで使っていきたいなら言語として用意されてるものは出来る限り利用すべきと思うけど
そこまで学習コスト払いたくないってことなら一つの方法を出来る限り使いまわすというのも利に適ってるしな

757:デフォルトの名無しさん
20/11/29 21:49:34.68 EVjNfLc/0.net
チーム内でのローカルルールがどうなってるかはどうでも良いんですよ
そのチームで合意が取れてるならなんの問題もない
ローカルルールを隠した状態で突っ込まれてローカルルールなんです!って言われても知るかよ、という感想しか出ない
ローカルなものでないなら、基本的には標準に準拠すべきで標準がわざわざtryメソッドを回避している書き方をしていない限り公の場でもそれに準じたほうが良いのでは?というだけ

758:デフォルトの名無しさん
20/11/29 21:53:07.17 yrxBBFH+0.net
>>748
いやだからTryGetValueに関してはそれが標準だろっていうのが一貫した俺の意見であってローカルルールなのは>>741で書いた事
実際にギブハブなんかで数多くのプロジェクト参考にしてきたけどLinqで手っ取り早く書く事は多くてもTryGetValueを使わずにContainsとインデクサとかいう非効率な方法採用してる人なんて見た記憶ないしな

759:デフォルトの名無しさん
20/11/29 21:58:49.11 EVjNfLc/0.net
>>749
なんで突っかかってくるかわからんけど747の前半は複数retの話、後半はtryの話
わざわざローカルの話である複数retのことなんざ話題に上げんで良いよ、try使うのが標準なんだからそれに習ったほうがよくね、
後半は君と同意見なんだよ

760:デフォルトの名無しさん
20/11/29 22:01:07.98 yrxBBFH+0.net
>>750
捕捉程度のノリで書いた事に異様に突っ込んでくるなと思ってビックリしたんでね
それも議題に上げたいのであれば>>740でそういう書き方してるから

761:デフォルトの名無しさん
20/11/29 22:11:12.12 EVjNfLc/0.net
>>751
前提として標準に準拠したほうが良いよね、という主張がある
標準では複数retなんて当たり前に使ってる
それをなぜか否定しているので突っ込んだらローカルルールだ!と言われる
そういうローカルルールがあるのは構わんが、それならそう明記しなきゃ標準に準拠しようという主張とズレてブレブレなだけでは?
まさかレビューを受けたことがある、がうちにはそういうコーディング規約があるんです、の意味だったの?

762:デフォルトの名無しさん
20/11/29 22:16:38.50 yrxBBFH+0.net
>>752
だから本気で否定したいなら739でもそうやって書いてるって言ってるやん
740で書いたのは「沢山return書いてる時点で可読性低い」みたいなツッコミが入るかなーと予測して"一応"と前置きして書いたと言っただろ
そこを議論するつもりはないと書いたのに異様に拘るんだな

763:デフォルトの名無しさん
20/11/29 22:22:25.03 kxXRvhGP0.net
複数リターン禁止www

764:デフォルトの名無しさん
20/11/29 22:22:55.87 o/YPVzQP0.net
>>749
正直俺も見たことないが、>>721が書いてるんだからいるところにはいるんだろ
肝心なのはそいつが何を思ってそういうスタイルにしたのか察して評価してやることで、
>>730みたいに重箱の隅突いて喜ぶのはただの地雷コーダーだからやめるべきだよ
例えば誰かが「ギブハブ」とか言ってても、わざわざ「ギブハブってなんだよバカかよ」と噛み付く必要はないだろ?
GitHubなのは分かるし話は通じてるんだからこいつの中ではこうなのかと納得して「ほーん、ギブハブがどうした?」と聞き返すのが有能なんだよ

765:デフォルトの名無しさん
20/11/29 22:26:49.20 EVjNfLc/0.net
>>753
意味がわからんけど補足がなけりゃツッコミなんてなかったんだよw
こだわってるのはそっちでしょwこっちはそうですか、という感想しか無いよって言ってるやんw

766:デフォルトの名無しさん
20/11/29 22:38:58.86 5TTB8+bC0.net
チャゲアスASUKAのギフハブに監視されてるネタに掛けてGitHubをギフハブと呼ぶのは5chの標準語だと俺も思ってたがそこまで浸透してないのか

767:デフォルトの名無しさん
20/11/29 22:42:09.42 T9vV3uABa.net
なんとも不思議な世界があるんだなあ・・・・
TryGetValueを使うのが今どきの常識的なコーディングだと思ってた自分としては
老害(あるいは悪意があって不適切なコーディングを押し付けようとしてる人)が世迷言をほざいてるだけにしか見えないや

768:デフォルトの名無しさん
20/11/29 22:53:33.81 yrxBBFH+0.net
>>755
その理屈で行くとコードレビューなんて出来なくなるな
(これ明らかに意味のない文だけど何かスピリチュアル的な深い意味があるのだろうか…?配慮して指摘すべきではないか…?)なんて一々考察しなきゃいけないのかよ

769:デフォルトの名無しさん
20/11/29 23:00:13.09 YUoXGIHl0.net
了解

770:デフォルトの名無しさん
20/11/29 23:03:55.81 YUoXGIHl0.net
>>754
MISRAにもあるし高信頼性を要求される場面ではそれなりにありがちな話だよ

771:デフォルトの名無しさん
20/11/29 23:14:22.90 iy3zNsHi0.net
>>759
レビュー受けてるような新人はそんなこと考えなくていいと思うよ
多次元辞書でアクセスそのまま返す利点が分からないならまだお勉強段階なんだから、そういうやり方もあると素直に学んでおけば良い
とりあえずチューニングはベテランがもっと後でやる仕事だから、パフォーマンスがーとか言い出すのは十年早い

772:デフォルトの名無しさん
20/11/29 23:30:20.42 yrxBBFH+0.net
そう主張するのであれば具体的な利点を述べろよ
TryGetValue派は俺以外にもメリット述べてる奴いるけどContainsKey派は「そのほうが見やすい」程度の個人の感想以上は出てきてない
勿論それもメリットではあるがTryGetValueの方が見やすいと言う人もいるのでそこでは差は付かない

773:デフォルトの名無しさん
20/11/29 23:51:14.64 kxXRvhGP0.net
>>761
ねーよ

774:デフォルトの名無しさん
20/11/29 23:59:15.56 AAs5LLYH0.net
宗教論争オモロイなw

775:デフォルトの名無しさん
20/11/30 00:00:33.52 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]
とりあえず値の取得を比較した場合こうなる
非常に馬鹿げたコードだが後者の方が察しやすくバグりにくいのは分かるはず
これは分岐を差し込んでも同じこと
こんなコードは現実にあり得ないから無効と言い張るなら、所詮はその程度のレベルなんだから黙るべき

776:デフォルトの名無しさん
20/11/30 00:20:59.97 9x2/PpIx0.net
TryGetValue vs ContainsKey+[]の争いでしょ?
なら下はちゃんと一つ一つにContainsKey挟むべき
そして後者の方がバグりにくい理由が全く分からない。まず何のバグを対象としているのか明確に

777:デフォルトの名無しさん
20/11/30 00:25:39.57 G1P0/YpK0.net
レビューを受けるのが新人とか言ってる時点でまともじゃないでしょ
いつの時代のエンジニア思想よw

778:デフォルトの名無しさん
20/11/30 00:26:29.87 E5czHbG2a.net
なんというかb7e4-nc77みたいなのがレビュアーやったら地獄だな
自分が新人だったらたまったもんじゃない

779:デフォルトの名無しさん
20/11/30 00:36:41.15 EEdVS6ls0.net
>>767
お前さんプログラマ向いてないから転職した方が良いよ、マジで
ちゃんと理屈で教えられたことを受け付けないとか先が無さすぎる

780:デフォルトの名無しさん
20/11/30 00:39:46.85 qXuQLmTVa.net
どうせ過疎スレだからスレ消費するのは問題ないと思うけど
あまりに下らな過ぎる論争で萎えるねw
よく読んでないので素っ頓狂なこと言ってるかもしれないけど、
iniファイルぐらいなら馬鹿正直にDictionaryをネストなんかしなくても
section+keyをキーにして平坦化しても良いような気もする

781:デフォルトの名無しさん
20/11/30 00:45:42.05 9x2/PpIx0.net
>>770
答えられないんだね

782:デフォルトの名無しさん
20/11/30 01:29:55.64 a85534SW0.net
ini parserの中身を見たらContainsKey + インデクサだった
URLリンク(github.com)
自分なら使う側のコードがシンプルになるようにini[section][key]かini[section]?[key]の形で
sectionかkeyがnullならnullを返すようにDictionaryを少し拡張するかな

783:デフォルトの名無しさん
20/11/30 05:30:56.15 lgcZd+iw0.net
>>764
お前がそういう世界を知らんだけ

784:デフォルトの名無しさん
20/11/30 08:23:44.56 gN60+pZv0.net
相変わらず質問者無視で議論してるのウケる
テンプレ読めない人多すぎでしょw

785:デフォルトの名無しさん
20/11/30 08:57:23.41 8S8hZPx60.net
>>771
そもそもini直接操作するならWin32APIにセクション名とキー名と無かった場合の規定値を突っ込むだけで良いからDictionaryすらも何もいらない
pascalにはMemIniみたいな基本はファイルには書き込まないクラスがあるからそれを実装しようと思ったらDictionaryがベストなんじゃない
>>775
section一覧を返す方法は一昨日の一番最初のレスでしたって昨日言ったはずだが無視してるのはお前の方だろ

786:デフォルトの名無しさん
20/11/30 09:04:32.51 8S8hZPx60.net
>>773
そのプロジェクト見た感じTryGetValueを一度も使ってないから恐らくJavaか何か出身で存在知らないんだろうな
ContainsKeyは割と色んな言語にあるからこっちの方が認知度高いのは間違いない
なので昨日も言ったが一々C#に学習コスト払いたくないって人もいるだろうからそういう場合は好きにしたらいい

787:デフォルトの名無しさん
20/11/30 10:07:26.68 3MSQwEh40.net
>>776
テンプレ読めよ
「議論」するなと言っているんだが

788:デフォルトの名無しさん
20/11/30 10:12:11.16 I8/NWgIp0.net
テンプレ読めないって事はレスも読めないんだから言っても無駄
粛々とNG

789:デフォルトの名無しさん
20/11/30 10:29:32.82 lgcZd+iw0.net
>>766-767
まあここまで極端な例なら
try {
var value = dic[a][b][c][d][e];
} catch(){
}
ってやる事を検討してもいいかも

790:デフォルトの名無しさん
20/11/30 10:45:42.20 0LXXOsdO0.net
>>777
お、ようやく自分の間違いを認めたか
まあContainsKeyの方が可読性高いのは当たり前なんだが
762 名前:デフォルトの名無しさん (ワッチョイ 9f24-GtYN) [sage] :2020/11/29(日) 23:30:20.42 ID:yrxBBFH+0
そう主張するのであれば具体的な利点を述べろよ
TryGetValue派は俺以外にもメリット述べてる奴いるけどContainsKey派は「そのほうが見やすい」程度の個人の感想以上は出てきてない
勿論それもメリットではあるがTryGetValueの方が見やすいと言う人もいるのでそこでは差は付かない

791:デフォルトの名無しさん
20/11/30 11:16:43.36 o8riI3080.net
>>781
可読性と認知度は全然違う意味だと思うけど、っていうのは置いといて
>>733とか>>766とかさすがに釣りでしょって思わせるレスがちらほらあるから、喧嘩両成敗はちょっと可哀想な流れ

792:デフォルトの名無しさん
20/11/30 11:55:30.78 tpJ2df0N0.net
>>774
ちょっとはググれよ

793:デフォルトの名無しさん
20/11/30 11:58:06.51 UK/ABAdxa.net
認知度と可読性が別物か
職場で宇宙人って呼ばれてそう

794:デフォルトの名無しさん
20/11/30 12:11:19.73 zbjAWIZjd.net
>>780
これでええやん
例外が重い?知るかよ

795:デフォルトの名無しさん
20/11/30 12:13:44.19 lgcZd+iw0.net
>>783
> ちょっとはググれよ
ブーメラン過ぎる、ってかググっても悪魔の証明はできないぞw

796:デフォルトの名無しさん
20/11/30 12:15:09.00 0LXXOsdO0.net
TryGetValueを使うことに拘りすぎててアスペ臭しか感じない
好きにしろと言いながら必死で反論してんのが特にな
多様性を許容するっていうのは>>755みたいなスタンスなんだよ
ここまで言われて「何言ってんのか分かんない」と騒ぎ続けるのは感情で理解を拒んでるだけの地雷君
「そういうの嫌われるからやめよ?」って指摘されてるのに「なんで? 俺が正しいじゃん?」って返すのは馬鹿を通り越した何かだわ

797:デフォルトの名無しさん
20/11/30 12:26:00.27 tnWbc17e0.net
こういうレスちんぽバトルやめねぇ?

798:デフォルトの名無しさん
20/11/30 12:51:21.50 tpJ2df0N0.net
>>786
MISRAって名前まで分かってるのに?

799:デフォルトの名無しさん
20/11/30 12:52:22.17 PPubPKASd.net
いまだに複数リターン禁止なんて言ってる時代錯誤なやつがいるのかよ…

800:デフォルトの名無しさん
20/11/30 14:08:46.39 lgcZd+iw0.net
>>789
???
ないことの証明だよ?
悪魔の証明って知らんの?

801:デフォルトの名無しさん
20/11/30 14:09:59.63 lgcZd+iw0.net
>>790
だからお前等の知らない世界があるって話
まあC++とかC#だと例外とか使えるからだいぶ緩和されるけど

802:デフォルトの名無しさん
20/11/30 14:11:44.42 tpJ2df0N0.net
>>791
まずはあることを示してから

803:デフォルトの名無しさん
20/11/30 14:31:16.69 zbjAWIZjd.net
>>792
アセンブラ以外でFalseは即リターンなんてベストプラクティスやん
if elseとか基本ダサいんだよね

804:デフォルトの名無しさん
20/11/30 15:11:50.10 lgcZd+iw0.net
>>793
それこそ misra multiple return とかでググればいくらでも出てくるだろw
URLリンク(www.viva64.com)
>>794
だからそう言うのが非推奨な現場があるというだけの事
個人的には関数の頭でのエラーチェックでエラーだったら即リターンとかよくやってる

805:デフォルトの名無しさん
20/11/30 15:27:06.61 tpJ2df0N0.net
>>795
それのどこがC#なんだ?

806:デフォルトの名無しさん
20/11/30 16:36:59.20 r8rQ87Qr0.net
関数の出口が、複数ある奴か。
危険だから、MISRA-C の禁止事項
一方、Linux では関数の冒頭で、処理しない場合は、即リターンするとかやってる。
関数の出口に、goto で例外処理をまとめたりとか
MISRA-Cを守らない場合は、逸脱手続きが必要。
トヨタなどは、MISRA-Cで、4/100 しか点数を取れなかったとか聞いたw
MISRA-C研究会にも、トヨタのベテランが加入してるのに

807:デフォルトの名無しさん
20/11/30 16:46:43.31 dO4rlTbV0.net
俺社環だけど、これ指摘したらそれは例外処理や自動メモリ管理がないCであって、C#ではそこまで気にする必要ないんじゃね?で終わったな

808:デフォルトの名無しさん
20/11/30 16:53:06.40 r8rQ87Qr0.net
辞書のキーが存


809:在しないのは、例外じゃない。 最初から想定内の事で、予想がつくから 例外はファイルが存在しないとか Go では例外を嫌って、複数の戻り値で、エラー値を返す



810:796
20/11/30 16:56:08.66 r8rQ87Qr0.net
漏れは、戻り値を変数に入れておいて、return は1つだけにしてる
if 条件
result = 1
else
result = 2
end
return result

811:デフォルトの名無しさん
20/11/30 17:07:26.72 pPofn0IB0.net
うっかりミスってreturnし忘れてもIDEが警告してくれるから、分岐それぞれでreturnするほうが好き

812:デフォルトの名無しさん
20/11/30 17:08:29.73 8S8hZPx60.net
複数returnとかワンライナーとかはそれこそ正解の無い事だから各々好きにしてくれよ
TryGetValueとContainskey+インデクサは正解があると思ってるからこっちはつい反論し続けてしまったが

813:デフォルトの名無しさん
20/11/30 17:11:06.92 DAJE5R+zd.net
なぜこのスレはテンプレを見る限り質問スレなのにスレタイにそれを示唆する文言が入っていないのですか?

814:デフォルトの名無しさん
20/11/30 17:15:26.09 3PLmCTmV0.net
ヌルチェックやりはじめてから一刻も早くreturnすることを考えて書くようになった
階層が深くならないので見やすいし、上の部分だけである条件にあてはまった処理が完結してるので読みやすい

815:デフォルトの名無しさん
20/11/30 17:24:24.88 tpJ2df0N0.net
>>798
ね、Cですら"推奨"なのに

816:デフォルトの名無しさん
20/11/30 18:17:44.47 a85534SW0.net
>>797
>危険だから、MISRA-C の禁止事項
Mandatory, Required, Advisoryの3段階のうちAdvisoryなので禁止事項ではないね

817:デフォルトの名無しさん
20/11/30 18:30:53.38 n+7nNLssM.net
>>801
さすがにMISRAとかが言ってるのはそう言う低レベルな話じゃなくて途中脱出でのリソース開放漏れとかを心配してる
なのでC#なら例外とかusingとかを適切に使えばそれほど問題にならない
クラス継承させた時のIDisposeのコーディングが面倒なのがたまにキズだけど

818:デフォルトの名無しさん
20/11/30 18:52:25.38 +JMSCADPD.net
議論は然るべきスレでどうぞ
ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
スレリンク(tech板)

819:デフォルトの名無しさん
20/11/30 19:48:14.13 xZxi3SwM0.net
>>806
またRuby君がいい加減な知識で嘘を垂れ流そうとしてたわけか

820:デフォルトの名無しさん
20/11/30 21:11:19.50 X4ikUZ5gM.net
いい加減なのは知識じゃなくて遺伝子じゃねえのか
欠陥品なんだから

821:デフォルトの名無しさん
20/11/30 21:11:29.21 a85534SW0.net
少し調べてみたけどMISRAがsingle returnを推奨する根拠に上げてるIEC 61508には
”subprograms should have a single entry and a single exit only;”と書かれているだけ
そこに参考文献としてヨードン/コンスタンティンの「ソフトウェアの構造化設計法」を上げてるが
ヨードンやダイクストラが提唱したsingle exitは時代的にも意味が違うのでルール自体の根拠が薄い
URLリンク(softwareengineering.stackexchange.com)
1993年出版のCode Completeでも今回のようなケースはmultiple returnが推奨されてるくらいなので
single returnはリソースクリーンアップが必要だけど
他の方法がどうしても取れないような特殊なケースでしか意味がないと思って良さそう

822:デフォルトの名無しさん
20/11/30 21:15:38.40 tnWbc17e0.net
どうでもよくねw

823:796
20/11/30 21:56:17.24 r8rQ87Qr0.net
Cプログラミングの落とし穴
C Traps and Pitfalls, Andrew Koenig, 1989
ここから、Lint, MISRA-C などが出来た

824:デフォルトの名無しさん
20/11/30 22:27:10.33 n5+DCEBK0.net
c#スレなんですがそれは

825:デフォルトの名無しさん
20/12/01 11:25:23.55 ZwYRJuoF0.net
C#とはC++++、つまりCとC++を継承した言語である
よってC#スレにおいてCとC++は範囲内
悔しかったら言語名を変えることだな

826:デフォルトの名無しさん
20/12/01 11:27:04.96 vLuBExG+d.net
キチガイ

827:デフォルトの名無しさん
20/12/01 11:45:19.44 K5BMxGNOM.net
似た話でelseを省略するな派もたまにいるけど、元はCOBOLの文法ではelse書かないとブロックの区切りが分かりにくいかららしいね

828:デフォルトの名無しさん
20/12/01 12:14:20.95 k3h/30i7a.net
そんな流派の人に会ったことないけど、意図はたぶん古典的なぶら下がり問題対策だろうね
俺はこんなミスしたことないしIDEの時代には杞憂だと思うけど
if (true)
  if (false) {}
else Console.WriteLine("来ないはず");

829:デフォルトの名無しさん
20/12/01 14:56:29.62 6hEFZljjM.net
elseを省略しちゃダメって言うのは俺も見たことないな
>>818みたいなのを避けるために { } を省略しちゃダメって言うのは見かけるけど

830:デフォルトの名無しさん
20/12/02 00:57:12.14 +AssLSaA0.net
最近久しぶりに起動したらVSのテキストエディタの「自動メンバー表示」の項目ををカーソルキーで動かすのがとんでもなく重いんだけど俺環?

831:デフォルトの名無しさん
20/12/02 01:47:00.65 HjUyDubp0.net
Dispose()しないといけない条件がいまいち分からないんですが、
コンポジションとして参照を保持しているメンバーがDispose()メソッドを持ってたら、Dispose()を実装しないといけない、ていう理解でいいんでしょうか?

832:デフォルトの名無しさん
20/12/02 10:14:54.41 ebqkblVHH.net
>>821
たとえばファイルを開いて中身を書き換える処理をFileStreamでするじゃん
開いてる間は他の人やプログラムがそのファイルを使えない状況になるから
使い終わったらちゃんとDisposeで閉じましょうねって事

833:デフォルトの名無しさん
20/12/02 12:15:24.35 q6qthHEM0.net
画像とかメモリ消費量が多いオブジェクトに対して、使い終わったらちゃんとDisposeで破棄しましょうねって事

834:デフォルトの名無しさん
20/12/02 12:32:26.40 /5AdVnEZ0.net
>>821
基本はYes
内部でそのメンバをDisposeする仕組みが他にあるなら別に実装しなくても良いが、とは言えIDisposableを実装しておけばそのラップクラスでもusingステートメント使えるから分かりやすいしね
IDisposableはコードでDisposeせずともGCによる破棄タイミングでDisposeしてくれるから最悪し忘れても大丈夫だが(GCによるオートDisposeはパフォーマンスが悪いので出来れば避けるべきだが)

835:デフォルトの名無しさん
20/12/02 12:51:23.41 VuN4nxV5M.net
>>821
そうとは限らない
たとえば外部のAPIを使っていて、使い終わったら必ずある処理を最後に呼ばなければならないという決まりがある場合
たとえばある一連の処理の間は一時ファイルを作り、最後に消す必要がある場合
そういったユースケースをクラスにするならDisposeを実装することになるだろうな
Disposeってのはつまり、最後に特定の処理を必ず呼ばなければならないという規約に他ならない

836:デフォルトの名無しさん
20/12/02 18:14:26.77 w77bbFvMa.net
>>821
エンジニアは教条主義的に考えてはいけない。
何も難しくない。
オブジェクトが自分のメンバー(フィールドかプロパティ)のDisposeを呼ぶべきタイミングを
自分で判断できるならわざわざDisposeを実装して他人にそれを任せる必要はない。
できないならDisposeを晒して他人にお願いする。
それだけでしょ。
でも「Disposeを呼ぶべきタイミングを自分で判断できる」のはメソッド呼び出しが
完了した後も別のスレッドで動作を続けるタイプのオブジェクトだけなので
そうは多くないはずだよね。

837:デフォルトの名無しさん
20/12/02 19:47:17.83 o81q9kO+D.net
>>1
> なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#, C♯, C#相談室 Part94
スレリンク(tech板)
ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
スレリンク(tech板)
テンプレも読めない奴らがする議論は、
もはや議論ではなくマウンティング合戦

838:デフォルトの名無しさん
20/12/02 20:41:49.29 w77bbFvMa.net
>>827
君がやってるのもそのマウンティング合戦のうちなのは自覚して欲しいよねw
もはや5ch全体がそうだけど特にここは過疎スレなわけで、そんな目くじら立てることないと思うよ
誰か困る奴いるの?w
誰もいないって。

839:デフォルトの名無しさん
20/12/02 21:21:31.32 hwkqsjy70.net
過疎スレでもルールは守れよ

840:デフォルトの名無しさん
20/12/02 21:58:13.02 4huF2MSH0.net
マウンティング合戦なんか起こってたら
初心者が尻込みして書き込むのをやめてしまったりするわな

841:デフォルトの名無しさん
20/12/03 00:08:24.38 AfLSjnCy0.net
winformでwebview2を使ってるんですけどcookieをセットする方法がわからなくて困ってます
どなたかわかる方教えて下さい

842:820
20/12/03 02:05:41.69 plL1xX/c0.net
みなさんありがとうございます。
そして何かすみませんでした。

843:デフォルトの名無しさん
20/12/03 06:58:36.35 HwhU8QlY0.net
>>832
絶対に許さねぇからな
末代まで祝ってやるから覚悟しろよ

844:デフォルトの名無しさん
20/12/03 07:07:12.64 UmUyqAch0.net
今更訊きづらいけどgoto文のラベルの命名ルールって
     goto maki;
hirohisa:
     System.Console.WriteLine("誰だよ");
     goto hell;
maki:
     System.Console.WriteLine("知ってる");
     goto hirohisa;
hell:
     System.Console.WriteLine("そうだな");
こんなんでいいの?

845:デフォルトの名無しさん
20/12/03 09:22:44.20 Mqqeu2dm0.net
>>831
webView2.CoreWebView2.CookieManagerはどう?

846:デフォルトの名無しさん
20/12/03 16:26:09.15 UmUyqAch0.net
webview2とCEFSharpのどっちがいいのか

847:デフォルトの名無しさん
20/12/04 01:59:10.27 /XRPGQMq0.net
IDisposable obj = otherObj;
using(obj){
obj = anotherObj;
}

848:デフォルトの名無しさん
20/12/04 03:16:37.86 yDsXPkFS0.net
>>837
これビルド通るの?
>オブジェクトは、using ブロック内では読み取り専用です。変更したり再割り当てしたりすることはできません。

849:デフォルトの名無しさん
20/12/04 16:12:00.25 ZsgfFad40.net
nugetからインストールしたライブラリですが
別のパソコンから同じプロジェクトを開けるとusing句がエラーになってしまい
ライブラリを一度アンインストール→インストールし直さなくてはなりません
複数のパソコンで同一プロジェクトを編集するときnugetは使えないのでしょうか

850:デフォルトの名無しさん
20/12/04 16:16:23.76 0hbyHhKrd.net
nugetの修復みたいなことすれば足りないもの探して再DLしてくれるよ

851:デフォルトの名無しさん
20/12/04 16:31:08.42 e5C89TYX0.net
”別のパソコンから”ってもしかしてネットワーク共有して直接開いてるの?

852:デフォルトの名無しさん
20/12/04 16:55:03.48 ot5BaqCCa.net
>>839
COMじゃないならライブラリのアセンブリをプロジェクトのフォルダ内に置いて
それを参照すれば一応できるんじゃないの?
やったことないから知らんけど

853:デフォルトの名無しさん
20/12/04 16:55:13.19 edWfS5jb0.net
>>839
nugetのライブラリって各PCっていうかVS毎に管理しているから、ソースを別の場所に
持っていったらその環境で指定されているライブラリを拾わないとダメなんじゃ
なかったっけ?
>>840が言ってるみたいなことがnugetの管理ツールだかメニューにあったような

854:デフォルトの名無しさん
20/12/04 17:04:36.37 ZLeuk8KN0.net
>>839
チキンマックナゲットは
セールのときは5個入り200円だから
そのときに買うのがベストだと思うよ。

855:デフォルトの名無しさん
20/12/04 17:05:31.23 ZLeuk8KN0.net
ソースは必ずバーベキューを。
バーベキュー以外は糞まずくハズレ。

856:デフォルトの名無しさん
20/12/04 17:25:30.91 0hbyHhKrd.net
CIでビルドするとき、確実にnugetの修復が必要になるから構築したことあるならわかるはず
コマンドラインからnugetにsln渡してやればDLしてくれる
つうかオンラインからいつでも好きなversionを落としてこれるのがnuget等ライブラリ管理ソフトの強みなんだからプロジェクト内にファイルなんて置いたらメリットが減る
外部ライブラリを編集しないのにバージョン管理下においてプロジェクトを肥大化させる意味がない

857:デフォルトの名無しさん
20/12/04 17:50:19.19 EWRKs4L00.net
Nugetってmpnと比べて
なんでなんなにトラブルの?

858:デフォルトの名無しさん
20/12/04 17:56:44.09 vwTMj3ZS0.net
mpn…なんな…?

859:デフォルトの名無しさん
20/12/04 18:37:31.14 4RJVpdFOr.net
わりっ!

860:デフォルトの名無しさん
20/12/04 18:50:13.35 V5csDP6P0.net
dotnet restoreすればいいけどdotnet buildとかやれば勝手にやってくれる

861:デフォルトの名無しさん
20/12/04 18:57:48.00 L60rBM570.net
>>838
適当なクラスに置き換え�


862:スらビルドできますよ。



863:デフォルトの名無しさん
20/12/04 22:05:08.94 9AUT9QCq0.net
新潟から週2回東京に出勤、サイボウズの複業採用社員に聞く複業ライフのリアル。
URLリンク(www.businessinsider.jp)
兼業でフリーライター、サイボウズ社員・明石悠佳に学ぶパラレルワーク術
URLリンク(www.wwdjapan.com)
「複業を解禁しなければ人も企業も成長しない」複業全面OKのサイボウズ社長と実践社員の本音対談
URLリンク(www.businessinsider.jp)
育休は最長6年、副業もOK! サイボウズはなぜ「100人100通りの人事制度」を作ったのか
URLリンク(logmi.jp)
超異例「週休4日制」の導入をSMBC日興証券社長が決めた理由
URLリンク(diamond.jp)
週休3日制をさらに進めた週休4日制
URLリンク(www.k-society.com)
採用情報(週休3日制を超えた週休4日制の正社員求人 | 副業OK
URLリンク(www.k-society.com)
2020年4月より「週休3日制」を導入。テックカンパニー化に向け、好循環を生み出すエンジニアリング組織へ
URLリンク(prtimes.jp)

864:デフォルトの名無しさん
20/12/05 09:07:58.88 7mh3qGhb0.net
ライブラリの話ですみません
SevenZipSharpにてSolid圧縮ファイルを[STAThread](FormやWPFのメインスレッド)にてExtractArchiveするとフリーズしてしまうのは私だけでしょうか?
別スレッドやTask化したり、そもそもSTAThreadが使われないConsoleアプリでは同期でも全く正常にSolid圧縮も解凍されるのですが

865:デフォルトの名無しさん
20/12/05 10:37:20.60 kSej4vti0.net
List<List<List<int>>>→List<List<int>>
List<List<int>>→List<int>
にする方法ってLINQでは不可能ですか?
並び順は変えないとします。
for使うしかないですか?

866:デフォルトの名無しさん
20/12/05 10:38:07.01 kSej4vti0.net
後者が
{1,2,4}{3,9,8}→1,2,4,3,9,8って感じ

867:デフォルトの名無しさん
20/12/05 11:00:35.05 DXfBmITDd.net
>>854
var result = iList.SelectMany( i => i )

868:デフォルトの名無しさん
20/12/05 11:12:57.38 +y18mv1b0.net
ぐぐればすぐ見つかるわよ

869:デフォルトの名無しさん
20/12/05 11:31:13.29 CCPlFK06M.net
>>857
なぐるわよ

870:デフォルトの名無しさん
20/12/05 11:42:56.05 kSej4vti0.net
>>856
順番変わりますか?

871:デフォルトの名無しさん
20/12/05 11:52:38.53 qYbtudQ20.net
TOARRAYのADDRANGEだよさっさとしろよグズ

872:デフォルトの名無しさん
20/12/05 12:31:48.70 fwzFFaeU0.net
>>859
多分変わらないけど、やってみて。

873:デフォルトの名無しさん
20/12/05 12:39:27.19 qL2nBB2w0.net
>>853
それは本来1秒とかで終わるはずがいつまで経っても終わらないってこと?
まあUIスレッドでやることじゃないからTask使ってればいいよ

874:デフォルトの名無しさん
20/12/05 13:26:31.39 UBJq3HVh0.net
nlogで入れた.configが読み専になったから、しょうがなくありものを先に置いといてnugetしなおしたらなんとかなった

875:デフォルトの名無しさん
20/12/05 14:02:33.08 cSIoQ91v0.net
>>859
仮に駄目なら自分で拡張メソッド書けばいいだけだよ
数分で書ける程度のもの

876:デフォルトの名無しさん
20/12/05 15:30:56.23 OcFAL7DuM.net
手元では大丈夫でもリリースした先でダメでした、というオチがたのしそう

877:デフォルトの名無しさん
20/12/06 10:13:12.99 a+vxG21/r.net
c#9.0でガラッと変わるので皆さん頑張ってお勉強してください

878:デフォルトの名無しさん
20/12/06 10:18:38.00 a+vxG21/r.net
C#の思想が塗り替えられています

879:デフォルトの名無しさん
20/12/06 10:20:10.96 xxrxxdsn0.net
たとえば?

880:デフォルトの名無しさん
20/12/06 10:26:12.41 a+vxG21/r.net
recordです
他の言語から輸入した超便利機能です

881:デフォルトの名無しさん
20/12/06 11:07:39.97 GAck2gc00.net
recordは便利だけど勉強しなおさなきゃいけないレベルでもない
新しいこといくつか覚えればいいだけ

882:デフォルトの名無しさん
20/12/06 11:11:11.75 HPmVPA7T0.net
expression blocksあたりが来たらC#はC#とは違う別のなにかになりそうな勢いだな

883:デフォルトの名無しさん
20/12/06 11:38:38.75 q4vfNSTS0.net
recordって別にただのstructだろ?
比較の仕方が違うだけで

884:デフォルトの名無しさん
20/12/06 11:42:51.47 bQe6lBYR0.net
参照型のイコールの動作がわかんなかった

885:デフォルトの名無しさん
20/12/06 11:51:20.42 oEu15NIyd.net
>>872
根本的に勘違いしてるぞお前
record はstructじゃねーよ

886:デフォルトの名無しさん
20/12/06 12:22:22.88 3Mg1tJ4o0.net
>>874
KWSK

887:デフォルトの名無しさん
20/12/06 12:41:32.76 GAck2gc00.net
URLリンク(docs.microsoft.com)
レコード型を使用すると、変更できない参照型を .NET で簡単に作成できます。
従来、.NET 型は、参照型 (クラス型と匿名型を含む) と値型 (構造体とタプルを含む) に大別されています。

888:デフォルトの名無しさん
20/12/06 12:56:19.96 E6YSEnmp0.net
つまり、リードオンリーで参照するみたいな感じか?

889:デフォルトの名無しさん
20/12/06 13:08:05.96 e5/goOFG0.net
record自体に動的な参照型は持てない感じ?

890:デフォルトの名無しさん
20/12/06 13:08:42.54 a+vxG21/r.net
多分今後recordを使ってないコードを見るとイライラするようになるでしょう
今すぐにじゃなくてもそのうち確実に
古いコードは全部打ち捨てられるでしょう
ただMVVM命の人には関係ないでしょう

891:デフォルトの名無しさん
20/12/06 13:13:29.20 a+vxG21/r.net
そして普通にprivateを使わなくなる可能性もあります
C#の初期の思想が徐々に塗り替えられ捨てられていきます

892:デフォルトの名無しさん
20/12/06 13:18:25.99 3Mg1tJ4o0.net
既にキマイラだよなぁ

893:デフォルトの名無しさん
20/12/06 13:23:50.76 a+vxG21/r.net
どうせrecordで既存のコード捨てられるから言語ごと最初から作り直したほうが良いかもしれない
最初から作り直せるとしたらデリゲートはなくなるのかどうか
C#+F#のような言語ができたら非常に面白い

894:デフォルトの名無しさん
20/12/06 13:30:56.71 e5/goOFG0.net
作成後に変更できないって言ってるのに比較なんてする必要あるの?
ってのが疑問

895:デフォルトの名無しさん
20/12/06 13:37:19.87 a+vxG21/r.net
Listから特定のインスタンス削りたい場合で位置がわからなければ比較するしかないでしょう

896:デフォルトの名無しさん
20/12/06 13:40:30.34 e5/goOFG0.net
そういうの言語の機能使うのは俺的にNG
doubleのイコール比較は誤差入るのか?

897:デフォルトの名無しさん
20/12/06 14:29:36.48 a+vxG21/r.net
Linq使うにせよなんにせよ比較は使う
初心者以下のレベルの話

898:デフォルトの名無しさん
20/12/06 14:57:26.26 E6YSEnmp0.net
ん?レコードってのは何が嬉しいの?

899:デフォルトの名無しさん
20/12/06 15:11:34.04 3Mg1tJ4o0.net
PASCALとかALGOLにあった奴の
先祖帰りかなぁ?

900:デフォルトの名無しさん
20/12/06 15:15:02.40 wbXowyVSa.net
亡き飼い主の声が聞こえる

901:デフォルトの名無しさん
20/12/06 16:04:31.40 +WMwzRY70.net
変更できない参照型って言うのはそれなりに使えるとは思うがなんでrecordなんて名前なんだ?

902:デフォルトの名無しさん
20/12/06 16:16:48.48 wcxECur/M.net
OCaml由来

903:デフォルトの名無しさん
20/12/06 16:19:27.32 oEu15NIyd.net
>>890
Javaがrecord を採用したから
最初はdataだった

904:デフォルトの名無しさん
20/12/06 16:20:25.26 oEu15NIyd.net
>>875
structにもrecord つけられるようにする対応はC#10.0以降

905:デフォルトの名無しさん
20/12/06 17:02:01.60 3Mg1tJ4o0.net
>>893
THX

906:デフォルトの名無しさん
20/12/06 17:09:37.16 L/mxF/rBa.net
>>876
このスレのレスだけ見てたらそんなの何が嬉しいんだと思ったが、
なるほどそれなりに便利そう
ただ、MSのドキュメントに列挙されてる
- 値ベースの等価比較のためのメソッド
- GetHashCode() のオーバーライド
- コピー メンバーとクローン メンバー
これらが自動実装されるのは確かに嬉しいが、これを実現するために何でイミュータブルにする
必要があるのかいまいちよく分からない

907:デフォルトの名無しさん
20/12/06 17:40:09.94 R+T9okNaa.net
エミュー食べる必要は無いからなあ

908:デフォルトの名無しさん
20/12/06 18:18:00.03 4CZ8QguV0.net
むしろimutableなものが欲しい、からスタートした機能

909:デフォルトの名無しさん
20/12/06 18:29:39.04 ozrCEgJEd.net
普通に作ってる分にはいらんわな

910:デフォルトの名無しさん
20/12/06 18:31:30.50 Cw8pwO+X0.net
変なところで値書き換えるやつがいるから、それを型として禁止したってだけだと思ってた

911:デフォルトの名無しさん
20/12/06 18:43:23.29 e5/goOFG0.net
doubleの比較は何?
また、c#のウンコみたいなイプシロン使って
同値判定してんの?

912:デフォルトの名無しさん
20/12/06 18:49:40.35 Cw8pwO+X0.net
勘違いしてた。わざわざ書いてたいつものコードを書かなくて済むようになるのがメリットか
ところで、「record Person」の例で同姓同名の別人を区別したくなったらどうすればいいのん?

913:デフォルトの名無しさん
20/12/06 18:55:24.02 e5/goOFG0.net
大丈夫だ
それはDNAListが異なるので判別できる

914:デフォルトの名無しさん
20/12/06 19:03:18.97 atqZF9NJ0.net
「Effective 何々」とかによく書いてある、3種の神器だろ
Ruby なら宇宙船演算子、<=> で比較関数を再定義する。
ハッシュ関数を再定義する。
p 関数を再定義する。
こういう謎のようなインスタンスID ではなく、分かりやすい表示を再定義する
class A
end
p a = A.new #=> #<A:0x00000000031c2f98>

915:デフォルトの名無しさん
20/12/06 19:10:34.23 a+vxG21/r.net
recordはプロパティが基本publicになった
今まではprivateで隠蔽されていて外部から変更されなかった
これはカプセル化なんだけどこれがpublicになっただけじゃ意図しない変更をされる場合がある
非常に困る
だいたいのケースでは参照されても変更されなければ問題がないのでイミュータブルにするじゃねーかなと

916:デフォルトの名無しさん
20/12/06 19:16:53.81 4CZ8QguV0.net
だから順番が逆
immutableな型が欲しい→immutableなんだからpublicでok

917:デフォルトの名無しさん
20/12/06 19:18:27.50 a+vxG21/r.net
世の中もイミュータブルが求められていると言うのもその通り
ValueObjectはいったん値を設定したら変えない
値を変えたくなったら新しいValueObjectをnewして挿げ替える

918:デフォルトの名無しさん
20/12/06 19:23:32.30 iGfaGXq00.net
別にrecord = イミューダブルじゃないからね?

919:デフォルトの名無しさん
20/12/06 19:23:45.93 iGfaGXq00.net
イミュータブル

920:デフォルトの名無しさん
20/12/06 19:29:20.15 a+vxG21/r.net
他の簡易な言語などでもデフォルトはprivateじゃなくpublic
イミュータブルかどうかは別としてデフォがpublicが流行り

921:デフォルトの名無しさん
20/12/06 19:48:28.39 a+vxG21/r.net
どちらにせよ
C#は9.0で大変身した

922:デフォルトの名無しさん
20/12/06 19:50:57.76 +WMwzRY70.net
>>901
社員番号とかを追加しときゃいいだろ

923:デフォルトの名無しさん
20/12/06 20:39:59.39 5/KOVLSv0.net
>>901
それはべつにrecordで初めて発生する問題じゃないいな。
識別できる情報が足りないならそれを追加しなきゃならんというだけ。

924:デフォルトの名無しさん
20/12/07 02:42:51.99 FMWF8Lcl0.net
9に限らず今までのversion upはどれも影響度が大きい
8のnullable、7のtuple、6の自動実装プロパティ、5の非同期、4のdynamic、3のlinq
他にもいっぱいあるけど
どれも現状のC#にとって超重要な内容

925:デフォルトの名無しさん
20/12/07 03:27:02.89 1hmL4SHh0.net
10年ぶりにwindowsアプリ作りたいんだけど最近は何で作るのが主流ですか?
まだwinformsだったりする?

926:デフォルトの名無しさん
20/12/07 03:34:00.01 obD3rptW0.net
結局WinFormsかWPF

927:デフォルトの名無しさん
20/12/07 06:24:24.79 AjKIX7D20.net
バージョン9が話題らしいですがc#のバージョンてどこ見りゃわかるの?

928:デフォルトの名無しさん
20/12/07 07:20:40.19 VGjx4xxr0.net
>>916
VS2019なら、ソースの適当なとこに、
#error version
って書いて、versionにマウスカーソル合わせると表示される。
あと、9かそうでないかの判断だけなら、setの代わりにinit使ったプロパティが認識されるなら9。
int Hage{get; init;}

929:デフォルトの名無しさん
20/12/07 07:27:50.50 AjKIX7D20.net
>>917
ありがたう。言語バージョン7.3て書いてあった。
保守的な現場だから簡単にバージョンあげたりはしないのだろうな。
recordか。仕事で使ってみたかった。

930:デフォルトの名無しさん
20/12/07 07:33:11.23 jipj8SHtM.net
>>918
お大事に。

931:デフォルトの名無しさん
20/12/07 07:47:15.09 B8tartMNM.net
Record型って最初聞いた時に、データベースのレコードを突っ込む型と思ってたわ…
更新できないってことは
中身書き換えてEFに投げてデータベース更新することができないってことだよな。
俺もいまいち使い道がわからんわ。
どういうシステムで使うんだろ。

932:デフォルトの名無しさん
20/12/07 09:03:38.47 qwdGv73V0.net
多値からなる識別子とか

933:デフォルトの名無しさん
20/12/07 09:15:00.72 5xO4uxgk0.net
>>918
.NET Frameworkだと7までしか使えないんじゃなかったかな
8も設定すれば使えるけど一部機能に制限あったはず

934:デフォルトの名無しさん
20/12/07 10:31:45.42 mtQ69pRI0.net
.NET Core~.NET5でWindows用アプリをビルドするとexeやdllやjsonが生成されてそれら全て必要なようですが、.NET Frameworkのようなスマートな出力には出来ないんでしょうか?
丸々exe一本にしたい訳ではなくライブラリは別にしたいので単一ファイル化とはちょっと違うのですが

935:デフォルトの名無しさん
20/12/07 12:22:21.16 obD3rptW0.net
Framework dependent

936:デフォルトの名無しさん
20/12/08 00:25:30.96 8YwC0Fuu0.net
>>920
DDDとかValueObjectとかに関わってないと分からんかもな

937:デフォルトの名無しさん
20/12/08 08:36:58.75 qADZolAoM.net
>>925
そのキーワードでググってみた
とにかく
Record型ってのはValueObjectを作ることを目的としたクラスであって
DBから取得したレコードを突っ込むクラスではないのね
URLリンク(www.infoq.com)
…じゃあValueObject型って名前にしろよ!

938:デフォルトの名無しさん
20/12/08 08:59:31.84 QL1pojox0.net
>>926
DBのレコード突っ込む型とか、自分で言ってて頭悪いと思わないのかな

939:デフォルトの名無しさん
20/12/08 09:04:14.01 ThBsNynLd.net
名称なんて年単位で議論してたんだから提案あるならしてくりゃ良かったのに

940:デフォルトの名無しさん
20/12/08 09:08:19.56 qADZolAoM.net
>>927
我ながらアホっぽいな
しかしレコード型と言われて、はいはいレコード型ねって理解できる奴いるのかね。

941:デフォルトの名無しさん
20/12/08 09:25:23.43 WA2T93A40.net
レコードなんだから再生できても録音できないのは当たり前だろ

942:デフォルトの名無しさん
20/12/08 09:30:24.02 qADZolAoM.net
確かにそうだな
データベースのレコードを更新するってよく考えたら変な言い回しなんだな

943:デフォルトの名無しさん
20/12/08 09:44:59.64 0unpAQOY0.net
>>929
新しいキーワードや概念が出てきたなら名前から安易に決めつけたりせずにどんなものか調べるのが当たり前の行動でないの?

944:デフォルトの名無しさん
20/12/08 11:08:44.41 CR6HP8eG0.net
DVD-ROM型

945:デフォルトの名無しさん
20/12/08 11:09:42.33 +Hjnd8Yr0.net
Spanで返してくれるHtmlパーサーってある?
そもそも標準のパーサーってあったっけ
jsと同じ感覚でquerySelectorとか使えると良いんだけど

946:デフォルトの名無しさん
20/12/08 12:04:51.25 GTdYvNE8a.net
>>925
プロパティーの型はイミュータブルなのが好ましいのは誰でも分かると思う。

947:デフォルトの名無しさん
20/12/08 12:20:44.27 MydVvHcuM.net
>>930-931
ネタだと思うがマジで言ってたら単なる老害だぞw
レコードは記録
一般でもコースレコードを更新しましたとか言うだろ

948:デフォルトの名無しさん
20/12/08 12:27:24.23 QPlJJaQdr.net
>>932
漢字文化圏では字面から意味がだいたい分かることに甘えたやつが多い

949:デフォルトの名無しさん
20/12/08 12:35:05.35 f+ofKIWhM.net
全く関係ないが昔ログインの事を略してログと呼んでいる奴がいて
それに気が付くまで話が全く理解できなかった

950:デフォルトの名無しさん
20/12/08 12:42:21.79 Jz5aG9hcM.net
ログオンしないの?

951:デフォルトの名無しさん
20/12/08 12:57:17.36 UAWkpbVf0.net
爪折ったカセットテープ型

952:デフォルトの名無しさん
20/12/08 13:07:42.70 u9TUBJ18p.net
平和守る名前さ~♪

953:デフォルトの名無しさん
20/12/08 13:23:08.32 v7gdDVm90.net
ダグオンwww

954:デフォルトの名無しさん
20/12/08 14:49:14.43 qADZolAoM.net
>>932
おっしゃる通りだが、名前にもう少し情報をいれてほしいなあ
こんなわかりにくい名前つけていいのか
英語圏の人はピンとくるのかな

955:デフォルトの名無しさん
20/12/08 15:12:08.46 L/fvSJtl0.net
>>936
「更新」の意味を古い記録を新しい記録で差し替えるという意味にとるか
古い記録自体を変更して最新状態にするという意味にとるかの違い
前者はイミュータブルで後者はミュータブル

956:デフォルトの名無しさん
20/12/08 15:23:20.07 0ctxmOmz0.net
>>923
必要ないのも混ざってるよ

957:デフォルトの名無しさん
20/12/08 15:29:38.69 bfWpuCm70.net
>>944
そういうどっちにも取れるような名前を付けていいんか?
って話じゃね?
少なくともデータベースやPascal系言語ではレコードの内容を書き換えられるんだし

958:デフォルトの名無しさん
20/12/08 16:14:06.02 KeS4W5RD0.net
くそコード書いといて
えー読めないのみたいな顔するやつ死ね

959:デフォルトの名無しさん
20/12/08 16:43:14.25 v7gdDVm90.net
だからrecord 自体は別にイミュータブルでも何でもないんだってば

960:デフォルトの名無しさん
20/12/08 19:03:10.97 f+ofKIWhM.net
デビュー前にレコード大賞を盗った場合はどうなるの?

961:デフォルトの名無しさん
20/12/08 19:32:57.86 MwY7tEEj0.net
tmpとかもやめて欲しいな。

962:デフォルトの名無しさん
20/12/08 19:33:13.64 y8tTQ7tr0.net
質問スレで平日の昼間からずっと雑談づくしってお前らそういう仕事なの?

963:デフォルトの名無しさん
20/12/08 19:54:46.60 +Hjnd8Yr0.net
>>951
このご時世で昼間に家からカキコできないほうが終わってる定期

964:デフォルトの名無しさん
20/12/09 02:33:30.28 WuZTb4kZM.net
なにごちゃごちゃ抜かしとるんじゃ我ェ!?

965:デフォルトの名無しさん
20/12/11 09:52:21.87 xnlTyNu60.net
エンディアンのバイトスワップめんどくせー

966:デフォルトの名無しさん
20/12/11 11:23:36.63 RmJd06BU0.net
あるウェブサイトにWebrequestを使ってアクセスしようとしたところ、
「ご使用のブラウザはCookieまたはJavaScriptの設定が無効です」
と出てウェブブラウザでは表示されるページが取得できませんでした。
webrequestは今まで何度も使っていますがこんなことになったのは初めてです。
↓のようにどこの解説サイトでも掲載されているような普通のやり方でやっているだけなのですが、回避する方法はあるのでしょうか?
CookieContainer myCC = new CookieContainer()
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.CookieContainer = myCC:

967:デフォルトの名無しさん
20/12/11 12:09:30.98 RmJd06BU0.net
すいません、自己解決しました

968:デフォルトの名無しさん
20/12/11 12:28:58.18 e2z+8YzhM.net
プロジェクト内で定義された派生クラスを全てリストする方法ってあるでしょうか?
例えば動物という基底クラスがあり、
派生クラスに猫、犬と2つ作ったとします。
基底クラスには鳴き声メソッドがあるとします。
猫の鳴き声メソッドは「ニャーニャー」と返します。
ある関数で「ワンワン」という文字列が来た際に
プロジェクト内の動物派生クラスを個別に生成して鳴き声メソッドを叩き、
ワンワンと鳴く派生クラスを特定する逆引きのような処理をしたいです。
if文で全派生クラスを書けばいいですが、派生クラスはガンガン増えていくので、派生クラスを定義するたびににそのif文をメンテするのはメンテ漏れのバグのリスクがあるので
プロジェクト内に現在定義された動物派生クラスを全部取ってくる事が出来れば、それをグルグル回せばメンテナンス不要のコードにできるのですが

969:デフォルトの名無しさん
20/12/11 12:46:55.66 VHLzC15hd.net
SourceGeneratorならできるだろうけど、何の情報もなしにclass探すのは無理じゃない?
テーブル内のclassに対して全部処理するとかはできるだろうから編集箇所は最小限で済ませられるけど

970:デフォルトの名無しさん
20/12/11 12:49:19.99 9hZE0nsxd.net
>>957
リフレクションで頑張れば行けるかもね

971:デフォルトの名無しさん
20/12/11 13:03:11.90 exUCYAAha.net
>>957
動的にサブクラスを列挙するのはたぶん無理じゃないの?
public abstract class Animal
{
  public Animal(Animal a)
  {
  ...
  }
}
こういう風にAnimalのコンストラクタでthisを渡すことを強制しておけば
少なくともインスタンス化されたものは把握できるね。

972:デフォルトの名無しさん
20/12/11 14:37:47.39 m/dnIqsS0.net
typeof(Animal).Assembly.GetTypes().Where(_type => _type.IsSubclassOf(typeof(Animal)))
型の列挙自体はこんなんでできるけど
インスタンスどうするの?っていう
全部の型にpublicな引数なしコンストラクタが必ずありますならなんとかなるけど

973:デフォルトの名無しさん
20/12/11 15:40:59.87 69jKb/QY0.net
そういやクラスに、静的に実行される静的イニシャライザを書けるようにしてくれたらいいのにと思うことあるな

974:デフォルトの名無しさん
20/12/11 16:53:05.38 CVvHA/5PM.net
>>962
書けるぞ

975:デフォルトの名無しさん
20/12/11 18:41:57.69 bOY22DN70.net
>>960
それthisじゃない。

976:デフォルトの名無しさん
20/12/11 19:31:50.50 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);
  }
}

977:デフォルトの名無しさん
20/12/11 19:37:25.05 PS9oWtr00.net
>>961
自分のインスタンスを返す静的メソッドって作れないのか
それを親クラスかインターフェイスで規定しておけばよいんじゃ
つかわざわざインスタンス生成しなくても、鳴き声が自分かどうか判定する静的メソッドで事足りる気がするな

978:デフォルトの名無しさん
20/12/11 20:32:27.16 ZS/vCbaU0.net
>>941-942
渋谷で超勇者展始まったぞ!

979:デフォルトの名無しさん
20/12/11 21:16:51.65 69jKb/QY0.net
>>963
ま、まじで?
なんて機能名でググれば出てきそう?

980:デフォルトの名無しさん
20/12/11 21:34:43.36 bOExnmUya.net
「C# 静的イニシャライザ」で検索して普通に引っかかるでしょ
イニシャライザ/コンストラクタと呼び方が異なるだけで

981:デフォルトの名無しさん
20/12/13 02:19:21.24 1g8P/X2hM.net
c#でRSSリーダー作れましゅか?

982:デフォルトの名無しさん
20/12/13 02:27:42.98 mhM78eSV0.net
もちろん作れるさ

983:デフォルトの名無しさん
20/12/13 06:26:58.36 TsdjEAD7M.net
c#では作れないものはありますか?

984:デフォルトの名無しさん
20/12/13 07:37:48.18 18RrlrES0.net
>>966
全ての派生クラスで同じ名前の静的メソッドやプロパティを強要できるならそれでよさそうだけど出来なくね?

985:デフォルトの名無しさん
20/12/13 09:06:36.69 unG5NNsQ0.net
>>973
静的メソッドって継承できないのか。知らなかったぜ
C#8.0でインターフェイスに定義できるようになったのかな

986:デフォルトの名無しさん
20/12/13 10:08:37.85 3XNF+7/F0.net
>>972
お前の能力を超えたソフト

987:デフォルトの名無しさん
20/12/13 10:11:14.52 7La4X7B8a.net
ネイティブDLLが作れるようになってくれないかな

988:デフォルトの名無しさん
20/12/13 10:21:46.03 BQqdDV6m0.net
>>972
カーネルドライバ

989:デフォルトの名無しさん
20/12/13 10:26:06.52 QKeUnYpp0.net
>>972
完全なマシン語にコンパイルされるプログラム
これでないとOSカーネルとかデバイスドライバとか作れない

990:デフォルトの名無しさん
20/12/13 11:14:15.79 KcA96kkp0.net
マシン語にしたバイナリを出力するアプリをC#で作ればなんでもできることになる

991:デフォルトの名無しさん
20/12/13 14:02:37.13 U1NW+seS0.net
nativeaot(-llvm)?(旧corert)ってのがあってぇ…

992:デフォルトの名無しさん
20/12/13 14:07:55.69 3XNF+7/F0.net
.NETNative をちゃんと作ればC#でもネイティブコードにコンパイルできるだろうし、そもそも性能がたいして必要ないならインタプリタでもドライバを書くことはできるだろうけどGCに依存してる言語はタイミングが読めないから難しいわな

993:デフォルトの名無しさん
20/12/13 14:47:32.03 E31xy0lw0.net
C++/CLI復権してくれたらなぁ。まずないとは思うが。

994:デフォルトの名無しさん
20/12/14 19:47:40.61 EY+baBGY0.net
WEBの写真ダウンロード処理をしてるのですが、出来るものと出来にくいものがあります。
出来にくいもの(EDGEブラウザで開けるとすぐ見れるがダウンロードでは20秒くらいかかる)
URLリンク(i.dailymail.co.uk)
出来るもの(すぐにダウンロードできる。EDGEブラウザでもすぐ見れる)
URLリンク(i.imgur.com)
System.Net.WebClient client = new System.Net.WebClient();
client.DownloadFile("URLリンク(i.dailymail.co.uk) @"D:\tmp.jpg");
こういうのはサーバー側でアクセス種類がブラウザかプログラムか見分けられて
対策されてるのでしょうか?

995:デフォルトの名無しさん
20/12/14 20:29:19.80 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");

996:デフォルトの名無しさん
20/12/14 21:37:41.18 A7r1gxtPa.net
ブラウザでの表示が早いのはキャッシュされてるだけだと思うけど・・・・
キャッシュ全クリアしても本当にすぐ見れる?

997:デフォルトの名無しさん
20/12/15 10:35:58.18 md2wlUIm0.net
>>984
やってみましたら止まらずすぐにダウンロードできるようになりました。
サーバー側でUSERAGENTが入ってるか入ってないかでプログラムアクセスかどうかの選り分けをして
USERAGENTが空のものには20秒くらいわざとジラシが入ってるようです。
一括ダウンローダーとかの対策かなんかかもしれませんね。
ありがとうございました。

998:デフォルトの名無しさん
20/12/15 12:40:58.94 uedfi1MA0.net
UA偽装とかリファラ偽装とか懐かしいワードを思い出した

999:デフォルトの名無しさん
20/12/15 13:14:41.01 fP0YYSyi0.net
>>986
ちなみにChromeはかなり小まめにアプデ入る訳だが
Botは往々にして"Chrome/87.0.4280.88"の部分が古いままという特徴があって最新版一つ手前よりも前のバージョンだと弾くって言う対策してる鯖


1000:もある まぁここまで対策してくるのは稀だから放置でも大方問題にはならないが、インスコフォルダやレジストリや最悪webなどからバーション取得する方法あった気がするから暇なら最新版のUAにするロジックも入れておいた方がいい



1001:デフォルトの名無しさん
20/12/15 21:23:57.67 2D6p9tgnM.net
規模のでかいプロジェクトを開発してるといつもどのファイルを開いてるのかわからなくなったり、目的のファイルが見つからなかったり大変なんですけどどうしたらいいですか?
目的のフォルダに対してブックマーク的なものが設定できたりしたら迷子にならなくてすむんですがそんなのないですか?

1002:デフォルトの名無しさん
20/12/15 23:06:40.58 fP0YYSyi0.net
ref readonly変数のstructのメンバ関数呼ぶと防御コピーが発生するのは仕様?
refだけなら防御コピー発生しないのは確認できたんだけど

1003:デフォルトの名無しさん
20/12/15 23:23:22.02 j+VqSr9F0.net
>>989
フォルダじゃなくてファイルだけどvisual studioならブックマークあるよ
ただ、そもそも大規模になっても迷子にはあんまならないかな?

1004:デフォルトの名無しさん
20/12/15 23:26:47.80 OK3TNwGLM.net
>>991
クソみたいな設計だから困ってたんですよ
ありがとうございます

1005:デフォルトの名無しさん
20/12/15 23:32:36.78 korWFWn50.net
>>989
同じ事思ってる。
VSだと開いてるファイルのタブに、プロジェクト毎に色分けする拡張入れてる。
あとソリューションエクスプローラーを複数開いたりしてる。

1006:デフォルトの名無しさん
20/12/16 01:40:22.65 FCFqtT9K0.net
>>993
複数開くってどうやるの?

1007:デフォルトの名無しさん
20/12/16 03:17:07.88 eAMqD84A0.net
共通プラットフォームの .NET 5 が出てきたってことは、.net standard はもう次バージョンは出ないんですか?

1008:デフォルトの名無しさん
20/12/16 03:21:40.46 4YU+JB8/0.net
うん

1009:デフォルトの名無しさん
20/12/16 07:09:48.69 ksVkXCtR0.net
>>995
誰も新しい方使わなかったらまだワンチャンあるかも?

1010:デフォルトの名無しさん
20/12/16 11:31:10.25 TSvQ057dM.net
次スレ立てた
ふらっと C#,C♯,C#(初心者用) Part149
スレリンク(tech板)

1011:デフォルトの名無しさん
20/12/16 20:14:15.21 p7rmX8ox0.net
>>990
そりゃメソッドは内部でメンバを書き換えてるかもしれないからな
readonlyなメソッドならコピーされない

1012:デフォルトの名無しさん
20/12/17 20:00:41.21 Z1ozW/Gv0.net
>>998
スレたて乙

1013:デフォルトの名無しさん
20/12/17 20:54:36.61 czJEN8EN0.net
埋め

1014:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 204日 0時間 25分 55秒

1015:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


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