[過去ログ] C#, C♯, C#相談室 Part94 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(2): (ワッチョイ 935f-5Uxj) 2019/03/20(水)18:57 ID:ZZcTomnN0(1/3) AAS
!extend:checked:vvvvv:1000:512
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
外部リンク:www.visualstudio.com

■コードを貼る場合はこちら
外部リンク:ideone.com

■前スレ
C#, C♯, C#相談室 Part93
2chスレ:tech

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。 VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
876
(1): (ワッチョイ e17c-EFWq) 2021/10/26(火)14:28 ID:lkW9PATM0(2/2) AAS
多義語を知らない>>875
辞書引くだけで良いのに引けないんだね
877
(1): (ワッチョイ c201-45kF) 2021/10/26(火)18:40 ID:UqMMY6BB0(3/4) AAS
>>876
座礁って書いてある辞書教えて
そしたら納得するよ
878
(2): (エアペラ SDcd-EFWq) 2021/10/26(火)19:44 ID:uR+ZT8QXD(1) AAS
>>877
納得はいらんけど、deadlockの自動詞、他動詞の意味調べてみ
879: ハノン◆QZaw55cn4c (ワッチョイ 6247-SMpf) 2021/10/26(火)20:18 ID:YaaA9sXD0(1) AAS
>>878
低頓する、低頓させる、「交渉は賃金問題で行き詰まった」、旺文社シニア英和辞典
行き詰まる、行き詰まらせる、低頓する、低頓させる、研究社リーダーズ英和辞典
880: (アウアウウー Sa45-iXiw) 2021/10/26(火)20:48 ID:eY0tVbdGa(1/2) AAS
さすがに「言葉の意味は文脈に依存する」ってことを知らない人がこれだけ多いと日本の将来心配になるねw

この業界でデッドロックと言えば普通は非同期処理の文脈におけるデッドロックのことを指す、
これは最初から言っているように間違いない。

ただ必ずそうとは限らないと言ってるだけ。
イキってる皆さんがどう思おうが自由だけど、メソッドが制御を返さない状態のことをその原因を問わずに
「デッドロック」と呼ぶ用法は普通に使われてる。
881: (アウアウウー Sa45-iXiw) 2021/10/26(火)20:52 ID:eY0tVbdGa(2/2) AAS
そもそもデッドロックの意味とか、片方向と双方向の違いがどうのとか、そんなのどーでもいいわw
誰がそんな話してるんだよw

俺は時々ニュース系の板とかでネトウヨ馬鹿にして楽しませてもらってるけど、
この追いつめられると別の矮小な問題にすり替えて誤魔化して逃げるやり方って
連中そのものだねw
882: (ワッチョイ 0d2f-/PVD) 2021/10/26(火)21:39 ID:5YjTtZfR0(1) AAS
>メソッドが制御を返さない状態のことをその原因を問わずに「デッドロック」と呼ぶ
まあ、たんなるロック待ちをデッドロックというやつはたまにはいるけどな
あきらかに間違ってるわけで、それが普通とかもう話にならん

>追いつめられると別の矮小な問題にすり替えて誤魔化して逃げる
まさに今のお前だな
883: (ワッチョイ 825b-WU2P) 2021/10/26(火)21:43 ID:tLsOhANt0(2/2) AAS
あーあ
ネトウヨとか言い出しちゃったよ
884
(1): (ワッチョイ c201-45kF) 2021/10/26(火)22:01 ID:UqMMY6BB0(4/4) AAS
>>878
名詞が動詞化したものだから意味に違いはないよ
自動詞は「デッドロックになる」こと
他動詞は「デッドロックをもたらす」こと

デッドロックとは「相対する2つの勢力が拮抗して事態が進展しない状態」
DBMSのデッドロックも非同期処理のデッドロックも状況が特化してるだけで意味は同じ

座礁は船と岩礁の力が拮抗してるってことなら
その辺に転がってる石ころもdead rockだね
885
(1): (ワッチョイ d193-EFWq) 2021/10/26(火)22:18 ID:+xnJ+mOr0(2/3) AAS
>>884
deadlockの言う座礁する、座礁させるは日本語では比喩的な使われ方をする座礁だよ
交渉が座礁するとか交渉が暗礁に乗り上げるって意味での座礁
だから名詞じゃなく自(他)動詞
886: (ワッチョイ d193-EFWq) 2021/10/26(火)22:27 ID:+xnJ+mOr0(3/3) AAS
つまりデッドロックマンは何もかも間違ってると言いたい
887
(1): (ワッチョイ c201-45kF) 2021/10/27(水)00:14 ID:un5zQ+BD0(1) AAS
>>885
「deadlockの言う座礁する、座礁させる」って何? どこから出てきたの?
deadlockの言う?

