[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/03 00:48 / Filesize : 284 KB / Number-of Response : 1055
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part94



1 名前:デフォルトの名無しさん [2019/03/20(水) 18:57:36.47 ID:ZZcTomnN0.net]
!extend:checked:vvvvv:1000:512
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
www.visualstudio.com/downloads/

■コードを貼る場合はこちら
ideone.com/

■前スレ
C#, C♯, C#相談室 Part93
mevius.5ch.net/test/read.cgi/tech/1492818720/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

960 名前:デフォルトの名無しさん [2021/11/12(金) 14:47:41.59 ID:LR2kPQ3V6.net]
最近c言語習い始めた初心者なんですがwhile()のカッコ内の条件式に論理演算子を使うことはできますか
もしできるならif文の時のように入力すればいいのでしょうか

961 名前:デフォルトの名無しさん mailto:sage [2021/11/12(金) 14:56:20.52 ID:9PEUH50B0.net]
>>918
ここはC#の相談室なんだが・・・
まあ、ifの書き方と同じで良いですよ。

962 名前:デフォルトの名無しさん mailto:sage [2021/11/13(土) 11:48:36.10 ID:WnzBfGlt0.net]
C#10で文字列補間が大幅に最適化されたってことらしいけど、
stringオンリーの4個以内(Concatの最大引数以内)以外は$"{}"で繋げていった方がむしろパフォーマンス良くなるって認識でOK?

963 名前:デフォルトの名無しさん mailto:sage [2021/11/13(土) 12:46:38.78 ID:+IhS2fUi0.net]
ベンチマーク取れば?

964 名前:デフォルトの名無しさん [2021/11/17(水) 00:43:34.98 ID:qSiAIVdk0.net]
わけあってVisual Studioをインストールできない環境があるのですが、
その環境で
Windows標準のC#コンパイラ(C:\Windows\WinSxS配下のcsc.exe)

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

以上、よろしくお願いいたします

965 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 02:16:31.13 ID:+JwFzM8Ra.net]
できるけど君の場合どうせNuGetで積むんじゃね

966 名前:デフォルトの名無しさん [2021/11/17(水) 18:51:18.08 ID:qSiAIVdk0.net]
>>923
積むかどうかは分からないですね
私は超能力者ではないので

967 名前:デフォルトの名無しさん [2021/11/17(水) 20:50:08.18 ID:iuNg9UQr0.net]
ビスマルク「愚者は経験に学び、 賢者は歴史に学ぶ」

968 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 22:01:06.93 ID:GLXZB85w0.net]
そもそもコンパイル環境なら、VS Codeすらいらないんじゃ



969 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 22:23:38.77 ID:oaCBMm/O0.net]
VSはダメでVSCodeはインストールできるんだ
よくわからない環境だな

970 名前:デフォルトの名無しさん [2021/11/17(水) 22:48:30.86 ID:OY6bKJls0.net]
普通の会社で使えるのは2017までなんだよな

971 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 23:11:54.33 ID:SfknQ7Tq0.net]
うち2022買ったで

972 名前:デフォルトの名無しさん [2021/11/17(水) 23:14:07.67 ID:iuNg9UQr0.net]
まだ2021年なのに?

973 名前:デフォルトの名無しさん mailto:hage [2021/11/18(木) 09:00:28.34 ID:+Wtl3GaA0.net]
ジャップには分からんだろうが世界的には9月からはもう

974 名前:2022年だぞ []
[ここ壊れてます]

975 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 21:37:43.70 ID:cf0G7PVa0.net]
じゃあ日本は4月からもう2022年になってるのか

976 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 01:11:50.72 ID:4qGzfQ8F0.net]
コマンドが格納されたListを順番にサーバへ送信し、
1が返ってきたら次のコマンド送信、1以外かTimeoutしたら即中断みたいな処理を
ractiveでサクッと書けますか?

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

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

みたいな感じで。。

977 名前:デフォルトの名無しさん mailto:sage [2021/11/20(土) 22:43:08.40 ID:F7Qzv69PM.net]
cmdList
.ForEach(x => { if(x.SendAsync(cts.Token).Result == 1 ) throw new Exception() });