交渉が座礁するとは日本語では言わない
交渉が暗礁に乗り上げたとしてもそれがデッドロックとは限らない
単なる待ち状態をデットロックと言ってるのと同じレベル
888: (エアペラ SDcd-EFWq) 2021/10/27(水)08:01 ID:hvQWVHhPD(1) AAS
>>887
少なくとも英辞郎には暗礁に乗り上げるって意味が載ってる
意味として膠着状態を指す慣用句としての暗礁に乗り上げるが使われてる
889: (ワッチョイ eeb0-dcnK) 2021/10/27(水)08:07 ID:gYjFdZWj0(1) AAS
Rock Is Dead !
890: (ワッチョイ 65ad-/pkb) 2021/10/27(水)08:22 ID:thwndR3Q0(1) AAS
Rock is not dead.
891
(1): (ワッチョイ fd5f-iXiw) 2021/10/27(水)10:24 ID:t2iD5tO80(1) AAS
>そもそもデッドロックの意味とか、片方向と双方向の違いがどうのとか、そんなのどーでもいいわw
>誰がそんな話してるんだよw

>追いつめられると別の矮小な問題にすり替えて誤魔化して逃げるやり方って連中そのものだねw

まさにこれ
話を逸らすついでにスレ流して汚点を忘れさせようとしてるのが観える
892: ハノン◆QZaw55cn4c (NZ 0Hca-SMpf) 2021/10/27(水)18:07 ID:2zkjN6asH(1) AAS
>>891
東大話法、てのが大昔流行っていましたね
893: (ワッチョイ 8b63-jCVc) 2021/10/29(金)08:02 ID:4uk/ll0/0(1) AAS
連中…「組織」の者かな?
894
(2): (ワッチョイ 8901-h3eI) [age] 2021/11/02(火)21:51 ID:4DiwsCtO0(1/2) AAS
ニコニコ弾幕ツールを作りたくてプログラミングとC#を初めて触ったのですが
なにか参考になる動画や書籍資料等ないでしょうか?
簡単なメニュー程度なら作れるようになったんですがどうすれば弾幕打てるツールになるのか全く分かりません。
弾幕ツールソースとかでググってもそれっぽいのが全く出ず…
超初心者スレでも聞いたのですが回答もらえなかったのでこちらで…
895
(1): (ワッチョイ 136a-jRDL) 2021/11/02(火)22:21 ID:SO0TQkZV0(1) AAS
>>894
ぐぐるんなら、「ニコニコ動画 コメント api」とかじゃね?
ちょっと古いけど
外部リンク:qiita.com
こんな感じで以前は出来ていたようです
が、今春にコメントサーバーがリニューアルされているようなので、おそらくは上記の記事そのままではなくなっていると思います
外部リンク[html]:blog.nicovideo.jp

ブラウザコントロール上でアレコレさせるのとどっちが楽かは知らん

いずれにしても、言語そのものの知識以外の、httpだとかニコニコの仕様そのものだとかの知識の方が必要かと思います
896
(1): (ワッチョイ 8bbb-fCIK) 2021/11/02(火)22:37 ID:crJtQlzP0(1) AAS
勉強のためにやりたいのなら別だけど・・・・
自分で使いたいとかそういう目的なら、ほとんど完成品みたいなものが既にある
外部リンク:www.nuget.org
897
(2): (ワッチョイ 8901-h3eI) 2021/11/02(火)23:03 ID:4DiwsCtO0(2/2) AAS
>>895-896
回答ありがとうございます
C#の知識だけじゃ実現できないのですね(;´Д`)
C#の他にJavascriptとかCのAPIですか…3,4年はかかりそうですね…
やったことが無駄にならないことが分かったので頑張ります
898: (ワッチョイ 1310-x9M2) 2021/11/03(水)03:43 ID:Di9oQY4e0(1) AAS
日にどれくらい時間かけるかにもよるけど早い人なら無学から始めても1ヶ月かからんやろ
すでにほとんど完成品といえるようなパッケージがあるならなれてる人なら1日かからず完成する

始めて開発というものをするにあたって半年以上かかりそうなもんはモチベーション続かんから普通はおすすめできない
もしこのコメントツールで年単位で掛かりそうだと感じたならもっと規模の小さい、長くても1ヶ月くらいで完成させられるかな?って想像できるようなものから始めたほうがいいと思うよ
899: (テテンテンテン MMeb-nRM3) 2021/11/03(水)08:25 ID:MLVf2VPVM(1) AAS
>>894
10/20にニコニコ動画関連総合ツールスレで質問して回答もらえなかった人?
そこまでできるようにはなったんだ
ニコ動の弾幕なのか、ニコ生の弾幕なのかわからないけど
・ネットアクセスのやり方(httpclientかなんか)
・WebSocketの使い方(ニコ生のみ)
・jsonの知識
・非同期の使い方
はわかってないとできないと思う
以下を見て理解できるまでがんばって。以下のニコ生・ニコ動の説明は古くてそのまま使っても動きません。
ブラウザーのディペロッパーツールで解析してね。
ニコ生
外部リンク:qiita.com
外部リンク:qiita.com
ニコ動
外部リンク:qiita.com
900: (ワッチョイ 9924-UgiY) 2021/11/03(水)11:12 ID:s4xVDTJC0(1) AAS
>>897
Web関連は基本人間が理解出来る文字列でやり取りするから比較的難易度低い方
C#で作るならCの知識が必要になる場面なんて全くないはず
Html、Css、JavaScriptの知識はどの言語で開発するにしても多少必要にはなってくるがそんな難しくはない
901: (テテンテンテン MMeb-PiCk) 2021/11/03(水)16:24 ID:XrFTraKdM(1) AAS
>>897
あなたが作りたいツールを作るにも10年ぐらい前ならもっと簡単な知識でつくれたんだけど、Flashからhtml5になった頃から技術的なレベルが高くなったのも一因
ニコ動、ニコ生にしても以下のステップを1つづつ目標にして。

1.ニコ動かニコ生のURLを入力してそのページの内容を取得して表示なり取得確認する
2.そのページから必要な情報を選択して取得する
3.ニコ生の場合は、その情報からwebsocketに接続して各種情報を取得
4.ニコ動の場合は、その情報からコメント情報を取得する

たぶんこの辺までできれば次どうすればいいかはわかると思うよ
902: (ワッチョイ fb10-9kQe) 2021/11/03(水)20:51 ID:b4M0oSaD0(1) AAS
今時はIEコンポーネントブラウザを使わないからだよ
ニコニコの場合は
(1)Javascriptでブラウザの拡張機能を書く
(2)Pythonでダウンローダーや巡回、予約
で大半だよね、C#の出番はあまりないん
903: (ワッチョイ 515f-vonH) 2021/11/05(金)19:37 ID:1GMX4TDW0(1) AAS
API使わずにスクレイピングっていいのか?
904: (ワッチョイ 6924-MNeM) 2021/11/05(金)21:29 ID:U9pi1OEC0(1) AAS
非公式API使って制限回避してもいいぞ
905: (ワッチョイ 5e2c-vonH) 2021/11/05(金)23:15 ID:/IlkeVzp0(1) AAS
各サイトのルールは、robots.txt を見ればよい

そこに、スクレイピングできる間隔などが書いてある
906: (ササクッテロ Sp79-y4Tz) 2021/11/08(月)19:23 ID:jl5nUU4op(1) AAS
SQLのパラメータって使いまわせなかったっけ?

例えば下みたいなSQLがあったとして
string sql = "UPDATE HOGE_TBL SET HOGE = :hoge WHERE HOGE = :hoge ";

パラメータが下1つだけだったら更新件数0件で上手く動かない…
cmd.Parameters.Add(new OracleParameter(":hoge", "huga"));

Javaだと上手く動くけどC#は明示的に分けないとダメな感じ?
907: (ワッチョイ 925b-H2rd) 2021/11/08(月)19:27 ID:ZmPcj5XX0(1) AAS
hugaじゃなくてfugaじゃないかな
908
(1): (アウアウウー Sacd-jU0I) 2021/11/08(月)19:47 ID:eIDHMWNda(1) AAS
BindByName
909: (ササクッテロ Sp79-y4Tz) 2021/11/09(火)12:25 ID:+zMu32a8p(1) AAS
>>908
?クス
910
(1): (ガックシ 0671-09aj) 2021/11/12(金)14:47 ID:LR2kPQ3V6(1) AAS
最近c言語習い始めた初心者なんですがwhile()のカッコ内の条件式に論理演算子を使うことはできますか
もしできるならif文の時のように入力すればいいのでしょうか
911: (ワッチョイ 9b4b-/d2h) 2021/11/12(金)14:56 ID:9PEUH50B0(1) AAS
>>910
ここはC#の相談室なんだが・・・
まあ、ifの書き方と同じで良いですよ。
912: (ワッチョイ 2524-Ny61) 2021/11/13(土)11:48 ID:WnzBfGlt0(1) AAS
C#10で文字列補間が大幅に最適化されたってことらしいけど、
stringオンリーの4個以内(Concatの最大引数以内)以外は$"{}"で繋げていった方がむしろパフォーマンス良くなるって認識でOK?
913: (ワッチョイ 6d78-wd7R) 2021/11/13(土)12:46 ID:+IhS2fUi0(1) AAS
ベンチマーク取れば?
914: (ワッチョイ 7501-D258) 2021/11/17(水)00:43 ID:qSiAIVdk0(1/2) AAS
わけあってVisual Studioをインストールできない環境があるのですが、
その環境で
Windows標準のC#コンパイラ(C:\Windows\WinSxS配下のcsc.exe)

Visual Studio Code
でC#コンパイル環境を作成したいのですができますか?