978 名前:デフォルトの名無しさん mailto:sage [2021/11/20(土) 22:58:08.09 ID:YK5Xmj5SM.net]
var results = await cmdList
.ToAsyncEnumerble()
.SlectAwait(async (c) => await c.SendAsync(cts.Token))
.TakeWhileAwait(async (r) => r == 1)
ToArrayAsync();



979 名前:デフォルトの名無しさん mailto:sage [2021/11/21(日) 00:02:36.10 ID:Z3Hc+Mmaa.net]
タイムアウトで値や例外が返ってくるタイプだったらいいけど
時間経過で勝手にタイムアウト判定しろよってタイプだと詰みそう

980 名前:925 mailto:sage [2021/11/21(日) 00:41:13.81 ID:7ZBVrJXA0.net]
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つだけ送信完了? */ )
);

>>935
やはりToAsyncEnumerbleからアプローチするべきなんですかね。。

981 名前:デフォルトの名無しさん mailto:sage [2021/11/21(日) 00:46:46.14 ID:7ZBVrJXA0.net]
Timeout関数の中身は
TimeSpan.FromMilliseconds( 3000 ) // 3秒
の間違いでした

982 名前:デフォルトの名無しさん mailto:sage [2021/11/21(日) 10:42:16.16 ID:XHu2qeE/M.net]
Rxは監視を行うもの
時系列に沿って要素が流れてくる時に使うもの
なのである要素が流れてきた時に次の要素なんてのはまだ無い
要素が最初から揃ってるListから始めるからわからなくなる
最初から揃ってるなら普通にLinqかforeachを使う
Listでなくストリームならこれでおk

var d = CommandStream
.Select(c => Send(c))
.Timeout(t)
.TakeWhile(r => r == 1)
.Subscribe();

983 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 11:57:57.31 ID:ceXBGTs50.net]
次元の違う配列では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個づつコピーするしかないのでしょうか?

984 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 12:19:49.36 ID:D7YZScOh0.net]
プリミティブ数値型の配列ならBuffer.BlockCopyできるけど
まあ多次元配列なんて肩身が狭いもんだから仕方ないね

985 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 12:40:02.71 ID:ceXBGTs50.net]
classを配列に保存しているから、BlockCopyもダメなんですよね・・・
あまり数も多くないはずなので、1つずつコピー(代入)していきます。

986 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 13:17:59.80 ID:/7sxHGOs0.net]
>>940
若干アンセーフだけど行ごとにならSpan利用すればマネージ型でも出来る
for (int i = 0, len2 = b.GetLength(1); i < b.GetLength(0); i++)
foo.CopyTo(MemoryMarshal.CreateSpan(ref bar[i, 0], len2));

987 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 13:21:12.71 ID:/7sxHGOs0.net]
MemoryMarshal.CreateSpan(ref bar[i, 0], 5000)とかやっても確か例外でないから最新の注意を払う必要はある
まぁこうやってもソースの長さがデスト以内であれば問題は生じないけど

988 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 04:59:13.07 ID:/1pFbOYv0.net]
入力を検知したときにメソッドを実行する処理において、
要素Aがnullでなく(エラー防止)、Aの子要素Boolがtrueの場合のみ処理をスキップしたい場合に いい書き方はありますか?
!A.Bool でメソッドを実行にしてしまうとAがnullだったときに実行されなくなってしまうので……
ひとまずgotoを使って以下のようにしているのですが、もっとスマートな書き方ありますでしょうか

if (Input)
{
if(A != null){
if(A.Bool){
goto INPUTSKIP;
}
}
Method();
}
INPUTSKIP:



989 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 08:06:18.80 ID:OKsF9IR00.net]
null条件演算子 null合体演算子 で検索

990 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 08:23:25.29 ID:V78zeb460.net]
>>945
こう?
if (Input)
{
if (A != null && A.Bool)
{
// INPUTSKIP
}
else
{
Method();
}
}

991 名前:デフォルトの名無しさん [2021/12/12(日) 09:36:50.05 ID:G8rzE1470.net]
>>947
それを反転させて
if (Input)
{
if (A == null || !A.Bool)
{
Method();
}
}