以上、よろしくお願いいたします
915
(1): (アウアウウー Saa9-09aj) 2021/11/17(水)02:16 ID:+JwFzM8Ra(1) AAS
できるけど君の場合どうせNuGetで積むんじゃね
916: (ワッチョイ 7501-D258) 2021/11/17(水)18:51 ID:qSiAIVdk0(2/2) AAS
>>915
積むかどうかは分からないですね
私は超能力者ではないので
917: (ワッチョイ 7501-09aj) 2021/11/17(水)20:50 ID:iuNg9UQr0(1/2) AAS
ビスマルク「愚者は経験に学び、 賢者は歴史に学ぶ」
918: (ワッチョイ cd2f-FDGb) 2021/11/17(水)22:01 ID:GLXZB85w0(1) AAS
そもそもコンパイル環境なら、VS Codeすらいらないんじゃ
919: (ワッチョイ 6d78-wd7R) 2021/11/17(水)22:23 ID:oaCBMm/O0(1) AAS
VSはダメでVSCodeはインストールできるんだ
よくわからない環境だな
920: (ワッチョイ 4de6-wt4Y) 2021/11/17(水)22:48 ID:OY6bKJls0(1) AAS
普通の会社で使えるのは2017までなんだよな
921: (ワッチョイ 4bbb-OGRf) 2021/11/17(水)23:11 ID:SfknQ7Tq0(1) AAS
うち2022買ったで
922: (ワッチョイ 7501-09aj) 2021/11/17(水)23:14 ID:iuNg9UQr0(2/2) AAS
まだ2021年なのに?
923: (ワッチョイ 7501-09aj) [hage] 2021/11/18(木)09:00 ID:+Wtl3GaA0(1) AAS
ジャップには分からんだろうが世界的には9月からはもう2022年だぞ
924: (ワッチョイ 4bb0-WW/G) 2021/11/18(木)21:37 ID:cf0G7PVa0(1) AAS
じゃあ日本は4月からもう2022年になってるのか
925: (ワッチョイ 8eda-xqyN) 2021/11/19(金)01:11 ID:4qGzfQ8F0(1) AAS
コマンドが格納されたListを順番にサーバへ送信し、
1が返ってきたら次のコマンド送信、1以外かTimeoutしたら即中断みたいな処理を
ractiveでサクッと書けますか?

var cmdList=new List<string>{ cmd1, cmd2, ... };

cmdList
 .ToObservable()
 .TimeOut( ・・・ )
 .SendCommand()
 .WaitResponse()
 .PostRecv(1だったら次のコマンド送信、1以外やタイムアウトなら処理中止);

みたいな感じで。。
926: (テテンテンテン MM8e-YpRD) 2021/11/20(土)22:43 ID:F7Qzv69PM(1) AAS
cmdList
.ForEach(x => { if(x.SendAsync(cts.Token).Result == 1 ) throw new Exception() });
927
(1): (テテンテンテン MM8e-YpRD) 2021/11/20(土)22:58 ID:YK5Xmj5SM(1) AAS
var results = await cmdList
.ToAsyncEnumerble()
.SlectAwait(async (c) => await c.SendAsync(cts.Token))
.TakeWhileAwait(async (r) => r == 1)
ToArrayAsync();
928: (アウアウウー Sa3b-VuZ6) 2021/11/21(日)00:02 ID:Z3Hc+Mmaa(1) AAS
タイムアウトで値や例外が返ってくるタイプだったらいいけど
時間経過で勝手にタイムアウト判定しろよってタイプだと詰みそう
929: 925 (ワッチョイ 8eda-xqyN) 2021/11/21(日)00:41 ID:7ZBVrJXA0(1/2) AAS
ReactiveExtentions(System.Reactive名前空間 ver5.0)を使ってます。
自分なりに書いてみましたがこのライブラリの使い方がよくわかってない状態です。
(疑問点をコメントに書きました。分かる方教えてください)

IDisposable d = cmdList
 .ToObservable()
 .Timeout( TimeSpan.FromSeconds( 3000 ) )
 .Select( cmd =>
 {
  var res = this.SendCommand( cmd ) // 自作のコマンド送信関数;
  return res;
 } )
 .Where( res => res == 1 )
 .Subscribe(
  res => /* ここで次のコマンド送信を行う書き方が分からない*/ res.ToString(),
  ex => Debug.WriteLine( ex.Message /* Timeout発生時 */ ),
  ()=> Debug.WriteLine( "Complete" /* 全ての送信完了?それとも1つだけ送信完了? */ )
);

>>927
やはりToAsyncEnumerbleからアプローチするべきなんですかね。。
930: (ワッチョイ 8eda-xqyN) 2021/11/21(日)00:46 ID:7ZBVrJXA0(2/2) AAS
Timeout関数の中身は
TimeSpan.FromMilliseconds( 3000 ) // 3秒
の間違いでした
931: (テテンテンテン MM8e-YpRD) 2021/11/21(日)10:42 ID:XHu2qeE/M(1) AAS
Rxは監視を行うもの
時系列に沿って要素が流れてくる時に使うもの
なのである要素が流れてきた時に次の要素なんてのはまだ無い
要素が最初から揃ってるListから始めるからわからなくなる
最初から揃ってるなら普通にLinqかforeachを使う
Listでなくストリームならこれでおk

var d = CommandStream
.Select(c => Send(c))
.Timeout(t)
.TakeWhile(r => r == 1)
.Subscribe();
932
(1): (ワッチョイ bf4b-1Ur4) 2021/12/10(金)11:57 ID:ceXBGTs50(1/2) AAS
次元の違う配列ではArray.Copy出来ないのでしょうか。

例)
var foo = new int[4];
var bar = new int[3, 4];
ArrayCopy(foo,0,bar,0,4); // 例外発生 "The specified arrays must have the same number of dimensions."

1個づつコピーするしかないのでしょうか?
933: (ワッチョイ df2c-yjVA) 2021/12/10(金)12:19 ID:D7YZScOh0(1) AAS
プリミティブ数値型の配列ならBuffer.BlockCopyできるけど
まあ多次元配列なんて肩身が狭いもんだから仕方ないね
934: (ワッチョイ bf4b-1Ur4) 2021/12/10(金)12:40 ID:ceXBGTs50(2/2) AAS
classを配列に保存しているから、BlockCopyもダメなんですよね・・・
あまり数も多くないはずなので、1つずつコピー(代入)していきます。
935: (ワッチョイ a724-C40i) 2021/12/10(金)13:17 ID:/7sxHGOs0(1/2) AAS
>>932
若干アンセーフだけど行ごとにならSpan利用すればマネージ型でも出来る
for (int i = 0, len2 = b.GetLength(1); i < b.GetLength(0); i++)
foo.CopyTo(MemoryMarshal.CreateSpan(ref bar[i, 0], len2));
936: (ワッチョイ a724-C40i) 2021/12/10(金)13:21 ID:/7sxHGOs0(2/2) AAS
MemoryMarshal.CreateSpan(ref bar[i, 0], 5000)とかやっても確か例外でないから最新の注意を払う必要はある
まぁこうやってもソースの長さがデスト以内であれば問題は生じないけど
937
(6): (ワッチョイ c702-p36F) 2021/12/12(日)04:59 ID:/1pFbOYv0(1/3) AAS
入力を検知したときにメソッドを実行する処理において、
要素Aがnullでなく(エラー防止)、Aの子要素Boolがtrueの場合のみ処理をスキップしたい場合に いい書き方はありますか?
!A.Bool でメソッドを実行にしてしまうとAがnullだったときに実行されなくなってしまうので……
ひとまずgotoを使って以下のようにしているのですが、もっとスマートな書き方ありますでしょうか

if (Input)
{
if(A != null){
if(A.Bool){
goto INPUTSKIP;
}
}
Method();
}
INPUTSKIP:
938
(1): (ワッチョイ 7f10-xLgN) 2021/12/12(日)08:06 ID:OKsF9IR00(1) AAS
null条件演算子 null合体演算子 で検索
939
(2): (ワッチョイ df89-+2Rn) 2021/12/12(日)08:23 ID:V78zeb460(1/3) AAS
>>937
こう?
if (Input)
{
if (A != null && A.Bool)
{
// INPUTSKIP
}
else
{
Method();
}
}
940
(2): (ワッチョイ a701-p36F) 2021/12/12(日)09:36 ID:G8rzE1470(1) AAS
>>939
それを反転させて
if (Input)
{
if (A == null || !A.Bool)
{
Method();
}
}
941: (ドコグロ MM9f-JVtf) 2021/12/12(日)10:16 ID:2rSkF5hnM(1) AAS
>>937
goto 使いたくないと言うなら A が null か、A.Bool が false の時に処理したいってことだから普通に

if(A == null || !A.Bool){ 処理 }

って書くか>>938が言うnull条件演算子とnull合体演算子を使って

if(!(A?.Bool ?? false)){ 処理 }

でいける
個人的にはこの場合だと上の方がわかりやすいと思う
942: (ワッチョイ bfda-0QWB) 2021/12/12(日)10:56 ID:MLGY87ca0(1) AAS
後藤さんが出てくると素人臭が漂ってくるからな
943: (ワッチョイ df89-+2Rn) 2021/12/12(日)12:26 ID:V78zeb460(2/3) AAS
例外も後藤さんみたいなもんだが
944
(1): (ワッチョイ c702-p36F) 2021/12/12(日)12:48 ID:/1pFbOYv0(2/3) AAS
AがnullだったときにORで並べてA.Boolの条件式を使ってしまうとそんなもんないよってエラーを吐くのでは、
と思い込んでいたのですが大丈夫なんですね……!
!A.Boolだけで判定したときに怒られたので頭凝り固まってました!