992 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 10:16:02.74 ID:2rSkF5hnM.net]
>>945
goto 使いたくないと言うなら A が null か、A.Bool が false の時に処理したいってことだから普通に

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

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

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

でいける
個人的にはこの場合だと上の方がわかりやすいと思う

993 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 10:56:54.04 ID:MLGY87ca0.net]
後藤さんが出てくると素人臭が漂ってくるからな

994 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 12:26:50.16 ID:V78zeb460.net]
例外も後藤さんみたいなもんだが

995 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 12:48:33.01 ID:/1pFbOYv0.net]
AがnullだったときにORで並べてA.Boolの条件式を使ってしまうとそんなもんないよってエラーを吐くのでは、
と思い込んでいたのですが大丈夫なんですね……!
!A.Boolだけで判定したときに怒られたので頭凝り固まってました!

ありがとうございました!

996 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 13:09:03.73 ID:I9KyYKSc0.net]
>>952
いやショート サーキット評価だからエラーにならないだけ
https://docs.microsoft.com/ja-jp/cpp/cpp/logical-or-operator-pipe-pipe?view=msvc-170

997 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 13:17:35.22 ID:/1pFbOYv0.net]
>>953
ああーなるほど、ORの場合どれか1つでも満たされてれば実行されるから
左側が条件を満たしてたら右側はもうチェックされないのか!!
良いこと知れました! ありがとう!

998 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 13:23:43.83 ID:V78zeb460.net]
vb.netのorだとエラーになる



999 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 13:31:38.41 ID:I9KyYKSc0.net]
>>954>>955
論理演算子2つ並べるのがショート サーキット評価

1000 名前:ネんだけど
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12181009427
次から初心者スレ行ってくれ
[]
[ここ壊れてます]

1001 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 14:02:55.63 ID:WWmfWzxPM.net]
>>955
OrElse 使え

>>956
> 論理演算子2つ並べるのがショート サーキット評価なんだけど
とか言う玄人w

1002 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 14:06:00.32 ID:a4cuZ/Mwa.net]
vb恐ろしいな。そんなのバグの元じゃん

1003 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 15:11:49.02 ID:happ85M4M.net]
はあ?

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

ってなってるだけやぞ

1004 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 09:12:51.67 ID:7pnzZ4JB0.net]
>>945
条件式をネストしたり&でつないだりと複雑にするのは難読性が高くなるから分けたほうがいいだろ
どういう条件ならMthod()を呼ぶのか明確に

if(Input){
//事前処理
judge=(A==null) ? true: //Aがnullのとき
A.Bool==false ? true: //Aの子要素がfalseのとき
false; //それ以外
if(judge) Method();
//共通処理
...
}

1005 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 09:51:11.81 ID:g+jxvcxo0.net]
>>960が分かりやすく見えない…
>>948が誰が見ても一目瞭然でいいと思うわ
シンプルな条件分岐なんだからこだわる必要ない

1006 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 11:44:51.75 ID:zykNHKxZ0.net]
skipするほうが例外的処理だろうからskip条件を明確にしてearly returnしたほうがいいと思う
論理式の細かい書き方よりも意図が伝わるかどうかのほうが大事

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

bool ShouldSkip(A a) {
return a?.Bool ?? false;
}

1007 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 14:01:49.98 ID:z2L+bKXw0.net]
メソッドにすんのはいいけど、>>945 が入力を検知したときメソッドを実行したいって言ってんだからその通りに書けばいい
設計書通りに条件分岐すりゃいいのに無駄に置き換えて実装する人多いけどなんなんだろうね

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

bool 入力検知(bool input, A a){
return input && a != null && a.Bool;
}

1008 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 14:22:24.69 ID:6wRfW5vFa.net]
昼飯食いながら適当だから何か勘違いしてるかもしれないけど、>>945って要は
ある条件を満たした時だけMethodを実行したい、それだけでしょ?

だったら四の五の言わずに素直にそう書くのが一番じゃないの。
if( input && (!A?.Bool ?? false)) Method();