ありがとうございました!
945
(1): (ワッチョイ 7f7b-ycqI) 2021/12/12(日)13:09 ID:I9KyYKSc0(1/2) AAS
>>944
いやショート サーキット評価だからエラーにならないだけ
外部リンク:docs.microsoft.com
946
(1): (ワッチョイ c702-p36F) 2021/12/12(日)13:17 ID:/1pFbOYv0(3/3) AAS
>>945
ああーなるほど、ORの場合どれか1つでも満たされてれば実行されるから
左側が条件を満たしてたら右側はもうチェックされないのか!!
良いこと知れました! ありがとう!
947
(2): (ワッチョイ df89-+2Rn) 2021/12/12(日)13:23 ID:V78zeb460(3/3) AAS
vb.netのorだとエラーになる
948
(1): (ワッチョイ 7f7b-ycqI) 2021/12/12(日)13:31 ID:I9KyYKSc0(2/2) AAS
>>946>>947
論理演算子2つ並べるのがショート サーキット評価なんだけど
外部リンク:detail.chiebukuro.yahoo.co.jp
次から初心者スレ行ってくれ
949: (ドコグロ MM9f-JVtf) 2021/12/12(日)14:02 ID:WWmfWzxPM(1) AAS
>>947
OrElse 使え

>>948
> 論理演算子2つ並べるのがショート サーキット評価なんだけど
とか言う玄人w
950: (アウアウウー Sa6b-5lnE) 2021/12/12(日)14:06 ID:a4cuZ/Mwa(1) AAS
vb恐ろしいな。そんなのバグの元じゃん
951: (ドコグロ MM9f-JVtf) 2021/12/12(日)15:11 ID:happ85M4M(1) AAS
はあ?

C# ⇔ VB.Net
---------------------
& ⇔ And
&& ⇔ AndAlso
| ⇔ Or
|| ⇔ OrElse

ってなってるだけやぞ
952
(2): (ワッチョイ a701-4A0X) 2021/12/13(月)09:12 ID:7pnzZ4JB0(1) AAS
>>937
条件式をネストしたり&でつないだりと複雑にするのは難読性が高くなるから分けたほうがいいだろ
どういう条件ならMthod()を呼ぶのか明確に

if(Input){
//事前処理
judge=(A==null) ? true: //Aがnullのとき
A.Bool==false ? true: //Aの子要素がfalseのとき
false; //それ以外
if(judge) Method();
//共通処理
...
}
953: (ワッチョイ 477c-Xngn) 2021/12/13(月)09:51 ID:g+jxvcxo0(1) AAS
>>952が分かりやすく見えない…
>>940が誰が見ても一目瞭然でいいと思うわ
シンプルな条件分岐なんだからこだわる必要ない
954
(1): (ワッチョイ df01-c3Ov) 2021/12/13(月)11:44 ID:zykNHKxZ0(1/2) AAS
skipするほうが例外的処理だろうからskip条件を明確にしてearly returnしたほうがいいと思う
論理式の細かい書き方よりも意図が伝わるかどうかのほうが大事

if (ShouldSkip(a)) {
return;
}
Method();

bool ShouldSkip(A a) {
return a?.Bool ?? false;
}
955
(2): (ワッチョイ bf62-Trcr) 2021/12/13(月)14:01 ID:z2L+bKXw0(1) AAS
メソッドにすんのはいいけど、>>937 が入力を検知したときメソッドを実行したいって言ってんだからその通りに書けばいい
設計書通りに条件分岐すりゃいいのに無駄に置き換えて実装する人多いけどなんなんだろうね

if(入力検知(input, A)){
Method();
}

bool 入力検知(bool input, A a){
return input && a != null && a.Bool;
}
956
(1): (アウアウウー Sa6b-p36F) 2021/12/13(月)14:22 ID:6wRfW5vFa(1/2) AAS
昼飯食いながら適当だから何か勘違いしてるかもしれないけど、>>937って要は
ある条件を満たした時だけMethodを実行したい、それだけでしょ?

だったら四の五の言わずに素直にそう書くのが一番じゃないの。
if( input && (!A?.Bool ?? false)) Method();
957: (アウアウウー Sa6b-5lnE) 2021/12/13(月)14:29 ID:KmNdaGVTa(1/2) AAS
求めてるのは「もっとスマートな書き方」だからな
主観的な問題だから、俺らが言えるのは「こういう書き方もある」ってのだけ
正解(どれが一番か)を決めれるのは本人だけ
958: (アウアウウー Sa6b-p36F) 2021/12/13(月)14:47 ID:6wRfW5vFa(2/2) AAS
コードでも文章でも読み手に「要するにそれってどういうこと?」って思わせないのが一番。
これもコードでも文章でもそうだけど、読みにくいものは書いた本人がそこをよく理解せずに書いている。
959: (ワッチョイ 87ad-jwmr) 2021/12/13(月)15:06 ID:WUjUV8JM0(1) AAS
ReSharperが薦めるように書き換えたら、何をしてるのかわからなくなった。
960
(1): (ブーイモ MM8b-+2Rn) 2021/12/13(月)15:10 ID:pxTkbBAYM(1) AAS
最近のc#はマルチパラダイムで構文が増えてカオスだ
961: (ワッチョイ df01-c3Ov) 2021/12/13(月)16:35 ID:zykNHKxZ0(2/2) AAS
>>955,956
>>937を読む限りでは入力を検知する処理と
検知した後に特定の処理をスキップするかどうかを判断する処理は別じゃないのかな?

「A.Boolがtrueなら入力を検知しない(or 入力を無視する)」ってことなら
入力よりも先にA.Boolを確認するよね
962: (アウアウウー Sa6b-5lnE) 2021/12/13(月)16:52 ID:KmNdaGVTa(2/2) AAS
ちなみに回答ざっと見てこんなだな
こういうのはコードが長くなっても動作が分かりやすい方がいいと思う

>>939,940,952
おk

>>954,955
バグあり
963
(1): (ワッチョイ 7f33-1tZa) 2021/12/13(月)22:23 ID:s0FccnDO0(1) AAS
>>960
それ。言語の表現力が豊かでも、自分やチームで一貫性を担保するのが面倒ξ
964: (ブーイモ MM8f-+2Rn) 2021/12/14(火)09:16 ID:cLXTODpXM(1) AAS
>>963
そして、コーディング規約が底辺プログラマーに合わせられて生産性が低下する
965: (ワッチョイ 67b0-zDwW) 2021/12/14(火)20:46 ID:4rMew3mV0(1) AAS
どうせ好き勝手に言語機能使って上がる生産性なんて微々たるもん
966
(1): (ワッチョイ c778-xLgN) 2021/12/14(火)23:18 ID:gu+YKYdX0(1) AAS
.net の 1.1 で書くとめちゃくちゃ不便で絶望するぞ
967: (ワッチョイ a787-3oVZ) 2021/12/14(火)23:43 ID:5qKKFixV0(1) AAS
linqがある.NET Framework3.5ですら今これでやれって言われたら不便に感じるしなぁ
使えるものは使わせてもらった方が全然楽だわ
968: (ワッチョイ 67b0-zDwW) 2021/12/15(水)08:20 ID:YtxEX99t0(1) AAS
色々使えた方が個人的に楽だと思うのは否定しないが、もっともらしく「生産性が上がる」とか言っちゃうと
意外とそうでもなかったり。
969: (ワッチョイ df42-8/hI) 2021/12/15(水)09:41 ID:flSodCtX0(1) AAS
>>966
特にList<T>が無いのはキツイわ
970
(1): (ワッチョイ e701-zKou) 2021/12/15(水)12:10 ID:KtX6zlRp0(1) AAS
心配しなくても今どき1.1で書いたり書かされたりすることはないでしょ
971: (ワッチョイ a790-wtFG) 2021/12/15(水)16:03 ID:w2vh5jVl0(1) AAS
1.1とか極端すぎるやろ
972: (ブーイモ MM8f-+2Rn) 2021/12/15(水)16:14 ID:Jy+USlABM(1) AAS
2.0の知識で止まってるヤツも多いよね
973
(1): (ワッチョイ 7f33-1bVk) 2021/12/15(水)16:57 ID:RMHVQ2YW0(1) AAS
さすがに今どきvar使うなとかLINQ使うなとか言われないよね?
974
(1): (ワッチョイ 67e3-xLgN) 2021/12/15(水)17:25 ID:ik5KT4gs0(1) AAS
>>973
var使うとわからなくなるというのは名称が明示的になってないだけだと思うわ
975: (ブーイモ MM8f-+2Rn) 2021/12/15(水)17:31 ID:KBNxuXv0M(1) AAS
>>974
ハンガリアン記法?
976: (ワッチョイ a701-hqAP) 2021/12/15(水)18:19 ID:UGnWEqDI0(1) AAS
MS公式はvar推奨してるけどさすがにintとかstringとか基本的な型はvarにはしないな
977: (ワッチョイ 87da-YqIs) 2021/12/15(水)21:30 ID:lA94GyTo0(1) AAS
明示的に型を書かないとダメなところ以外全部varで書くよ
978: (ワッチョイ bfda-0QWB) 2021/12/15(水)21:44 ID:M2QFYQSl0(1) AAS
最近はnew()で書けるようになったから、極力varはやめてる
Hoge hoge = new();