1009 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 14:29:51.31 ID:KmNdaGVTa.net]
求めてるのは「もっとスマートな書き方」だからな
主観的な問題だから、俺らが言えるのは「こういう書き方もある」ってのだけ
正解(どれが一番か)を決めれるのは本人だけ

1010 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 14:47:42.73 ID:6wRfW5vFa.net]
コードでも文章でも読み手に「要するにそれってどういうこと?」って思わせないのが一番。
これもコードでも文章でもそうだけど、読みにくいものは書いた本人がそこをよく理解せずに書いている。

1011 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 15:06:50.29 ID:WUjUV8JM0.net]
ReSharperが薦めるように書き換えたら、何をしてるのかわからなくなった。

1012 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 15:10:10.54 ID:pxTkbBAYM.net]
最近のc#はマルチパラダイムで構文が増えてカオスだ

1013 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 16:35:33.81 ID:zykNHKxZ0.net]
>>963,964
>>945を読む限りでは入力を検知する処理と
検知した後に特定の処理をスキップするかどうかを判断する処理は別じゃないのかな?

「A.Boolがtrueなら入力を検知しない(or 入力を無視する)」ってことなら
入力よりも先にA.Boolを確認するよね

1014 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 16:52:41.40 ID:KmNdaGVTa.net]
ちなみに回答ざっと見てこんなだな
こういうのはコードが長くなっても動作が分かりやすい方がいいと思う

>>947,948,960
おk

>>962,963
バグあり

1015 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 22:23:58.46 ID:s0FccnDO0.net]
>>968
それ。言語の表現力が豊かでも、自分やチームで一貫性を担保するのが面倒ξ

1016 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 09:16:58.78 ID:cLXTODpXM.net]
>>971
そして、コーディング規約が底辺プログラマーに合わせられて生産性が低下する

1017 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 20:46:07.43 ID:4rMew3mV0.net]
どうせ好き勝手に言語機能使って上がる生産性なんて微々たるもん

1018 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 23:18:34.83 ID:gu+YKYdX0.net]
.net の 1.1 で書くとめちゃくちゃ不便で絶望するぞ



1019 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 23:43:50.97 ID:5qKKFixV0.net]
linqがある.NET Framework3.5ですら今これでやれって言われたら不便に感じるしなぁ
使えるものは使わせてもらった方が全然楽だわ

1020 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 08:20:32.57 ID:YtxEX99t0.net]
色々使えた方が個人的に楽だと思うのは否定しないが、もっともらしく「生産性が上がる」とか言っちゃうと
意外とそうでもなかったり。

1021 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 09:41:14.43 ID:flSodCtX0.net]
>>974
特にList<T>が無いのはキツイわ

1022 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 12:10:36.77 ID:KtX6zlRp0.net]
心配しなくても今どき1.1で書いたり書かされたりすることはないでしょ

1023 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 16:03:58.38 ID:w2vh5jVl0.net]
1.1とか極端すぎるやろ

1024 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 16:14:56.34 ID:Jy+USlABM.net]
2.0の知識で止まってるヤツも多いよね

1025 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 16:57:55.56 ID:RMHVQ2YW0.net]
さすがに今どきvar使うなとかLINQ使うなとか言われないよね?

1026 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 17:25:02.67 ID:ik5KT4gs0.net]
>>981
var使うとわからなくなるというのは名称が明示的になってないだけだと思うわ

1027 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 17:31:22.22 ID:KBNxuXv0M.net]
>>982
ハンガリアン記法?

1028 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 18:19:16.59 ID:UGnWEqDI0.net]
MS公式はvar推奨してるけどさすがにintとかstringとか基本的な型はvarにはしないな



1029 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 21:30:02.16 ID:lA94GyTo0.net]
明示的に型を書かないとダメなところ以外全部varで書くよ

1030 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 21:44:12.20 ID:M2QFYQSl0.net]
最近はnew()で書けるようになったから、極力varはやめてる
Hoge hoge = new();

実装当初の想定通りlinqの戻りくらいかなvar、使うの。