実装当初の想定通りlinqの戻りくらいかなvar、使うの。
979
(1): (ワッチョイ df5b-xLgN) 2021/12/15(水)23:22 ID:l+MEhncN0(1) AAS
new()使えるのってc#いくつからだっけ
980: (ワッチョイ 7fbb-Nxno) 2021/12/15(水)23:43 ID:NZjG441V0(1) AAS
はやくおれのレベルまで上がって来い
上で待ってるぞ
981: (ワッチョイ a787-3oVZ) 2021/12/16(木)00:21 ID:R2Peltay0(1) AAS
new()で書けるようになったけど、コンストラクタで初期設定値渡すようにしちゃうから全然使わんなぁ。
セッター潰してコンストラクタで設定するのが好き
982: (ワッチョイ df01-JVtf) 2021/12/16(木)07:48 ID:Ymr34XoE0(1) AAS
>>979
C# 9.0
983
(1): (ワッチョイ df10-4iyA) 2021/12/16(木)09:44 ID:P4pOcLuS0(1) AAS
C#がどんどんボクのしらないものになっていってる
いっそC##やDと名乗っていただきたい
(Dは既にある、は受け付けない)
984: (ワッチョイ a701-4A0X) 2021/12/16(木)10:15 ID:80W3ywqF0(1) AAS
C#に毛が生えた程度だろ
C丼でええがな
985: (ブーイモ MMff-gtpG) 2021/12/16(木)10:54 ID:Ni3FtdydM(1) AAS
c井
986: (ワッチョイ 7f63-N/e5) 2021/12/16(木)11:01 ID:DM4zUQcN0(1) AAS
C⛩
987: (ワッチョイ 87ad-jwmr) 2021/12/16(木)11:42 ID:plhBUTFD0(1) AAS
C升
988: (ブーイモ MM8f-+2Rn) 2021/12/16(木)11:47 ID:e2PzMi3oM(1) AAS
>>983
ほんと、氷川きよしくらい変わってしまった
989
(2): (ワッチョイ 7f33-1tZa) 2021/12/16(木)23:46 ID:vtDDQtO+0(1) AAS
if(item is {} a){
...
}
null判定でこんな書き方あるんだな。Resharperさんに提案されて初めて知ったわ。
個人的にはあまり使いたくないけど。
990: (ワッチョイ 7b24-8o0J) 2021/12/17(金)00:40 ID:fAwtu2PR0(1) AAS
>>989
それやるとaの色がローカル変数色にならず白のままになるのが不満なんだけど俺の環境だけか?
991: (ワッチョイ 535f-3/1D) 2021/12/17(金)02:39 ID:KpFo6Hw/0(1/2) AAS
C林
992: (ワッチョイ ca2c-TeJl) 2021/12/17(金)11:21 ID:b89m5ifd0(1) AAS
>>989
C#9なら
if (item is not null)
って実に直感的に書けるから早くこっちにこいよ…

ところでその式でaで受ける意味なくね?
993: (ワッチョイ 535f-3/1D) 2021/12/17(金)13:42 ID:KpFo6Hw/0(2/2) AAS
C極
994: (ワッチョイ ff6e-n/si) 2021/12/19(日)09:44 ID:QHfeHH9E0(1/2) AAS
WinFormsを独学でやっているのですが教えて下さい
そこそこの規模のソフトは作れるようになってますが
VSで開発していくうえで、フォルダ構成ってどう考えればいいですかね
いままではDB関連をDBフォルダ
フォームはFormにまとめてさらにその中に機能別にフォルダを
細かいクラスファイルはClassというフォルダに
DBとの受け渡し(sql書いてFormとの受け渡しModelみたいなもの?)は
Modelというフォルダにまとめています

プロの皆様はチームで作っていかれる際に
会社によりけりかもしれませんが一般的なフォルダ構成の考え方ってあるんでしょうか
995
(1): (ワッチョイ 5f78-kSWT) 2021/12/19(日)09:58 ID:eMi6YEPC0(1) AAS
そんなもの存在しないから適当でいいよ
まぁあえて口出しするならFormフォルダはFormクラスと名前が被るからやめとけって位かな
996
(1): (アウアウウー Sa9f-f5lq) 2021/12/19(日)10:00 ID:n0pWJPWXa(1/2) AAS
なんのフォルダなのか理解できない
プロジェクト(visual studio上でのプロジェクト)内じゃフォルダ切ることはないな
プロジェクトがある程度大きくなったらクラスライブラリに分ける
997: (ワッチョイ aa89-YeYq) 2021/12/19(日)10:16 ID:UEQjoSys0(1/2) AAS
シングルアセンブリ構造なのかな
998
(1): (ワッチョイ ff6e-n/si) 2021/12/19(日)10:33 ID:QHfeHH9E0(2/2) AAS
>>995
そうなんですね、気をつけます

>>996
たとえば画面数でも100超えて、機能部分のClassファイルも100越えてくると
いちいち該当ファイル探すのが面倒でフォルダに分けたって感じです
前はPHPのフレームワークとか触ったときは
たとえばcontroller model viewとフォルダも階層構造みたいになっていて
そういう感覚もあります
チームでやられていると、どこに何のファイルが散らばっているか
わからなくなったりしないのですか? きちんと仕様書があるから関係ないのですかね

やっぱりクラスライブラリ(DLL化?)もちゃんと理解しないと駄目ですよね
一人で作ってるので、DLL化するほうが手間な気がして避けてました
999: (アウアウウー Sa9f-f5lq) 2021/12/19(日)10:44 ID:n0pWJPWXa(2/2) AAS
どこに何がは命名の問題もあるんじゃないかな
classも変数も先頭、末尾にそれが何か分かるように名前つけてるから名前順にソートされてればすぐわかる
1000: (ワッチョイ aa89-YeYq) 2021/12/19(日)10:53 ID:UEQjoSys0(2/2) AAS
>>998
機能ごとにProjectを作るんだよ。
1001
(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1004日 15時間 55分 34秒
1002
(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
外部リンク:premium.5ch.net

▼ 浪人ログインはこちら ▼
外部リンク[php]:login.5ch.net
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.231s*