1031 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 23:22:27.06 ID:l+MEhncN0.net]
new()使えるのってc#いくつからだっけ

1032 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 23:43:54.17 ID:NZjG441V0.net]
はやくおれのレベルまで上がって来い
上で待ってるぞ

1033 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 00:21:19.35 ID:R2Peltay0.net]
new()で書けるようになったけど、コンストラクタで初期設定値渡すようにしちゃうから全然使わんなぁ。
セッター潰してコンストラクタで設定するのが好き

1034 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 07:48:14.53 ID:Ymr34XoE0.net]
>>987
C# 9.0

1035 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 09:44:30.84 ID:P4pOcLuS0.net]
C#がどんどんボクのしらないものになっていってる
いっそC##やDと名乗っていただきたい
(Dは既にある、は受け付けない)

1036 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 10:15:25.85 ID:80W3ywqF0.net]
C#に毛が生えた程度だろ
C丼でええがな

1037 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 10:54:52.18 ID:Ni3FtdydM.net]
c井

1038 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 11:01:26.24 ID:DM4zUQcN0.net]
C⛩



1039 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 11:42:40.19 ID:plhBUTFD0.net]
C升

1040 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 11:47:41.44 ID:e2PzMi3oM.net]
>>991
ほんと、氷川きよしくらい変わってしまった

1041 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 23:46:42.90 ID:vtDDQtO+0.net]
if(item is {} a){
...
}
null判定でこんな書き方あるんだな。Resharperさんに提案されて初めて知ったわ。
個人的にはあまり使いたくないけど。

1042 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 00:40:01.77 ID:fAwtu2PR0.net]
>>997
それやるとaの色がローカル変数色にならず白のままになるのが不満なんだけど俺の環境だけか?

1043 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 02:39:12.84 ID:KpFo6Hw/0.net]
C林

1044 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 11:21:38.48 ID:b89m5ifd0.net]
>>997
C#9なら
if (item is not null)
って実に直感的に書けるから早くこっちにこいよ…

ところでその式でaで受ける意味なくね?

1045 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 13:42:40.65 ID:KpFo6Hw/0.net]
C極

1046 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 09:44:58.73 ID:QHfeHH9E0.net]
WinFormsを独学でやっているのですが教えて下さい
そこそこの規模のソフトは作れるようになってますが
VSで開発していくうえで、フォルダ構成ってどう考えればいいですかね
いままではDB関連をDBフォルダ
フォームはFormにまとめてさらにその中に機能別にフォルダを
細かいクラスファイルはClassというフォルダに
DBとの受け渡し(sql書いてFormとの受け渡しModelみたいなもの?)は
Modelというフォルダにまとめています

プロの皆様はチームで作っていかれる際に
会社によりけりかもしれませんが一般的なフォルダ構成の考え方ってあるんでしょうか

1047 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 09:58:37.55 ID:eMi6YEPC0.net]
そんなもの存在しないから適当でいいよ
まぁあえて口出しするならFormフォルダはFormクラスと名前が被るからやめとけって位かな

1048 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 10:00:48.95 ID:n0pWJPWXa.net]
なんのフォルダなのか理解できない
プロジェクト(visual studio上でのプロジェクト)内じゃフォルダ切ることはないな
プロジェクトがある程度大きくなったらクラスライブラリに分ける



1049 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 10:16:13.92 ID:UEQjoSys0.net]
シングルアセンブリ構造なのかな

1050 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 10:33:08.48 ID:QHfeHH9E0.net]
>>1003
そうなんですね、気をつけます

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

やっぱりクラスライブラリ(DLL化?)もちゃんと理解しないと駄目ですよね
一人で作ってるので、DLL化するほうが手間な気がして避けてました

1051 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 10:44:47.17 ID:n0pWJPWXa.net]
どこに何がは命名の問題もあるんじゃないかな
classも変数も先頭、末尾にそれが何か分かるように名前つけてるから名前順にソートされてればすぐわかる

1052 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 10:53:09.81 ID:UEQjoSys0.net]
>>1006
機能ごとにProjectを作るんだよ。

1053 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1004日 15時間 55分 34秒

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






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<284KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef