◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

ふらっと C#,C♯,C#(初心者用) Part150 YouTube動画>1本 ->画像>1枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1616471904/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん (ワッチョイ 2b02-+i0H)
2021/03/23(火) 12:58:24.10ID:ACoFzk2L0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part149
http://2chb.net/r/tech/1608085775/
■関連スレ
C#, C♯, C#相談室 Part94
http://2chb.net/r/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/
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
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2デフォルトの名無しさん (ワッチョイ 5168-u+xM)
2021/03/23(火) 18:03:39.73ID:VsSEePUk0
List<乙>
3デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/23(火) 21:59:18.80ID:EIK7uDnA0
コンソールでRPGみたいなゲーム作ろうとしてるけど
クラスの作り方がいまいち思い浮かばない
例えば
レベルアップした時にHPとかMPとかのクラスのフィールドをいじりたいけど、レベルクラスに入れるとステータス取るときに毎回status.level.hpみたいにレベルを通らないといけないのが厄介
かといってステータスクラスの中にレベルクラスとHPクラスを内包してしまうとレベルクラスのメソッドが呼び出された時にhpクラスのメソッドが呼び出せない…(staticはなしとして)

どうすれば良いのだ
4デフォルトの名無しさん (ワッチョイ 9301-lXNI)
2021/03/23(火) 23:03:31.32ID:CY92qFOb0
レベルやHPをクラスにしたい理由は?
どういうメソッドを想定してるの?
5デフォルトの名無しさん (アウアウウー Sa5d-7TK3)
2021/03/23(火) 23:04:14.83ID:zRupaTqla
>>3
単純に、ステータス、レベル、HP、MPをメンバ変数に持つクラスにすりゃええんちゃう?
レベルアップメソッドを呼ばれたら、それぞれを更新するだけ

最初は難しく考えないで、ありのまま設計して実装してみる
で、破綻しそうなら設計を変えて再実装
そういう試行錯誤も楽しいかもよ
6デフォルトの名無しさん (ワッチョイ 51a7-FMtt)
2021/03/23(火) 23:32:37.84ID:3AlrkluQ0
ゲームはすべてのリアルタイムデータをエクセルに並べるつもりでプログラムを組め
物体同士の相互作用処理が一番多くてかつそれが7つも8つも同時に関わるので
オブジェクト指向言語の機能が役に立たないどころか悪影響すら及ぼす
絶対に使わないほうが楽に組めるぞ
まあ、まずやってみろ
7デフォルトの名無しさん (オッペケ Sr85-DLm1)
2021/03/23(火) 23:52:01.54ID:oR7E8wqDr
偉そうなやつだな
8デフォルトの名無しさん (ワッチョイ b102-+i0H)
2021/03/23(火) 23:59:45.77ID:ACoFzk2L0
でもまあ、とにかくやってみるってのには賛成。
根気よく続けて、それにちょっとした向上心があるなら、そのうちそれなりにはなる。

>>3 の人は、直接的なアドバイスを求めてるんだろうけど、ちょっとアドバイスしたくらいでどうにかなるようなもんでもないなぁって感じ。
9デフォルトの名無しさん (ワッチョイ 5168-u+xM)
2021/03/24(水) 03:06:14.87ID:hZzg7ROH0
>>3
オブジェクト指向言語だからクラスは物、オブジェクトであって、
RPGのキャラはそれぞれステータスを持つオブジェクト=クラス。
キャラにはステータスがあるなら、それぞれのキャラクラスにはステータスクラスが保有されるべき。
・・・などと自分なりに整理して、設計してみてはどうか。
その設計で厄介なことがあっても、設計に納得出来るなら、それは通るしかない厄介事なのかもしれない。
それを回避したり厄介を軽減する手段はいろいろ有ると思う。
やってれば身についてくる。その過程がまた楽しい。
設計が正しいかどうか、それは自分が決めればいいが、想像が付かないなら書籍を漁る。
10デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/24(水) 06:37:38.52ID:k6isLik00
3だけど
一応4回くらい違う設計で同じ処理のコードを作ってみたんだが、やりたいことは
親クラスに子クラス1,2がいて
子クラス1のフィールドが更新されたとき、子クラス2のフィールドを更新したい

一応現状はref使ってインスタンスされてる子クラス2のアドレスを保存して子クラス1で間接的に更新してるけど
子クラス3,4,…って増えた時に毎回コンストラクタの引数変えて処理追加させるのは冗長的だなぁと思って違うやり方したいと考えてるけど思いつかない…
11デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/24(水) 06:43:09.14ID:k6isLik00
>>4
パラメータクラスに最大値、最小値、現在値をプロパティで持つようにして
HP、MP、LV、EXP、クラスをパラメータクラスを継承して作ろうとしてる
さいごにステータスクラスとしてHPからEXPをフィールドに持つようにしてコンストラクタでインスタンス化させるようにしてる
12デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/24(水) 07:00:45.85ID:k6isLik00
class Prameter{
private int _Max;
public int Max{
set MaxUpdate(value);
get return _Max;
}

protected virtual
void MaxUpdate(int val){
_Max=val;
}

最小値も上と同様
現在値も上と同様※
}

※少し実装とは違うけどざっくりとしたらこんな感じのクラスを現状HP,MP,Level,exp全クラスにそれぞれ継承してる
レベルアップとかは現在値の更新時処理のoverrideで処理変えたりして実装してるんだ
13デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/24(水) 07:19:03.14ID:k6isLik00
>>6
やっぱりそうか。Cのような関数での設計なら単純で作りやすいんだがオブジェクト指向の練習と思ってやってると意外と難しかった。
ちょうど7つも8つもパラメータが増えてきていちいち引数変えたりするの面倒やしクラスにするメリットがあまりないな…
14デフォルトの名無しさん (ワッチョイ 51a7-FMtt)
2021/03/24(水) 07:39:20.22ID:IIHDBzfT0
>>13
7つ8つはパラだけじゃなくてオブジェクトもやぞ
アクセスを限定するオブジェクト指向言語の機能は絶対に役に立たん
15デフォルトの名無しさん (ワッチョイ 9301-lXNI)
2021/03/24(水) 12:54:19.52ID:C9/npL5e0
>>11
ステータスクラスがHP, MP, LV, EXPの最大値、最小値、現在値をそれぞれ直接int等で持つ構成と
ステータスクラスがHP, MP, LV, EXPの各クラスのインスタンスを保持する構成とを比較して
後者にどういうメリットがあるのか、もしくはないのかを考えればいいんでないのかな?

>>10
>親クラスに子クラス1,2がいて
親クラス・子クラスという表現は一般的に継承関係を指すので
あるクラスが別のクラスのインスタンスを保持してる場合は親クラス・子クラスという表現は使わないほうがいい

>子クラス1のフィールドが更新されたとき、子クラス2のフィールドを更新したい
今回のケースで使うべきかどうかは微妙だけど
フィールドが更新されたときにそれをイベントとして通知するようなパターンを使えば
クラス1のコードでクラス2を参照する必要がなくなって通知先が増えてもクラス1を変更しなくてよい
16デフォルトの名無しさん (ワッチョイ 9301-lXNI)
2021/03/24(水) 13:06:41.79ID:C9/npL5e0
https://paiza.io/projects/jSt0Q60s11SN8n8JJzO_7Q
これ、とあるゲームのキャラクターステータスだけどベタなキーバリューペアで管理してる
スキルや装備によってバトル中のHPや攻撃力/防御力とかが変化するから本来の値と底上げされた値は別項目で管理されてる
17デフォルトの名無しさん (ワッチョイ 5168-4Ddi)
2021/03/24(水) 15:14:08.35ID:hZzg7ROH0
何か既存のRPGでやってるステータス計算の再現なのかな。
C#の仕組みを凝ると、デバッグが怖そう。
18デフォルトの名無しさん (スププ Sd33-PDCb)
2021/03/24(水) 17:52:37.32ID:JXkKcrLid
なるほど、
皆様、様々なアドバイスありがとうございます。
特に親、子クラスとかのニュアンスや使い方の指摘はありがたい。

ちなみにゲームの再現はしてないけど、イメージはCUIのドラクエのイメージ。それをオブジェクト指向の練習としてクラスで作ってみようとして一番最初で詰んだという経緯っす。

メリットデメリットは正直オブジェクト指向が初めてだからよくわからないってのが本音。ただ知識として幅は広がってる気がする。MVCモデルとかで実現するのかなーとか考えたりイベントをリストで管理するのかなーとか色々模索はしたけど結局いい感じにならず苦難中。
19デフォルトの名無しさん (ワッチョイ 937c-4Ddi)
2021/03/24(水) 17:59:16.27ID:HEdEJwPg0
最初はあんまり沢山クラス作らない方がいいかと思う
段々とここは分離した方がいいとか継承した方がいいとか分かってくるので
とにかく動くものを作れるかどうかで勉強するにしても先に進めるかどうかの分岐点になるからな
20デフォルトの名無しさん (ワッチョイ 0b33-zgiT)
2021/03/24(水) 18:09:40.53ID:spck33He0
オブジェクト指向の学習が目的なら、ポケモンで学ぶオブジェクト指向みたいなのがいくつかあるから
そういったPOSTを眺めるとなんとなく雰囲気がつかめるかもしれない
21デフォルトの名無しさん (アウアウウー Sa5d-oXDN)
2021/03/24(水) 18:29:08.45ID:c5QGfFFqa
ゲーム自体があんまりOOP向きの題材じゃないかもしれないよ。

モデル化する必要があるのはゲームの世界を成立させている「舞台装置」
であってプレーヤーの目に見える表層的なキャラじゃなかったりすると思うんだけど
前者は得てして抽象的な存在になるし、どうしても後者に引きずられてしまう。

知らんけど。

大昔シューティングゲームとかボードゲームがいかにOOP向きじゃないかって
論争があったねw
22デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/24(水) 18:34:43.36ID:7kvkVNgG0
そうか…
既にOOPに対して嫌悪感を抱き始めるこの始末。
とはいえ継承ができたりオーバーライドして変更したりできるのは良いね
〇〇/××って形の表示するのもは全部同じパラメータクラスで扱えるし、ちょこっと変えたいとなるとオーバーライドで消したりオーバーロードで処理増やしたりできるもんね。

うーん、やっぱC#はよーわからんw
23デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/24(水) 18:43:27.34ID:1tcqqVj20
ちなみに、C#(プログラミング)初心者が理解しやすそうな題材ってあります?
まだhelloworldから変数作って弄るよりかはゲームのほうが楽しめるんかなと思ってそれで始めたらドツボ入ったんだよね。
難易度も低めが良いけど…(マルチスレッドやGUIでないようなもの)
24デフォルトの名無しさん (ワッチョイ 937c-4Ddi)
2021/03/24(水) 18:57:55.30ID:HEdEJwPg0
どういうものを最終的に作りたいかによるけどゲームが目標なら
最初からUnityで勉強するのもアリかなと思う

勉強ならコンソールアプリの方が文字だけの世界だから分かりやすいけど
最初からWinFormsのプロジェクト作ってボタンやテキストボックスなど配置して
GUIのアプリのつくり方を勉強するのも良いかも知れない
GUIだとButtonにはClickイベントが、TextBoxにはTextChangedイベントがあるとか
(デザイン画面のボタンなどをダブルクリックすれば、上記の説明した一番使うであろうイベントの
実装が追加されるようになっている)
そういうイベントにより処理を行うみたいな形になるので、リアルタイムのゲームとは違った感じになるかと

どっちにしてもプログラムしてみて動かしてを繰り返し出来る方が望ましいかな
25デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/24(水) 19:03:33.84ID:1tcqqVj20
なるほどなー
よく考えたら最終的にはGUIのアプリケーションプログラムが作りたいと思ってた。ゲームは特に好きじゃないけど好きな人が多そうだから説明する時にも役立つかなとは思ってゲームにしてた具合。
先にFormやるのもありかも
26デフォルトの名無しさん (スププ Sd33-n6qz)
2021/03/24(水) 21:14:45.45ID:6P4Y/Xh7d
ライフゲーム
27デフォルトの名無しさん (ワッチョイ 9301-lXNI)
2021/03/24(水) 21:41:45.26ID:C9/npL5e0
いろんな種類のキャラを動かす系のゲームはOOPに向いてると思うけどな
実際そういうゲームのほとんどがオブジェクト指向で作られてるわけで

プログラミングを学ぶ目的に適してるかと言われると微妙だが
28デフォルトの名無しさん (ワッチョイ 51a7-FMtt)
2021/03/24(水) 21:51:54.97ID:IIHDBzfT0
>>27
向いてない
オブジェクト指向って
オブジェクト同士の処理を綺麗に書く
ように作られてない

全オブジェクトが存在するシーンにほぼすべての処理を記述することになる
マップ情報がないとキャラは移動すらできないことがすぐにわかる
ではマップとキャラのデータが混在した処理をどこに記述するべきか?
シーンに決まってる
なのでゲームシステムに関わるほぼすべての処理をシーンに記述することになる
もう仮にオブジェクト個別の処理が2〜3個見つかった程度で個別のクラスなんかに書くのはバカってぐらい
全部シーンに書くことになる
29デフォルトの名無しさん (ワッチョイ 5168-4Ddi)
2021/03/25(木) 06:17:54.99ID:PnLvSLd80
言語そのものよりライブラリに何があるのか把握しきれなくて辛い。
自分でクラスを作ったら、もう既に.Netにあったりするし。
辞書を熟読するような事前の勉強が必要なのかな。
30デフォルトの名無しさん (ワッチョイ 51de-FMtt)
2021/03/25(木) 07:11:43.36ID:/8oIOqtL0
>>29
必要なのは作る前にググる癖じゃね?
31デフォルトの名無しさん (ワッチョイ d133-3UcT)
2021/03/25(木) 08:33:30.77ID:tiLz+LJ90
>>29
わかる。会社に入るとドキュメントの無いライブラリも加わる。
32デフォルトの名無しさん (ワッチョイ 5924-FrbH)
2021/03/25(木) 08:39:46.38ID:qKMPIZcm0
ゲームって普通にOOP学習にはもってこいじゃね?
一見全く種類の違う自キャラや敵やNPCなどを一つのベースクラスから派生させたりとかオブジェクト指向の有難みを享受しやすいジャンルだと思うけどな
まぁそういうことせずとも一度C言語を使ってみればC#を使ってる時点でデフォでめちゃくちゃオブジェクト指向の恩恵に授かってるというのを認識できるけど
33デフォルトの名無しさん (スフッ Sd33-u+xM)
2021/03/25(木) 09:28:18.12ID:WBb7w08Pd
ゲームだと単純に楽しいし、良く知ってる世界だし。
異世界小説が流行るのも、みんなリアルよりゲームのほうが詳しいからね。
34デフォルトの名無しさん (ブーイモ MMcb-92UB)
2021/03/25(木) 13:24:44.00ID:P2foE7HjM
ゲームはOOPより関数型のがやりやすい
OOPだとゲーム状態が大量のオブジェクトに分散してしまい管理が追いつかなくなる
35デフォルトの名無しさん (ワッチョイ 5335-n6qz)
2021/03/25(木) 13:26:41.67ID:KsV0Sf9V0
パラメータ管理とレンダリングは別視点
36デフォルトの名無しさん (ワッチョイ 695f-R0OD)
2021/03/25(木) 13:29:23.03ID:Nsykn7+b0
unityやwpfで何か作ったらいいんじゃない?
嫌でもOOPを使うことになるし
37デフォルトの名無しさん (ワッチョイ 8bbb-Q5Cn)
2021/03/25(木) 15:14:45.90ID:mlbm7rgK0
Unityはやめといたほうがいいんじゃん?
ゲーム特有の定石が多い上にあまり公開されていないので、なかなかOOPを活かせるようなコードが書けるもんじゃない
38デフォルトの名無しさん (ワッチョイ f568-UUyU)
2021/03/26(金) 06:50:34.94ID:M+ibeJ+i0
なんか作るとき、ついつい無駄にインターフェース作ったり、クラスを継承させたりしたくなる。
後で使うかもって置いといても、結局、役立たずで無駄になったり。
39デフォルトの名無しさん (ラクッペペ MM96-3uWH)
2021/03/26(金) 08:06:06.50ID:kpMAymvOM
YAGNI原則
40デフォルトの名無しさん (ワッチョイ b1b5-lMfL)
2021/03/26(金) 14:55:15.51ID:OgsXGrRW0
質問です。
'string[][]'と'string[*,*]の違いは何ですか?

List<string[]> lists = new List<string[]>();

string[,] = lists.ToArray();
で二次元配列にしようとすると、

CS0029: Cannot implicitly convert type 'string[][]' to 'string[*,*]'

とエラーが出て困っています。
41デフォルトの名無しさん (ブーイモ MMa6-OegW)
2021/03/26(金) 14:58:50.52ID:jmlXC9C1M
[][]は配列の配列
[,]は二次元配列
42デフォルトの名無しさん (ワッチョイ b1b5-lMfL)
2021/03/26(金) 15:04:21.89ID:OgsXGrRW0
>>41
なるほど、理解出来ました。
ありがとうございました。
43デフォルトの名無しさん (エアペラ SD95-H12r)
2021/03/27(土) 08:26:55.12ID:8mKnzpiaD
>>1
関連スレ
ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
http://2chb.net/r/tech/1469538912/
44デフォルトの名無しさん (ワッチョイ 6924-Q1TI)
2021/03/28(日) 08:30:33.61ID:w0FgUNmI0
>>38
「いつか使うだろう」という動機で作る機能の9割は結局使われないという法則があってだな
45デフォルトの名無しさん (ワッチョイ 6502-12p/)
2021/03/28(日) 10:40:20.81ID:i/QSKAGe0
でも、ついでだし作っとくか、で作ったやつがその後のバグ対に効果大なこともあったな。結構。

「起こる可能性のあることはいつか必ず起こる」ってのはマーフィーの法則だっけ。
アタマの片隅にでも置いておくと、後で助かることがままある。
46デフォルトの名無しさん (ワッチョイ b662-GHqT)
2021/03/28(日) 11:33:59.11ID:wZjOpvsr0
一人で作ってるならいいんだけど別の人が対応する時に混乱させるだけなことが多いからな
チーム開発では起こらないことを無駄に考えてしまうのはよくないって場面の方が多い
47デフォルトの名無しさん (テテンテンテン MM96-e9+l)
2021/03/28(日) 12:40:48.84ID:UWp6RwLlM
個人的には>>45に同意
要件レベルだと「いつか使うかも」で入れた機能はゴミでしかないが、
開発者が気を利かせて入れたものは役に立つことが多い
48デフォルトの名無しさん (ワッチョイ f6de-q+au)
2021/03/28(日) 13:48:24.42ID:mEH1r/L60
>>47
センス悪い奴って絶望的じゃん
ユースケースを脳内で構築できないっつーの?
49デフォルトの名無しさん (アウアウウー Sacd-1mGO)
2021/03/28(日) 14:10:23.36ID:maSv/WgVa
必要になると思って書いておいたプロパティやメソッドが結局まったく使われなかった、
っていうのはないことはないと思う。

YAGNIって普通はこういう話じゃないの?

>>38が言ってるような要らんInterfaceや要らん継承関係を作ってしまうって
YAGNIとちょっと違う気がするし、そもそも普通はあんまりやらん気がするなあ。
50デフォルトの名無しさん (ワントンキン MM46-e9+l)
2021/03/28(日) 14:18:03.89ID:YWsxET0EM
コードレベルで呼び出されないのと運用上使用されないのは別問題だよ
前者はほぼ例外なく無駄無価値無意味なんで、俺がコードレビューするなら基本的には消させる
51デフォルトの名無しさん (ワッチョイ 2578-UUyU)
2021/03/28(日) 20:04:07.22ID:GjVtou7p0
スレチ
議論は議論スレでどうぞ
52デフォルトの名無しさん (ワッチョイ b1b5-lMfL)
2021/03/28(日) 20:15:57.09ID:AfIP7Kkq0
>>44-50
横から便乗で質問ですけど、
「いつか使うだろう」とインターフェースや継承関係を作っておく自体は推奨されることですか?

例えば、インターフェースや継承関係が無くても、直付けで作れてしまう訳じゃないですか。
むしろ、そっちの方が楽(というか、直付けでしか作れない人もいますし)。
ただし、物事が複雑化してきたときに、インターフェースや継承関係があると拡張しやすい。

これって上級者なら、(どんなに小さいプログラムだろうが)常にインターフェースや継承関係を作った方がいいのか、
それとも、ケースバイケースで「このぐらい複雑ならインターフェースや継承関係が要る」という判断基準に則って作った方がいいんですか?
53デフォルトの名無しさん (ワッチョイ b1b5-lMfL)
2021/03/28(日) 20:16:36.58ID:AfIP7Kkq0
>>51
すれ違いになりました。
議論スレ、行きます。
54デフォルトの名無しさん (アウアウウー Sacd-1mGO)
2021/03/28(日) 20:49:47.68ID:qVTIlpQ/a
>>52
推奨する人は確実にいないと思うよ。
「ついやっちまう」ことも普通はまずないんじゃないか。
IClonableみたいな実例があるから皆無とも言えないけど。
55デフォルトの名無しさん (ワッチョイ 328b-UUyU)
2021/03/29(月) 18:40:55.68ID:dJ0caBH40
Seleniumで closeとquitをセットで使ってましたが
quitさへ使えばプロセス残りも防げて万能という認識で良いでしょうか?
56デフォルトの名無しさん (ワッチョイ 328b-UUyU)
2021/03/29(月) 18:41:48.60ID:dJ0caBH40
というのもなぜか、最近アップデートされたChromeドライバーのバグなのか
driver.close();を実行するとやたらと時間が掛かる様になり、ストレスを感じています。
57デフォルトの名無しさん (スププ Sdb2-uiCP)
2021/03/31(水) 11:53:07.69ID:/skdgMDzd
演算子のオーバーロードを定義したクラスを継承してそのクラスのオブジェクト同士を足したりしたいんだけど、
継承した子クラス同士足し算してもオーバーロードしてるのが親クラス返してエラー出る…
なんとかなりませんか…
58デフォルトの名無しさん (エアペラ SD89-H12r)
2021/03/31(水) 12:51:53.66ID:rGwDN8jFD
コーのせられる?
59デフォルトの名無しさん (アウアウウー Sacd-1mGO)
2021/03/31(水) 14:43:21.83ID:FnhDsC03a
>>57
当たり前のことが起るべくして起こってるようにしか聞こえんよ
何か盛大に勘違いしてない?
60デフォルトの名無しさん (スププ Sdb2-uiCP)
2021/03/31(水) 17:43:40.43ID:/skdgMDzd
>>59
その当たり前の事がわからないのですが…
子クラスのクラス変数に親クラスのインスタンスを入れれないのはわかりますが、それに対してどうすれば良いのですかと質問しています。
61デフォルトの名無しさん (アウアウエー Sada-OegW)
2021/03/31(水) 18:12:45.92ID:k0t0X50Ga
子クラスどうしの演算子を新しく定義する
62デフォルトの名無しさん (ワッチョイ d573-XUMB)
2021/04/02(金) 02:49:16.07ID:4F6/LV520
いやいやゲームはメチャクチャOOPに向いてる。
ゲームエンジンがプロパティペインで物を制作管理していくのが中心になってるってことは
全体としてOOPと相性がいい。

そらそうよ、鋳型と各オブジェクト、その相互作用、隠蔽やインターフェース、
まさにオブジェクト指向言語の基礎サンプルやエクササイズが綺麗にヒットしやすいのがゲームよ。
63デフォルトの名無しさん (ワッチョイ 4ba7-WZCG)
2021/04/02(金) 03:35:33.76ID:p2YnI9xf0
>>62
エアプ乙
ゲームはオブジェクト同士の関連処理が一番多い
それを綺麗に書く処理はオブジェクト指向言語には無い
これを議論するといっつも言語機能に用意されてないもんだから色んなワンダーランドがご披露されるだけのクソ展開になる
いいか
そんなもんないんだ
お前がどう書くかなんて俺は興味ない
ただ言語の機能にない
それだけだ
64デフォルトの名無しさん (オッペケ Sr01-26+2)
2021/04/02(金) 16:59:32.21ID:kD/N/lyPr
たんに解がひとつではないだけの話じゃね?
そんなの普通のGUIアプリ一つ取ってもそうじゃん
65デフォルトの名無しさん (ブーイモ MMa9-ehU2)
2021/04/02(金) 17:30:53.01ID:bweg+I/EM
文面見ればオブジェクト指向を理解して言ってるのかどうかわかるやろ
66デフォルトの名無しさん (ワッチョイ 0d68-0pr0)
2021/04/02(金) 21:13:27.05ID:qd7mj8LF0
議論スレに行った方が良いのか判らないけど、
俺も初心者なんだけどC#の機能を試したくってさ。
基本キャラからキャラ種類別にクラス継承させたりして楽しんでたよ。

でもゴリゴリにスペックを切り詰めるようなゲームだと、そんな余裕はないのかもな。
67デフォルトの名無しさん (エアペラ SD2b-/UL4)
2021/04/02(金) 21:22:46.60ID:nM9RZYDRD
ゴリゴリにスペック使うような案件にC#使うとは思えないけど
68デフォルトの名無しさん (ワッチョイ a3e6-JnQU)
2021/04/02(金) 21:33:37.08ID:iQ+JaQcP0
日本産のスマホゲーと大陸産のスマホゲーぐらいの速度差は出るだろうな
69デフォルトの名無しさん (ワッチョイ 2d02-xz58)
2021/04/02(金) 21:37:00.93ID:L8b3h71w0
オブジェクト同士の関連処理を綺麗に書く機能、って具体的にどんな感じの物なのか興味はある。
70デフォルトの名無しさん (ワッチョイ 0d7b-1jBW)
2021/04/02(金) 21:37:57.13ID:JUK+seey0
ここ「初心者の質問スレ」で「初心者の雑談スレ」じゃないんだけどテンプレ読めないの?
マ板でやれ
71デフォルトの名無しさん (ワッチョイ 6524-dLXn)
2021/04/02(金) 23:15:46.39ID:jbXSiLa80
>>68
中華の大手どころってマルチプラットフォーム対応なソシャゲもUnityとか使わずにそもそも自前エンジンで開発してね?
72デフォルトの名無しさん (ワッチョイ 1dae-lQ1w)
2021/04/03(土) 00:11:57.23ID:nqPdKYBV0
むしろUnityじゃないの見たことない
73デフォルトの名無しさん (アウアウウー Sae9-p1/t)
2021/04/03(土) 01:51:35.91ID:2NRf1R7da
>>69
まあ言語機能云々は意味不明に聞こえるねw

前も書いたけど、ゲームの場合Mediator的な装置を用意すべき場面でも
目に見えるオブジェクトに引きずられて変な設計してしまいがちだと
いう意味なら分からんでもない。

バブルボブル(おっさんにしか分からんかも)で泡の相互作用を
Bubbleクラスに無理に実装したらたぶんハマるよね。
74デフォルトの名無しさん (ワッチョイ 55b5-vyem)
2021/04/03(土) 02:58:34.81ID:RiNFSwHX0
ちきしょー、分かっちまった
75デフォルトの名無しさん (ワッチョイ 8d2d-kjVL)
2021/04/03(土) 04:13:43.36ID:a3PJiZ4L0
linq便利だなーって使いまくってたけど
最近自分が手続き型の思考をしなくなってきたことが怖くなってきた
これプログラミング能力が低下するのでは..
76デフォルトの名無しさん (スフッ Sd43-+5Lz)
2021/04/03(土) 10:48:17.75ID:UQC8gxiad
>>75
でもLinqって古くから有る技術の延長にある気がする。
SelectしてWhereで選んでSortしてっていうのは、コマンドプロンプトでパイプリダイレクションとかいう手法に似てる。
ラムダ式とかは新しいのかな。数学の世界とかそういう所では古いのか。
77デフォルトの名無しさん (ワッチョイ 8d33-eEFg)
2021/04/03(土) 11:15:26.55ID:vVgJyrul0
やっててよかったラムダ式。
やらなきゃよかった苦悶式。
78デフォルトの名無しさん (ワッチョイ cbda-2D+M)
2021/04/03(土) 12:27:40.46ID:4GR7Zrkb0
>>76
君はLISPを何だと思っているのかね?
79デフォルトの名無しさん (ワッチョイ 5d7d-Cvkr)
2021/04/03(土) 12:41:49.44ID:msrmgqC70
そうか、C#だとメソッドチェーンすらも一般的ではないのか…
いやそんな馬鹿な
Unity制御スクリプトとしての利用が多いから?
いいや雑談だし
80デフォルトの名無しさん (ブーイモ MM6b-VtYg)
2021/04/03(土) 12:56:50.93ID:49uAy5SrM
>>75
そりゃ脳みそは使わないと衰えるだろうね
最適化重視で副作用を容認したコードを書こうとすると詰まることが増えた気がする
81デフォルトの名無しさん (ワッチョイ e54f-lQ1w)
2021/04/03(土) 13:57:02.33ID:PWpcDrEf0
いきなりメソッドチェーンとか持ち出したのはLinqの話に絡めてか?
全然違うものだと思うが。
82デフォルトの名無しさん (ワッチョイ e501-26+2)
2021/04/03(土) 18:55:38.38ID:a2otFyvK0
Linqのクエリ式自体はメソッドチェーンのシンタックスシュガーじゃん
83デフォルトの名無しさん (アウアウウー Sae9-p1/t)
2021/04/03(土) 19:11:52.27ID:CmPk+yxPa
メソッドチェーンの元々の意味はvoidのメソッドをthisを返すようにして....
ってことだったんだと思うよ。

個人的にはこういう重箱の隅を突く話は好きじゃないけど
84デフォルトの名無しさん (ワッチョイ 2d02-xz58)
2021/04/04(日) 13:52:07.93ID:U9Ytphde0
>>73
純粋に、自分が知らない有用な書き方があるなら知りたいとは思うんだよな。
別スレの LINQ がらみの話題もやるかどうかは置いておいて勉強にはなったし。
もしくだんの人が出てきてくれて講釈してくれるなら専用のスレぐらいは立てる。
85デフォルトの名無しさん (ワッチョイ 2b02-kjVL)
2021/04/04(日) 17:58:30.84ID:a8juFvNn0
初歩的な事かもしれませんが教えて下さい。

以下のような独自クラス「Group」のリストがあります。
このリストをクラスのAgeListをキーにGroupByしたいのですが上手くグループ化できません。
どうすれば良いでしょうか。

public class Group{
/// グループID
public int Id {get; set;}
/// グループ名
public int GroupName {get; set;}
/// グループ所属の年齢一覧
public List<int> AgeList {get; set;}

public Member()
{
List = new List();
}
}
86デフォルトの名無しさん (ワントンキン MMa3-7UwS)
2021/04/04(日) 19:15:49.58ID:LnRN74zvM
>>85
どうすればいいじゃなくてどうしたいのかをお前が決めろ
平均年齢なのか最大年齢なのかそれともまた別の基準なのか
グループ化に使うキーが一意に定まらないならグループ化のしようがない
87デフォルトの名無しさん (ワッチョイ ad78-0pr0)
2021/04/04(日) 19:55:19.53ID:m/N7RFml0
>>85
最低限ビルドできるコードを例に挙げろよ
88デフォルトの名無しさん (ワッチョイ b501-5QI3)
2021/04/04(日) 19:59:05.44ID:gm8Ka2TU0
そもそもの設計ヤバない?AgeはMemberに持つのでは?
89デフォルトの名無しさん (ブーイモ MM6b-ehU2)
2021/04/04(日) 20:15:49.42ID:+2DTDHawM
デフォルトで使われる比較関数じゃ欲しい結果が得られないからGroupByに独自の比較関数を渡すか、Groupクラスに比較方法を定義しておくかのどちらか
90デフォルトの名無しさん (ブーイモ MM6b-ehU2)
2021/04/04(日) 20:17:26.34ID:+2DTDHawM
新卒研修の課題とかだろうから設計にツッコミいれてもしょうがないような
91デフォルトの名無しさん (ワッチョイ a37c-6/vn)
2021/04/04(日) 20:45:41.30ID:C0fdEpC00
初心者以前の話だよな
何がしたいか位は分かるように書けよと思う
92デフォルトの名無しさん (アウアウウー Sae9-yx92)
2021/04/04(日) 20:52:52.48ID:ufNVz0O6a
何がしたいかはなんとなくわかるだろ
93デフォルトの名無しさん (ワッチョイ a37c-6/vn)
2021/04/04(日) 20:55:57.89ID:C0fdEpC00
>>92
動かないあれを見て分かるか?
そもそも構造すら間違ってるやろ
94デフォルトの名無しさん (テテンテンテン MM4b-/elG)
2021/04/04(日) 21:09:17.93ID:ghBYdtOLM
>>92
わかるんなら説明してくれよw
メンバーの年齢だけを保持してるグループってあまり見かけないし
95デフォルトの名無しさん (ワッチョイ 1bda-UCZ0)
2021/04/04(日) 21:13:12.33ID:xvT8M2vo0
俺はこういう場合、独自解釈して好きなように作る。
今回ならAgeListをソートしてカンマ区切りの文字列にして、をれをキーにする。
でGroupByだな。

過去この独自解釈が5割くらいそのまま仕様になってる
96デフォルトの名無しさん (アウアウウー Sae9-yx92)
2021/04/04(日) 21:16:41.13ID:jr3tMa1na
>>93
>独自クラス「Group」のリスト
>このリストをクラスのAgeListをキーにGroupByしたい

List<Group> list = new List<Group>();
// なんか処理
list.Groupby(x => x.AgeList)
ってしたいって理解したんだけど違うんかな

宣言でそもそも間違ってるのは知らん
97デフォルトの名無しさん (ワッチョイ 552c-s+Uo)
2021/04/04(日) 22:12:27.02ID:0QnJQanX0
Ruby なら、こういう感じ

members = [ {id: 1, age: 30}, {id: 2, age: 20}, {id: 3, age: 50} ]

p members.sort_by{ |member| member[ :age ] }

出力
[{:id=>2, :age=>20}, {:id=>1, :age=>30}, {:id=>3, :age=>50}]
98デフォルトの名無しさん (ラクッペペ MM4b-M4Sc)
2021/04/04(日) 22:18:00.59ID:LUDq5H1sM
>>97
C#なら?
99デフォルトの名無しさん (ワッチョイ cbda-2D+M)
2021/04/04(日) 22:23:09.43ID:ciXsbyqc0
>>97
APLなら?
100デフォルトの名無しさん (ワッチョイ 55b5-vyem)
2021/04/04(日) 22:32:47.74ID:glgnW2pm0
そんな議論はさておき、俺様が>>100を掻っ攫う
101デフォルトの名無しさん (ワッチョイ a37c-0pr0)
2021/04/04(日) 22:38:41.33ID:C0fdEpC00
Rubyガイジは無視して同じコードをちょっと書いてみた
https://paiza.io/projects/XRdHMEMPrv4_lIhlB8WYuw
102デフォルトの名無しさん (ブーイモ MM6b-VtYg)
2021/04/04(日) 22:45:22.63ID:7UKH0ZmwM
ピザくいたい
103デフォルトの名無しさん (ワッチョイ cbda-2D+M)
2021/04/04(日) 22:48:28.83ID:ciXsbyqc0
この時間だからラーメンにしておきな
104デフォルトの名無しさん (スップ Sd03-nQQ9)
2021/04/07(水) 14:11:22.94ID:/xOeegWId
C++とJavaを業務でやっていてc#始めた初心者です。
Xamarin.Mac でmacOSのアプリを作りながら学んでるけど
恐ろしく情報が少ない…。Macでc#使う人って少ないんでしょうか?
105デフォルトの名無しさん (ワッチョイ a37c-0pr0)
2021/04/07(水) 20:43:30.57ID:keBvs1o20
そもそもXamarinで作る必要あるのかという感じがする
正直流行ってないからね
Java出来るならJavaでいいんじゃね?
もっと新しい技術ということならelectronをお勧めしておくわ
Windows限定アプリならVisualStudioでC#は楽でいいけどね
106デフォルトの名無しさん (スフッ Sd43-+5Lz)
2021/04/07(水) 21:57:44.60ID:5xSMK6sJd
MacといえばSwiftじゃないの?
107デフォルトの名無しさん (ワッチョイ cbda-2D+M)
2021/04/07(水) 22:41:15.43ID:fLp1VLDK0
>>104
人脈作りから始めよう。

objective cとcocoaの方が需要あるやろ
108デフォルトの名無しさん (ワッチョイ e501-nQQ9)
2021/04/08(木) 03:06:33.38ID:AfyS2Eek0
>>105-107
回答ありがとうございます。
マジですか。。。C#以外をお勧めされて複雑ですが
その言語も調べておきます。
まだC#学習して1ヶ月程度ですが機能が盛り沢山で面白いので
Macでも普及して欲しいですね(´・ω・`)
109デフォルトの名無しさん (スフッ Sd43-+5Lz)
2021/04/08(木) 03:47:40.98ID:mAebMgXVd
機能は盛りだくさんでもPythonやJavaの方が人気なんだよね。
それぞれ良し悪しや向き不向きがあるだろうけど。
110デフォルトの名無しさん (ワッチョイ cbda-2D+M)
2021/04/08(木) 04:49:18.36ID:SlRPMViD0
今、統計的な素養があってPytorch触れると
月単価150万からだもんなぁ。
111デフォルトの名無しさん (ワッチョイ a37c-0pr0)
2021/04/08(木) 14:03:49.02ID:3r6MsATA0
>>108
どうしてもC#がいいなら採用出来るかどうかは別にしてもUnityという手はあるけどね
112デフォルトの名無しさん (ワッチョイ 55b5-vyem)
2021/04/08(木) 14:17:05.70ID:d++ONVxC0
>>110
TensorFlowでもええん?ダメなん?
113デフォルトの名無しさん (ワッチョイ 2d5f-KShf)
2021/04/08(木) 16:37:37.25ID:kfGdZKXS0
これってDLL importとかしなくなるってことですか?
https://www.atmarkit.co.jp/ait/articles/2101/29/news113.html
114デフォルトの名無しさん (ワッチョイ e384-bVUD)
2021/04/08(木) 17:10:27.78ID:eSL736QZ0
>>113
MSが共通Wrapper作りましたってことでDLL importは必要なくなるし、アンマネージ
部分についてもお約束を守ればよくなるみたいだけど、サンプル見ると色々手続きが
面倒臭そうで使い勝手は良くなさそう
115デフォルトの名無しさん (アウアウウー Sae9-kjVL)
2021/04/08(木) 17:48:44.06ID:4s+x/uBpa
void*とかobjectにするしかないだろうしアホみたいなオーバーロードの山になるだろうし
始まる前から破綻の予感しかしない

っていうか何で今更
116デフォルトの名無しさん (テテンテンテン MM4b-/elG)
2021/04/08(木) 18:56:34.79ID:HxWbcod1M
そもそもガンガンWin32API使うなら素直にC/C++使うし、C#だとちょっとつまみ食いする程度にしか使わんから今のままでもいいや
117デフォルトの名無しさん (ワッチョイ a3e6-JnQU)
2021/04/08(木) 19:11:09.64ID:7Q+Xoj4V0
apiで使う構造体とかの面倒くささが無くなるならいいんじゃない?
118デフォルトの名無しさん (ワッチョイ cbda-2D+M)
2021/04/08(木) 20:07:04.02ID:SlRPMViD0
>>112
需要と供給で単価は決まるからなぁ
119デフォルトの名無しさん (ワッチョイ 2d5f-MW8P)
2021/04/08(木) 20:11:07.35ID:Rugi+GK60
Cじゃない言語でOS作り直してくれよもう
120デフォルトの名無しさん (ワッチョイ cbda-2D+M)
2021/04/08(木) 20:20:01.96ID:SlRPMViD0
アセンブラけ?
121デフォルトの名無しさん (ワッチョイ 0d68-0pr0)
2021/04/08(木) 21:41:44.08ID:oExYloS10
OSのようなハードに近いレベルの言語となると、Rustが流行ってるのかな。
C#でそういうのも出来ると良いのにね。
122デフォルトの名無しさん (ワッチョイ 9b42-0pr0)
2021/04/08(木) 22:08:07.77ID:5uUtmx9J0
>>113
https://dot-sharp.com/net-getdetailsof/
Shell32.dllを使うとき、com参照を追加するだけでC#のライブラリと同じ程度の手軽さで使えました
これが増えるってならいいんじゃないかな
123デフォルトの名無しさん (ワッチョイ 6fb5-KVJ7)
2021/04/09(金) 01:46:32.36ID:tMeqLsRz0
>>118
PyTorchはずっと不人気だったのに
今調べてみたら、ここ二年ぐらいでTensorFlowと拮抗してんな
ま、いいや、どっちか使えりゃ問題ないだろ
124デフォルトの名無しさん (ワッチョイ 8eda-789v)
2021/04/09(金) 04:55:29.41ID:dxRxz0Yw0
C#をネイティブコンパイルできうようにすればいいだけだと思うが。
なぜ回り道をするのか
125デフォルトの名無しさん (ワッチョイ c6da-z9yU)
2021/04/09(金) 05:03:11.50ID:mVBnPI5w0
>>123
無理せずPaddlePaddle使ってたんでえぇで

日本では需要ないけど
126デフォルトの名無しさん (ワッチョイ 6fb5-KVJ7)
2021/04/09(金) 10:06:28.56ID:tMeqLsRz0
>>125
PaddlePaddleはダメダメだな
日本だけじゃなくて、世界でもダメな奴
127デフォルトの名無しさん (ワッチョイ 86bb-eWep)
2021/04/09(金) 15:11:32.43ID:Sg2n4mcl0
AI関連は、何を使えるかよりどこの博士号を持ってるかの方が重要なんだろ?
128デフォルトの名無しさん (ワッチョイ c6da-z9yU)
2021/04/09(金) 19:20:58.42ID:mVBnPI5w0
CNTKの求人って見ないな
https://www.bigdata-navi.com/
129デフォルトの名無しさん (ワッチョイ 67da-MIQy)
2021/04/10(土) 07:46:10.33ID:qc4cGBnV0
以前画面解像度切り替えのツールを作った時にvanaraといwin32apiのラッパー使ったな
構造体も用意してあって簡単に使えた
130デフォルトの名無しさん (ワッチョイ 1724-uCSv)
2021/04/10(土) 09:05:48.65ID:Zw7mVk6D0
win32って一々ラッパー挟まずとも実はC#側で結構調節してくれるんだよな
GetProcAddressみたいなANSI版しかないような関数でもstringそのまま放り込んでもちゃんと機能してびっくりした
131デフォルトの名無しさん (ワッチョイ 6743-1WRr)
2021/04/10(土) 20:01:50.03ID:00IQtlCT0
人はそれをマーシャリングと呼ぶのである
132デフォルトの名無しさん (ワッチョイ bb2d-ksEv)
2021/04/10(土) 21:24:18.51ID:mb0ile8c0
a={1, 2, 3, 4}という配列が与えられて
更に10進数x=5が与えられた時、5を2進数にして101なので
(最下位ビットがa[0]になります)
配列の要素1と3の和を出力せよという課題が出ました

var r = 0;
for (int i = 0; i < a.Length; i++)
if ((x & i << 1) == 0)
r += a[i];
で求める答えが出そうだと思ったのですが
4ではなく3が出ます。どこが間違っているんでしょうか
133デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/10(土) 22:21:05.25ID:ZQT/KDjfa
>>132
わざと間違えてない?w
static int GetBit(uint x, int position)
{
  return (int)((x >> position) & 1);
}
134デフォルトの名無しさん (ワッチョイ bb2d-ksEv)
2021/04/10(土) 22:33:06.71ID:mb0ile8c0
>>133
その書き方だと通るんですよね..
下のように解説してるサイトがあったのでそう書いてみたのですが
なんかおかしいんです

ビット bit に i 番目のフラグが立っているかどうか if (bit & (1<<i))
135デフォルトの名無しさん (ワッチョイ cb02-+YuK)
2021/04/10(土) 23:55:58.75ID:GWhpBmtX0
え。
>if ((x & i << 1) == 0)
>if (bit & (1<<i))
136デフォルトの名無しさん (ワッチョイ bb2d-ksEv)
2021/04/11(日) 00:13:20.51ID:Zc34G5gB0
あ、やっと気づきました
bit操作理解せずに、コピペで済ませてた弊害が出ました

ありがとうございました
137デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/11(日) 00:18:38.88ID:gSPWaQTLa
>>134
それはたぶんC#ではなくてCのコード
「bit & (1<<i)」この式の型は何?
Cと違ってC#のifの()の中の式はboolでなければダメ

まあこれは初心者が知らずに混乱しても仕方ないかもしれない。
でも>>132のコードの何が間違ってるかは初心者でも自分で考えれば分かるでしょ。

とりあえず問題を小さい問題に分けて分割統治することから始めましょう。
>>133はそういう意味で書きました。
138デフォルトの名無しさん (スフッ Sd02-gbe5)
2021/04/11(日) 06:53:51.52ID:+8zEqMg4d
Typescriptじゃインターフェース名にI(アイ)をつけないのが推奨されてるけど、
C#もそうなったりするのかな。
139デフォルトの名無しさん (ワッチョイ 0b78-CoCA)
2021/04/11(日) 08:10:38.23ID:JfLfucqJ0
破壊的変更を.NETユーザーが受け入れてくれるなら良いんじゃね
140デフォルトの名無しさん (ワッチョイ d74f-1WRr)
2021/04/11(日) 08:23:58.76ID:DcU1Z0EW0
付けろと言ってる
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/inside-a-program/identifier-names
141デフォルトの名無しさん (ワッチョイ 8e62-2UTP)
2021/04/11(日) 12:26:31.31ID:y6cz0vLM0
C#でIが取れなかったのはCOMの影響があったからとかなんとか
今更C#の方針を変えることはないだろうね
142デフォルトの名無しさん (アウアウエー Sa3a-PnGn)
2021/04/11(日) 13:01:27.23ID:+MjFaIzva
エディタで色分けしてくれればいclass, struct, interface, abstract
143デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/11(日) 17:06:24.47ID:LOxmuPpta
プリフィクスのIは字面からインターフェイスだと分かるようにしたい、という強迫神経症的な動機というより、
単純に名前のバッティングを機械的に回避できる点が大きいんじゃないの?
144デフォルトの名無しさん (ワッチョイ df01-slfm)
2021/04/11(日) 17:51:20.56ID:v+npbxj+0
どうせインターフェースにIを付けなくなっても、実装クラスのいい名前が思いつかずになんとかImplってサフィックスつけるんだろ?
145デフォルトの名無しさん (ワッチョイ 7b68-CoCA)
2021/04/11(日) 19:02:53.13ID:jqn7J9El0
Delphiだと、クラスにはTypeのT、パラメータにはFieldのFを付けるんだよね。
InterfaceのIはその名残なのかな、とか思ったんだよ。
そして、そういうのは無くしていく傾向なのかな、と。
146デフォルトの名無しさん (ワッチョイ 227c-YIZl)
2021/04/11(日) 20:39:38.45ID:9ef64+I30
>>144
付けないよ
そんなの付けるのJavaやってたやつくらいやろ
147デフォルトの名無しさん (ワッチョイ e290-nwb8)
2021/04/11(日) 21:55:51.16ID:XlCnUXyn0
命名規則で一番上手くいってるのはC#と思う
インターフェースにプリフィックスIをつけるから命名で困った時にImplとかやらなくてすむし
プロパティ名は大文字で始めるから小文字で始めるローカル変数とぶつかりにくいし
148デフォルトの名無しさん (ワッチョイ e290-nwb8)
2021/04/11(日) 22:00:03.96ID:XlCnUXyn0
で、最近は名前がさらぶつかりにくくなるようにメンバ変数はm_を付けるスタイルに個人的に変更した
149デフォルトの名無しさん (ワッチョイ 6793-I7Om)
2021/04/11(日) 23:11:51.93ID:Jjs5QDLf0
キャメルケースwww
150デフォルトの名無しさん (ワッチョイ 47ac-0zu2)
2021/04/11(日) 23:30:29.10ID:gtdLzQZJ0
まあVSの恩恵でかいよなあって
151デフォルトの名無しさん (ワッチョイ 8e62-2UTP)
2021/04/12(月) 00:03:30.52ID:5s47Rc9D0
>>147
こういう適当な名前を付けるやつがいることにピキってるっぽいね
適切な名前にすりゃブッキングしねえから名前付けをサボるなってことらしい
152デフォルトの名無しさん (ワッチョイ d7f2-GYEe)
2021/04/12(月) 00:35:55.51ID:z0nrn9OY0
なるほどなぁ
ちなみにIListはなんて名前にすればより適切だと思う?
153デフォルトの名無しさん (ワッチョイ e290-nwb8)
2021/04/12(月) 00:41:39.46ID:JfC2SlE/0
おまえ馬鹿か
たいていぶつかるのはローカル変数や外部に公開しないクラス名だろ
JavaのImpl使うのだって、内部クラスや非公開や内部のエンジンクラスとか
154デフォルトの名無しさん (ワッチョイ e290-nwb8)
2021/04/12(月) 00:43:02.12ID:JfC2SlE/0
そんなのに適切な名前なんかブッキングできねぇよカス
155デフォルトの名無しさん (ワッチョイ 7b68-CoCA)
2021/04/12(月) 04:43:49.73ID:FczQKoXE0
>>152
Microsoftの推奨する命名規則を参考にすれば良いんじゃない?
つまり、I付きPascal形式でスペル省略不可のフルネームで名詞を表せば良いのかな。
自由に付けても良いけど、.Net Frameworkと調子を合わせると違和感が無いと思う。
156デフォルトの名無しさん (ワッチョイ 2b54-USUf)
2021/04/12(月) 06:14:41.91ID:nRLgqnE00
うちの会社、昔から変数名の1文字目にデータ型の略称(?)をつける文化みたいで、
intのListがiListだったり、longのListがlListだったり、ちょっと困惑した。
157デフォルトの名無しさん (ワッチョイ c6da-GYEe)
2021/04/12(月) 06:47:12.36ID:HnVQKAJ10
>>156
郷に入っては郷に従え!

君の使って良い変数はI150からI300までな!
そこはFortran出身者の支配する村であった
158デフォルトの名無しさん (エアペラ SD02-I7Om)
2021/04/12(月) 07:54:06.97ID:lF7oqfJtD
MSの.NETプログラムにおける命名ガイドラインな
https://docs.microsoft.com/ja-jp/dotnet/standard/design-guidelines/naming-guidelines
159デフォルトの名無しさん (スフッ Sd02-gbe5)
2021/04/13(火) 07:46:13.80ID:FVP0aIINd
皆さんコメント入れる? 命名規約とか守ってたらコメント要らないような気がしてきた。
160デフォルトの名無しさん (ワッチョイ 2b54-USUf)
2021/04/13(火) 08:25:02.43ID:lZomqcCZ0
>>159
いわゆるドキュメンテーションコメント的なものは入れる。
あと、実例みたいなの。
//引数にXXとYYとZZを渡したら、戻り値はAAになる。
161デフォルトの名無しさん (アウアウウー Sabb-VfxA)
2021/04/13(火) 08:48:00.08ID:cGgJVHDFa
>>159
入れる
162デフォルトの名無しさん (ワッチョイ 227c-CoCA)
2021/04/13(火) 09:02:05.69ID:t+pv5GMk0
visualstudioだとクラスやメソッドの1行前に///入力で自動補完されるからそれは使ってるかな
163デフォルトの名無しさん (アウアウエー Sa3a-PnGn)
2021/04/13(火) 09:08:35.29ID:gWbnUgF3a
日付、所属、名前、旧コードはコメントに残すのが常識でしょ
164デフォルトの名無しさん (ワッチョイ 2349-0zu2)
2021/04/13(火) 09:19:57.30ID:Ehg3izfw0
ギャグかな?
165デフォルトの名無しさん (ワッチョイ cb5f-wtuO)
2021/04/13(火) 11:05:10.28ID:fFoE8jgx0
バージョン管理ツール使ってるのに旧コード残すやつにはイラッとする!
特に不具合のコードをコメントアウトして残されてると、当てつけなのかと思ってしまう
166デフォルトの名無しさん (ワッチョイ bb33-qZRM)
2021/04/13(火) 12:14:15.55ID:YrXVy+xO0
コメントって入れるものだったんだ。
書くものだと思ってた。
167デフォルトの名無しさん (エアペラ SD02-I7Om)
2021/04/13(火) 12:48:28.16ID:ZNHsyNhsD
>>159
コメントには「なぜ」を書くんだよ
168デフォルトの名無しさん (ワッチョイ df01-AJCP)
2021/04/13(火) 14:24:24.21ID:ovEIWddm0
なぜこんなコード書いたんですか?と書いて旧コードを残すわけですね
169デフォルトの名無しさん (ブーイモ MM93-GYEe)
2021/04/13(火) 14:40:11.12ID:cQExUzr8M
168が仕様を理解せずおかしな実装を
したので辻褄合わせの辞書を実装しました by 167
170デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/13(火) 16:02:36.93ID:ct/xqAfva
>>159
コメントは基本的には必要悪なので必要がない限り書かないのが正しいけど、
少なくともパブリックメンバーについては単純に「必要」かもしれんね。

ないと書いた人の意図を変に誤解してないか不安になって
結局中のコードを覗きたくなるかもしれない。
そんなことしなくて済むためのカプセル化のはずなのに
171デフォルトの名無しさん (ワッチョイ f784-AglQ)
2021/04/13(火) 17:44:15.92ID:Kc5TdA4a0
1年後に自分の書いたコード読んで、何をやっているかちゃんと理解できるならば
書かなくてもよいんじゃないかなw
172デフォルトの名無しさん (エアペラ SD7a-I7Om)
2021/04/13(火) 18:24:41.93ID:arsZDomXD
>>171
何をやってるかなんてコード読めば解るんだから、
そんなことのためにコメントは不要
「なぜ」そんなメソッドが必要か、
「なぜ」そのデータ構造やアルゴリズムを選択したか
なんていう、コードから見えない情報を記すのがコメント
173デフォルトの名無しさん (ワントンキン MM92-qfGw)
2021/04/13(火) 18:31:59.11ID:KJ4k5XjpM
MS含めアメリカ製の高品質なコードって「なぜ」のコメントが無茶苦茶充実してるよな
日本だとだいたい // 〇〇処理 みたいな無意味なコメントか、ほとんど無いかのどちらか
SaaSとか一般的にレベル高いと思われてるはずの現場では、だいたい後者のパターンでほぼコメントが無い
根本的に論理的な言語能力に差があるんだろうなと思わざるを得ないわ
174デフォルトの名無しさん (アウアウウー Sabb-VfxA)
2021/04/13(火) 18:37:50.47ID:781G2uFla
コードレビューでコメントを書けって指摘されるじゃんw
175デフォルトの名無しさん (ブーイモ MM3e-PnGn)
2021/04/13(火) 18:43:17.63ID:/XAQKj46M
コメントなんて要らないんだよ
コミットログを見ればいいんだから
176デフォルトの名無しさん (ワッチョイ df01-qZRM)
2021/04/13(火) 18:48:56.00ID:2mKMjuav0
private なプロパティってフィールドにするべきですか?
177デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/13(火) 18:55:44.96ID:ufUQjDoVa
>>172
言いたいことは分かるけど「何をやってるかなんてコード読めば解る」というのは
あくまで理想であって常にそうできるわけじゃない。

何をやっているか書いてくれた方がありがたい場合もあるよ。

>>176
そんなことをルールで強制する理由はないと思うよ。
178デフォルトの名無しさん (エアペラ SD7a-I7Om)
2021/04/13(火) 19:02:46.98ID:arsZDomXD
>>177
何をやってるかがコメントとコードで乖離してる事があるのが問題
英語でthirteen daysって言ってるのに、
字幕には2ヶ月って書かれる戸田奈津子の翻訳みたいな事が起きうる
179デフォルトの名無しさん (ワントンキン MM92-qfGw)
2021/04/13(火) 19:08:03.49ID:KJ4k5XjpM
>>178
逆に、コメントを書かせることでコメントを書きやすいコードになるという面はあると思うよ
クラスやメンバの責務が十分に明確ならコメントと実態の乖離なんてそう起きるものではない
180デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/13(火) 19:14:53.40ID:ufUQjDoVa
>>178
コメントはバグる可能性があるからコメント書くな、
なんて言ったらバグる可能性があるのはコードも同じなんだから
コードも書くなってことになっちゃうよw

「不必要なコメントは有害無益」は正しいけど、それは
必要なコメントを否定する根拠にはなりえない。
181デフォルトの名無しさん (エアペラ SD7a-I7Om)
2021/04/13(火) 19:40:32.77ID:arsZDomXD
>>180
コメントがバグるって話じゃなく、
書いた人の「つもり」がコメントとして残るのが危うい
実行時にどう動くかを決めるのは、コメントではなくコードなのだから、
コメントを読んでコードを読んだつもりになれるのも危うい
182デフォルトの名無しさん (エアペラ SD7a-I7Om)
2021/04/13(火) 19:42:57.23ID:arsZDomXD
入門書の多くがコメントの書き方を蔑ろにしてるのが元凶だと思うんだよね
ほぼ単なるメモ機能としての記載しかされてない
183デフォルトの名無しさん (エアペラ SD7a-I7Om)
2021/04/13(火) 19:46:12.88ID:arsZDomXD
続いちゃったので議論スレに移します
http://2chb.net/r/tech/1469538912/82
184デフォルトの名無しさん (ワッチョイ cb02-+YuK)
2021/04/13(火) 19:48:22.85ID:DZHUx02Q0
「コードを読めば何してるか分かる」のだから、メンテ忘れで誤ったコメントが残ったとしても問題ないとも言える。
・・・たまにブチ切れたくなることがあるけどな。
185デフォルトの名無しさん (ワッチョイ 4f5f-AJCP)
2021/04/13(火) 19:53:58.09ID:1xWi7ZbJ0
>>182
あれは解説を見ないとプログラムが理解できない人向けの本なんだからそれをコメントに書くのは当たり前じゃん
186デフォルトの名無しさん (テテンテンテン MM8e-VoLZ)
2021/04/13(火) 20:27:38.26ID:vPRWCVoWM
>>184
> 「コードを読めば何してるか分かる」
ならコメントなんていらんだろw
187デフォルトの名無しさん (ワッチョイ c6da-z9yU)
2021/04/13(火) 20:43:00.23ID:YIOTduDg0
>>172
YOLOv5をC#に移植して内容を説明しては
くれまいか?

そんなに簡単な話なら誰も論文なんて読まないよ〜 :-p
188デフォルトの名無しさん (ワッチョイ cb5f-CoCA)
2021/04/13(火) 21:22:13.67ID:51HoYqEa0
ドキュメント代わりにしてるから入れる
///<summry>
の形式のやつ

doxygenで出力してモジュール設計書として納品して一丁上がり
189デフォルトの名無しさん (ワッチョイ 06a7-ucxl)
2021/04/13(火) 21:30:50.70ID:cA2aWYvl0
クラス図もシーケンス図もねぇのになにいってんだこのバカ
190デフォルトの名無しさん (ワッチョイ 8e62-2UTP)
2021/04/14(水) 05:43:13.79ID:C2CdPm+G0
>>186
だから要らないって話だろ
var hoge = items.First();
で最初の要素を取得するなんてコメントは要らん
記載するならwhy何故取得するのかだけ書けばいい

もし動作について記載したくなったなら、それはメソッド化するとかを検討した方がいい
191デフォルトの名無しさん (テテンテンテン MM8e-VoLZ)
2021/04/14(水) 06:13:30.67ID:NHvKxhVFM
>>190
だからと言って
> メンテ忘れで誤ったコメントが残ったとしても問題ないとも言える。
ってアホだろ、って言う指摘なんだが…w
192デフォルトの名無しさん (ワッチョイ 8e62-2UTP)
2021/04/14(水) 07:02:48.39ID:C2CdPm+G0
それはアホだけどコメント入らないも的外れって指摘なんだが
193デフォルトの名無しさん (テテンテンテン MM8e-VoLZ)
2021/04/14(水) 07:55:29.84ID:IRkO9LrOM
>>192
>>184の全文読んでから出直してこいよw
194デフォルトの名無しさん (ブーイモ MM3e-Y7rb)
2021/04/14(水) 10:15:09.46ID:+thTLvERM
宗教が合わないと作成者本人が綺麗に作ったつもりでも読みにくくてしょうがないからブロック毎に動作の概要ぐらいはコメントで書いといて欲しいわ
195デフォルトの名無しさん (ワッチョイ 6fb5-KVJ7)
2021/04/14(水) 10:31:27.70ID:GNdqlmcr0
なんだよ、せっかく議論スレに移ったのについてきてねーじゃん
正直者が馬鹿を見る世界
もう移らん、絶対移らん(笑)

俺はコメント入れてほしい派

読めば判るっつってもさ、
コード書いてる本人ですら
何やってるか分かってない場合もあるからな(笑)
せめてコメントで
「ここではこんなことをしてる(つもり)」
って書いてくれら「全然そうなってないだろ!」と突っ込める
196デフォルトの名無しさん (ワッチョイ c602-Pg6q)
2021/04/14(水) 11:35:41.20ID:pb7R6DhS0
xxxInternal
xxxPublic
xxxOverride
197デフォルトの名無しさん (ブーイモ MM3e-D3kA)
2021/04/14(水) 11:40:36.85ID:tyZiRMgdM
パワーポイントやエクセル内の文字列を検索するクラスってありますか?
windowsの検索窓ではなく…
198デフォルトの名無しさん (ワントンキン MMf7-qfGw)
2021/04/14(水) 11:48:50.60ID:RaIqb6oIM
>>197
Windows Searchを使えば検索窓と同等の機能がプログラムから使える
199デフォルトの名無しさん (ブーイモ MM3e-D3kA)
2021/04/14(水) 11:53:46.39ID:tyZiRMgdM
>>198
素早い回答ありがとうございます!
そんなのあったのですね!検索力不足を痛感しました…
調べてみます。
200デフォルトの名無しさん (ワッチョイ 6793-I7Om)
2021/04/14(水) 14:15:46.62ID:MmF8o4I50
議論スレに移れないってことは、
コメント付けたところで読めない無能だから無意味って証明になったな
201デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/14(水) 14:21:26.07ID:IGhCcGj6a
>>200
何度も言うけど、真の無能はそれが自分を棚上げした物言いである、
という簡単な事実に気づく程度のこともできないお方だよ。

これ割とマジで大丈夫かと思うわ
202デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/14(水) 14:23:38.27ID:IGhCcGj6a
ついでに、これも何度も言ってるが、そんなくだらない「交通整理」に誰も従わないのは
「交通整理」の欺瞞性とそれを主張している人間の卑しい動機に普通は気が付くから。
203デフォルトの名無しさん (エアペラ SD7a-I7Om)
2021/04/14(水) 17:19:19.99ID:gLzfQxv5D
>>202
卑しい動機って何?
204デフォルトの名無しさん (ラクッペペ MM8e-tPyg)
2021/04/14(水) 17:43:05.15ID:fKew9GPPM
他人を見下し自分が主導権を握りたいという自分勝手な承認欲求が行動原理
205デフォルトの名無しさん (ワッチョイ 0663-oziv)
2021/04/14(水) 17:58:45.23ID:d4l1z4pL0
>>202
暴れて飛行機から下ろされ
飲食店で入店拒否されて暴れて警察を呼ばれ
警察を殴った誰かはTwitterで同じこと言ってたなw
206デフォルトの名無しさん (ワッチョイ cb02-+YuK)
2021/04/14(水) 19:48:09.33ID:5dAhuQZZ0
>>193
その 184 だけど。w
「コードを読めば何してるか分かる」な人は、そもそもコメントがなくてもいいんだから、書かれていても無視すればいい。
コメントが欲しい人は、コメントの弊害(メンテ忘れとか)の現状を承知の上でそう言ってるんだから、そもそも問題ない。

つまり、コメントがいる/いらないの論争は無意味だからやめとけってことなんだよ。
その上で「コードを読めば何してるか分かる」ように丁寧な書き方を目指せば済むことじゃん。

まあ自分はブロックと言うか処理単位でのコメントは出来るだけ書くけど。
207デフォルトの名無しさん (ブーイモ MM3e-8zEc)
2021/04/14(水) 19:57:35.09ID:un1gf4OwM
だってコメント邪魔なんだもん
208デフォルトの名無しさん (ブーイモ MM3e-PnGn)
2021/04/14(水) 20:17:08.74ID:22Gnyx3vM
・コメントがあるとノイズになり視認性が落ちる
・コメントには嘘が混ざっていたり情報が欠落していることがあるので常にコードとコメントの整合性を確認しながら読まなくてはならない
・コメントに嘘を混ぜたり情報を欠落させないために細心の注意を払わないとコードを更新できなくなる
209デフォルトの名無しさん (ワッチョイ cb02-+YuK)
2021/04/14(水) 21:19:55.23ID:5dAhuQZZ0
これは茶化しで書くけど。
コメントがなければストレスなく読める美しいコードなんて見たことないなあ。
210デフォルトの名無しさん (テテンテンテン MM8e-VoLZ)
2021/04/14(水) 22:05:49.52ID:MpN5sHI3M
>>206
> つまり、コメントがいる/いらないの論争は無意味だからやめとけってことなんだよ。
誰もそんな論争してませんよ…
もしかして>>186をコメント不要という主張だと思ったのか?w
211デフォルトの名無しさん (ワッチョイ cb02-+YuK)
2021/04/14(水) 22:33:48.02ID:5dAhuQZZ0
そーなのか。
じゃあバカな私に分かるようにおまえ様の主張をきちんと述べてみてくれ。
212デフォルトの名無しさん (テテンテンテン MM8e-VoLZ)
2021/04/15(木) 07:44:33.23ID:UZqM7amYM
>>211
>> メンテ忘れで誤ったコメントが残ったとしても問題ないとも言える。
> ってアホだろ、って言う指摘なんだが…w
213デフォルトの名無しさん (ブーイモ MM3e-VRFv)
2021/04/15(木) 08:01:46.43ID:PPG2Aw5dM
改修履歴をコメントで残すとかいうのさえなけりゃ
他のコメントはコード読むのに邪魔になりはしない
214デフォルトの名無しさん (エアペラ SD7a-I7Om)
2021/04/15(木) 08:08:37.68ID:OPERSbUtD
>>211
>>183
215デフォルトの名無しさん (アウアウウー Sabb-VfxA)
2021/04/15(木) 09:10:14.90ID:UMT499lla
必要だからどの言語もコメント機能が有るのでは?
216デフォルトの名無しさん (ワッチョイ 4e42-CoCA)
2021/04/15(木) 10:39:52.56ID:V+OBz7ue0
言語ではないけどjsonってのが有ってだな
217デフォルトの名無しさん (ワッチョイ e202-OeC+)
2021/04/15(木) 11:20:52.75ID:ZYoZizjK0
>>209
ほんこれ
218デフォルトの名無しさん (テテンテンテン MM8e-VoLZ)
2021/04/15(木) 11:28:50.53ID:VIeSEXX8M
>>216
あれなぜコメントの機能を持たせないのか不思議だわ
{
"$comment": "コメント"
}
みたいな形でコメント書くという方法もあるみたいだけど気持ち悪いし
219デフォルトの名無しさん (ワッチョイ 4e42-CoCA)
2021/04/15(木) 11:44:04.13ID:V+OBz7ue0
最初に作った人が「コレはデータだからコメント不要」って取り付く島もないんだとか
VsCodeの設定ファイルみたく独自で拡張してjsonもどきになっているよな
220デフォルトの名無しさん (ワッチョイ 4ede-ucxl)
2021/04/15(木) 20:44:07.32ID:ggX3n8E30
jsonなんて人間の読めるもんじゃないと思う
ダブルコーテーションが目にキツイ
221デフォルトの名無しさん (ワッチョイ d74f-1WRr)
2021/04/15(木) 20:56:31.12ID:yv1G2zip0
>>218
JSON自体は仕様がもう確定してるから。
jsoncとかJSON5とかRelaxed JSONとか拡張した別仕様ならある。
222デフォルトの名無しさん (ワッチョイ cb5f-wtuO)
2021/04/15(木) 23:45:13.23ID:025iJfef0
json便利だけど、protobufを使うようになってから使用頻度減ったなー
223デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/16(金) 21:25:28.58ID:UPAcC/fc0
1つの一連の処理で一度に10回以上は失敗する可能性があるんだけど
例外って複数ストックできる?
224デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2021/04/16(金) 21:36:31.59ID:WuJ5uN/Q0
できるよ
ValidationでエラーためてIsValidで確認するのと同じ
225デフォルトの名無しさん (ワッチョイ b733-UBeK)
2021/04/16(金) 21:41:19.41ID:AE+nXjed0
try{
...
}catch(Exception ex){
exceptions.Add(ex);
}finally{
continue;
}

こんな糞コード見たことないけどな。
226デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/16(金) 21:41:25.62ID:UPAcC/fc0
デーモンコアと
マイナスドライバーを設定
try{
while(米が勝つまで回す){
@測る
Aマイナスドライバーを動かす
}
}
finally
{
Bデーモンコアを離す
Cif(青い光りが見えた){
Dみんなを退避
E逃げる
F救急車を呼ぶ
G遺書を書く
}
}

大体こんな処理なんだけど
B〜Gは途中で例外起きても
最後までやってほしいらしい
っていう一連の処理なんだ
どのエラーや例外も全部保存したい

>>224
なんかサンプルないですかね?
227デフォルトの名無しさん (ワッチョイ 572d-pvza)
2021/04/16(金) 21:53:27.03ID:XmBIRBCo0
溜めておいた例外を最後にAggregateExceptionのInnnerExceptionsにセットして投げれば
228デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/16(金) 21:54:23.20ID:UPAcC/fc0
>>227
なんかそういう処理の書き方の流れが知りたい感じです
229デフォルトの名無しさん (ワッチョイ ff63-7LQ7)
2021/04/16(金) 22:18:19.07ID:57BTnFcs0
年内に死にそう
230デフォルトの名無しさん (ワッチョイ bf42-tdH6)
2021/04/16(金) 22:48:51.32ID:yteCGRud0
NlogつかってファイルかDBに残すのが現実的じゃね?
https://nlog-project.org/
こんなやつ
231デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/17(土) 00:39:50.34ID:v4ZcCEOKa
>>223
失敗してても処理が継続される時点でそれを例外を呼ぶべきか、そもそも疑問に感じるね。
232デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/17(土) 01:02:22.39ID:v4ZcCEOKa
class DaemonSequenceException:Exception
{
  public Exception FooResult { get; set; }
  public Exception BarResult { get; set; }
....
}
とかみたいに他の部分の成否と無関係に実行できる各部分に名前をつけて、
その部分の例外をプロパティーで持つとかするのかね知らんけど
233デフォルトの名無しさん (ワッチョイ ff02-L6pe)
2021/04/17(土) 10:56:45.87ID:F6GtSG/H0
DirectoryInfo.GetDirectories は例外を送出するけど処理は継続する
234デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/17(土) 20:32:02.82ID:mfYtpggw0
まあ、結論としては
c#的にはこういう複数の処理が失敗するまたは終了処理も失敗するケースは言語的には完全に想定外ってことですかね
235デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/17(土) 20:42:29.21ID:IkH2FR7eM
>>234
そもそも一体何をしたいのかさっぱりわからん
記録したいだけなのか失敗毎になにか処理したいのか
236デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/17(土) 20:47:08.33ID:mfYtpggw0
>>235
1メソッドでたくさん失敗するんです
でも例外って1つしか返せないじゃないですか?
237デフォルトの名無しさん (ワッチョイ 572d-pvza)
2021/04/17(土) 20:47:45.31ID:7MTKb57l0
>>234
地道に処理毎にtry{}catch(){}で囲めばいいだけ
言語のせいにするのはお門違い
238デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/17(土) 20:50:06.01ID:mfYtpggw0
>>237
そもそも例外で返すのが間違いということでしょうか?
239デフォルトの名無しさん (ワッチョイ 572d-pvza)
2021/04/17(土) 20:56:09.74ID:7MTKb57l0
>>238
<1>
var exceptions = new List<Exception>();

<2> (処理の数だけ作る)
try
{
 処理
}
catch( Exception e )
{
exceptions.Add( e );
}

<3>
throw new AggregateException( exceptions );
240デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/17(土) 20:59:45.02ID:mfYtpggw0
>>239
ありがとうございます
それって受け側ってどう書くんでしょうか?
241デフォルトの名無しさん (ワッチョイ 777b-B9Cj)
2021/04/17(土) 21:15:57.36ID:PG7156wz0
>>240
受け側って何を指すのかわからないけどエラーをcatchしておいて投げなおしているだけじゃね
>>230の考え方でエラー起こるたびに「〜の処理中に〜のエラーが起きました」って全部記録する形から作っていけば?
エラー発生しても続行させる処理の方が大変になると思うしとりあえず一通り作ってみた方がいい
242デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/17(土) 21:17:13.40ID:8nmJAkjBM
>>236
だから受け側で何をしたいんだよ…
243デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/17(土) 21:20:05.07ID:mfYtpggw0
>>241
普通に

try
{
}
catch(exception ex)
{
}

でaggregateexceptionってキャッチできますか?
244デフォルトの名無しさん (ワッチョイ 3778-tdH6)
2021/04/17(土) 21:23:05.33ID:gq87BRHm0
簡単なサンプルで試してみればいいでしょ…
245デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/17(土) 21:24:17.27ID:3+8Yd0vAa
たぶん欲しいのはエラーのログなんだろうね。
あるいはPOSTでやるようなチェックリスト?

例外オブジェクトをエラーを表す目的で使ってもいいとは思うけど、
何がしたいのか目的をはっきりさせずに「例外をストックできるか?」とか質問するから
みんな混乱する。
246デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/17(土) 21:38:41.80ID:8nmJAkjBM
なぜかこういう人は何をしたいのか書かないんだよな…
まあもういいや、相手もしてもしょうがなさそうだし
247デフォルトの名無しさん (ワッチョイ 572d-pvza)
2021/04/17(土) 21:38:56.54ID:7MTKb57l0
>>243
それで出来るけど、catch( AggregateException ex )で受けた方が
AggregateException.InnerExceptionsを参照しやすくていいんじゃない
248デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/17(土) 21:42:46.43ID:mfYtpggw0
>>246
正直
俺もよくわからない(笑)
249デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/17(土) 21:43:49.75ID:mfYtpggw0
>>247
ありがとうございます
受け側はなんの例外がくるかしらないんですよ多分
250デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2021/04/17(土) 21:51:17.10ID:6GAIvEwc0
例外を見ればどの処理で発生した例外なのか確実に分かる場合はいいけど
そうじゃないならList<Exception>だとたぶん困るよね
251デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/17(土) 22:17:04.15ID:svTSVNg/M
>>250
どこで発生した例外かを知りたいなら例外にその情報を入れとけば良いだけだろ
252デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2021/04/17(土) 22:42:26.62ID:6GAIvEwc0
>>251
>>239の例ではそれをやってないから困るんじゃねって話なんだけどさ
253デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/17(土) 23:35:25.92ID:svTSVNg/M
>>252
ExceptionでもSourceに入れるとかMessageの一部に入れるとかやりようはいくらでもあるだろ
254デフォルトの名無しさん (ブーイモ MMcf-eihA)
2021/04/17(土) 23:49:44.95ID:CX6JLVJZM
エスパー回答すると、Disposeをしっかり作ってusingを使え、が顧客が本当に欲しかったもの
255デフォルトの名無しさん (ワッチョイ d768-B9Cj)
2021/04/18(日) 00:46:37.58ID:hpbx6fns0
C#の話と関係無いかもしれませんが、パッケージの開発環境って今の時代何がありますか?
完全にオフラインで使える開発環境とかって無いんでしょうか?コマンドプロンプトしか無いんでしょうか?
256デフォルトの名無しさん (ラクッペペ MM8f-aCHF)
2021/04/18(日) 01:09:20.83ID:IgLv47etM
落ち着け(´・ω・`)
パッケージ、開発環境、コマンドプロンプト
全然話が繋がっていない
257デフォルトの名無しさん (ワッチョイ bf62-rOyz)
2021/04/18(日) 08:55:30.53ID:v8qpskqd0
開発環境と言われても困るな
聞きたいのはここら辺?
https://it-kyujin.jp/article/detail/1512/
258デフォルトの名無しさん (ワッチョイ 3754-n3xY)
2021/04/18(日) 18:43:20.44ID:H0K908230
なんとなくエスパーすると、開発ソフトをインストールさえすれば、その後はネット非接続で何でも開発出来る環境が理想ってこと?
なら、たぶん無い。

.net sdk使って、標準ライブラリだけ使うなら出来るんかな?
結局必要なライブラリやらランタイムをDLするか、他のPCでDLして開発PCに入れる事になりそうだけど。
259デフォルトの名無しさん (ワッチョイ 97b5-Ct9k)
2021/04/18(日) 18:52:54.76ID:qPyS0oex0
>>258
待て待て、標準ライブラリだけでもオフラインで開発できるなら、回答しては「Yes」じゃないか?
特に、その「他のPCでDLして開発PCに入れる事になりそうだけど」が出来るんだしさ

>>255
目的を話せ
俺のエスパー能力をフル発揮すると、
セキュリティ上、スタンドアローンで動かさんといかんPCがあって、そこで開発したいだよな?
260デフォルトの名無しさん (ワッチョイ d768-B9Cj)
2021/04/18(日) 21:38:47.12ID:hpbx6fns0
>>258
ありがとうございます!!!
環境を自分で作る以外ないんですかね。無謀すぎますね。
コンパイラ作るわけじゃないですからね統合環境は。
>>259
そうそう単にセキュリティの心配です。
オフラインだと全く外部に漏れる心配ないわけじゃないですか。
めちゃくちゃ安心するじゃないですか。

何でインターネットに繋いでないとプログラミング環境が整わないような
状況なんでしょうか?どう考えたってオフラインのほうがよくないですか?
261デフォルトの名無しさん (ワッチョイ d7ac-HAyt)
2021/04/18(日) 23:39:25.09ID:svx6jcyS0
今はネットワーク繋いでなんぼの時代だから
262デフォルトの名無しさん (テテンテンテン MM8f-LzhE)
2021/04/18(日) 23:42:54.47ID:4BU0O/MkM
そういうセキュリティの気にし方をするのであれば、普段使いのPCとは別に
個人情報を一切入れないPCを1台用意して開発勉強専用にするのが一番安心できると思うよ
外に漏れて困るようなレベルのコードを書くならダメだけどさ

というかMicrosoftDocsやGitHubやStackOverflow/Qiitaとか一切閲覧できない環境で
NuGetやNPMに登録されてる出来合いのライブラリもまったく利用しない縛りを入れて
自分の能力だけで1から100までコードを書けるなんてすごいなあ
俺にはそんな縛りプレイしてたらとてもじゃないけど開発にならないや
263デフォルトの名無しさん (ワッチョイ 9fad-EDaw)
2021/04/19(月) 01:35:18.62ID:X+u8pzLd0
インターネットにつながっていないが故に管理がおろそかになってパッチ適用がされない弊害の方がやっかい
日立のランサムウェアなんかはまさにそれ
264デフォルトの名無しさん (ワッチョイ bf68-tdH6)
2021/04/19(月) 01:49:10.86ID:c6NDAp6p0
構造体(値型)を関数の参照渡し以外で、参照する方法ってありますでしょうか?
配列の構造体にアクセスするコードを書いているのですが、
逐一配列の添字計算が入るのも嫌なので避けたいと思っています。
添字の数は関数の中では変わりません。
今は関数の参照渡しで使っていますが、他に方法は無いのかなと思いまして。
265デフォルトの名無しさん (ワッチョイ 375f-QJa2)
2021/04/19(月) 02:02:38.37ID:Kd9UEe0s0
>>264
refローカル変数じゃあかんの?
266デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/19(月) 02:03:15.10ID:lMV2Jqgd0
>>264
理想形が見えねぇ
267デフォルトの名無しさん (ワッチョイ b733-UBeK)
2021/04/19(月) 02:06:16.22ID:4lrHWi0u0
配列の構造体って何?
268デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/19(月) 02:06:36.98ID:XVH2We7ia
>>264
策士策に溺れてはいけない
愚直に一時変数を使いましょう
269デフォルトの名無しさん (ワッチョイ bf68-tdH6)
2021/04/19(月) 02:14:43.49ID:c6NDAp6p0
>>265
ref ってローカル変数に使えるんですね!
前に軽く試した時には右辺値にしかrefを記載してなかったので、
左辺の定義にもrefを記載すれば行けました。
有難うございました!
270デフォルトの名無しさん (ワッチョイ fff2-9WMT)
2021/04/19(月) 03:18:25.46ID:RtpbkBzw0
オフライン環境での開発だけど、
VS Community2019のオフラインインストーラをダウンロードして
オフライン環境に持ち込んで使ってる
c#でフォームのデスクトップアプリしか作らんので特に困ってない
271デフォルトの名無しさん (ワッチョイ 5724-DdNk)
2021/04/19(月) 07:43:09.06ID:rq760clV0
>>264
var p = &array[5];
272デフォルトの名無しさん (ブーイモ MMbb-Vz79)
2021/04/19(月) 07:51:00.81ID:trWXRHySM
ゆう君みたいにCSCで開発するのだ
273デフォルトの名無しさん (ワッチョイ 9fad-EDaw)
2021/04/19(月) 08:22:30.53ID:X+u8pzLd0
>>270
バグや脆弱性対応は?VS2019って頻繁に更新されてるけど
274デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/19(月) 08:27:27.76ID:eEvFTkhNM
>>273
offlineインストーラーも知らないのは開発者としてどうかと思う
275デフォルトの名無しさん (ワッチョイ 9736-pvza)
2021/04/19(月) 09:01:07.98ID:qHBf6kdf0
getsetプロパティをFuncで呼び出せるようにしたいのですが可能でしょうか?
メソッドで括って呼び出せば良いのだろうけど直接Funcに入れる方法があるならそうしたいです
276デフォルトの名無しさん (ワッチョイ 7f7c-xwMB)
2021/04/19(月) 09:10:46.59ID:a1UfxEQG0
よく分からん
Func<string> func = () => person.Name;

Func<string> func = person.Name;
みたいに書きたいってことか? 無理だけど
func = person.Name.Surname;
のときperson.Nameがいつ解決されるのか判断つかないし
277デフォルトの名無しさん (ワッチョイ 9736-pvza)
2021/04/19(月) 09:26:07.33ID:qHBf6kdf0
>>276
返信ありがとうございます

イメージとしては複数のクラスで
public bool hoge {set => test = value; }
が複数あって
List<Func<bool, bool>> func;
に追加していってキャンセルとか何らかの処理後に一括して戻したい、と言うような処理です

やはりプロパティってメソッドみたくできないFuncに入れる事ができないんでしょうか
他の方法ですっきりする方法はないですかね?
278デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/19(月) 09:56:26.88ID:lMV2Jqgd0
やりたいことがさっぱりわからんな
ダイアログのキャンセル押したら画面ごと破棄でいいじゃん
279デフォルトの名無しさん (ワッチョイ bf62-rOyz)
2021/04/19(月) 10:04:55.77ID:aTPYfb0+0
>>277
List<Action<bool>> list;
list.Add(b => hoge = b);
こういうこと?
280デフォルトの名無しさん (ワントンキン MM4f-Ct+I)
2021/04/19(月) 10:21:06.38ID:8YZTYag9M
まあ気持ちはわかる
(Webでなく)GUIアプリで独学した初心者って、エンティティオブジェクトをアプリ全体で生存させるような設計をしちゃうんだよな
オブジェクト指向を普通に解釈すりゃそれが自然なんだけど、実際そういう設計はしないんだよ
ドメインモデルだろうとトランザクションスクリプトだろうと、エンティティはトランザクション毎に作る
281デフォルトの名無しさん (ワッチョイ 9fad-EDaw)
2021/04/19(月) 10:39:20.82ID:X+u8pzLd0
>>274
知らないって決めつけてるのはどうかと思う
単にどうしてるのか聞いているだけ
282デフォルトの名無しさん (ベーイモ MM4f-XYuH)
2021/04/19(月) 10:44:42.24ID:7XobiDdgM
>>278破棄と生成できれば良いのですがちょっと難しい。ユーザーコントロールでバインドしていて各コントロールは値を参照しあってます
今回は画面が切り替わったときに表示非表示を変える戻す、なので直接は関係ないのですが影響度を減らしたい
>>279
>>276見直してプロパティを直接でなくてもラムダ式でいけそうなことに気付き>>279さんの形を思い浮かびました、今出掛けてるので確認は後ですが多分解決できそうです

皆様ありがとうございます
解決しなければまた聞くかもです
ありがとうございます
283デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/19(月) 10:58:10.70ID:Ee/wQKnTM
>>281
知ってて聞くのはもっとどうかと思う
284デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/19(月) 12:13:19.27ID:lMV2Jqgd0
>>282
なんだかとってもおかしいよ
285デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/19(月) 12:18:18.64ID:lMV2Jqgd0
これあれじゃね?
開始日と終了日に期間制限があると値が設定できないやつ(笑)
286デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/19(月) 12:41:53.53ID:/vkKNniZa
何がしたいのかよく分からないね。

キャンセル要求が発生したら初期状態に戻したいなら
素直に初期状態をまるごとキャッシュしておく方が分かりやすいんじゃないかと思うけど

もっと素直なのはそもそもApplyするまでUIの値をモデルに反映しないことだよね。

まあたぶん要件を説明しきれてないんだろうけど
287デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2021/04/19(月) 12:42:25.65ID:eG8AP0Ht0
>>282
元に戻す処理を管理したほうがいいケースなのか
元の状態を管理したほうがいいケースなのかを考えたほうがいいよ
288デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/19(月) 13:39:27.50ID:lMV2Jqgd0
まあ、設定画面がモードレスでリアルタイムで値を変えたいときもあるかもしれんが
それやると
地獄の一丁目にご招待って感じ(笑)
289デフォルトの名無しさん (ワッチョイ ff02-L6pe)
2021/04/19(月) 13:46:03.66ID:0ewLpJwG0
Contract?
290デフォルトの名無しさん (ブーイモ MMcf-Vz79)
2021/04/19(月) 13:50:22.81ID:wot3CwpcM
>>288
更にundo/redoの機能を付けてくれまいか?

で更なる深淵へw
291デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/19(月) 14:13:33.61ID:lMV2Jqgd0
>>290
影響する値でエラーが出てもそれとは関係ない表示はできる限り続けて欲しい(プレビューが見えないから)
エラーが出てるときは値の変更で表示は変わっても最後の反映はできないようにしてほしい
でも値を変更してる最中のundo,redoは効くようにして欲しい

って割とありがち要求だよね

モードレスやった時点で地獄を覚悟しろって感じ
292デフォルトの名無しさん (ラクッペペ MM8f-ZP9E)
2021/04/19(月) 14:17:30.66ID:5/g8GOz6M
そのためのMVVMですから!
293デフォルトの名無しさん (ワッチョイ 9fad-EDaw)
2021/04/19(月) 16:11:25.84ID:X+u8pzLd0
>>283
めんどくさいのに本当にしてるのか気になったから聞いたんだけど何かおかしい?
294デフォルトの名無しさん (ワッチョイ 57ad-IUyB)
2021/04/19(月) 16:13:54.25ID:LEIxqEAm0
うちにも本当にしてる端末はあるぞ。
むしろ自動で上げたくないしな。
既知の問題でワークアラウンドがあるならそれで良いというケースもあるし。
リリースノートめちゃくちゃ読む。
295デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/19(月) 16:51:10.44ID:qG+FkDTLM
>>293
ネットに繋げないならそうするしかないし言うほど面倒でもないだろ
そもそもネットに繋いでる場合でもアップデートがある度に適用なんてしないよ
>>294が書いてるように修正内容見て影響ないとかワークアラウンドがあるなら適用しない
296デフォルトの名無しさん (スッップ Sdbf-EDaw)
2021/04/19(月) 16:56:35.95ID:Ly5FRhD3d
オフラインがめんどうとか何言ってんの?開発する時にはセキュリティ上当然やろ
オンラインとか最近の開発ではありえない
297デフォルトの名無しさん (ワントンキン MM4b-Ct+I)
2021/04/19(月) 17:17:52.34ID:ssZtrIutM
今のVSって最新メジャーバージョンは完全に人柱向けだからなあ
アップデートをすぐに入れられないような環境だと詰む可能性があるからむしろリスクが大きい
最新版を追えない環境なら2017使ったほうがいいよ
298デフォルトの名無しさん (ラクッペペ MM8f-aCHF)
2021/04/19(月) 17:59:46.65ID:sAdoeVNCM
更新頻度はどちらも大して変わらん

https://docs.microsoft.com/ja-jp/visualstudio/releases/2019/release-notes#visual-studio-2019-version-169-releases

https://docs.microsoft.com/ja-jp/visualstudio/releasenotes/vs2017-relnotes#visual-studio-2017-version-159-releases
299デフォルトの名無しさん (テテンテンテン MM8f-Ct+I)
2021/04/19(月) 18:14:05.65ID:HuLqOw9zM
>>298
中身読めよ
2017の方は脆弱性修正と軽微なバグ修正しかやってない
300デフォルトの名無しさん (ワッチョイ d793-vsd6)
2021/04/20(火) 00:39:35.61ID:TLYpp//E0
docker「…」
301デフォルトの名無しさん (ワッチョイ b72d-GJAZ)
2021/04/20(火) 02:18:25.03ID:hE4KV5oa0
C#を勉強中です
Delegateの機能はわかったのですが、これはどのような状況で使うのか思いつきません
こう使うと便利だという例を教えてください
302デフォルトの名無しさん (ワッチョイ 97ad-CpDH)
2021/04/20(火) 02:19:59.60ID:X693LKGY0
それは繊細な問題ですね
303デフォルトの名無しさん (ワッチョイ 9fad-EDaw)
2021/04/20(火) 02:23:17.77ID:mCU9Z3ky0
delegateの機能が解説されていた箇所に書いてなかったの?書いてあったけどそれを理解できないってこと?
304デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2021/04/20(火) 02:33:44.44ID:KMnW7zDR0
>>301
そのわかったというDelegateの機能を説明してみてもらってもいい?
305デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/20(火) 02:54:23.22ID:C6K6mBrBa
>>301
真面目な話、無理に今理解しようとしなくていいと思うよ。
コード書き出ぜば自然に分かる。
後回しにして先に進んだ方が吉。
306デフォルトの名無しさん (ワッチョイ b72d-GJAZ)
2021/04/20(火) 03:07:10.55ID:hE4KV5oa0
>>303
機能の解説だけでどのようなときに使うかは書いてなかったです

Delegate型の説明と作り方の後に例としてConsole.WriteLineでHelloと表示するメソッドを
新たに作ったDelegate型のaという変数に突っ込んでa()を実行して
ほら表示できたでしょという感じだったのだけれど
だからどうしたとしか思わなかったです
307デフォルトの名無しさん (ワッチョイ b7b0-tdH6)
2021/04/20(火) 03:22:02.21ID:HBCxLvi90
自分も変数のシャドーイングとか何が便利なのかわからないです
脳みそのメモリ圧迫されるのでは
308デフォルトの名無しさん (ワッチョイ b7b0-tdH6)
2021/04/20(火) 03:27:57.34ID:HBCxLvi90
>>306
こういうメソッドの引数がデリゲートで、まさに便利な使い方だと思ってる
https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.generic.list-1.removeall?view=net-5.0

間違ってたら訂正よろしくです
309デフォルトの名無しさん (ワッチョイ b72d-GJAZ)
2021/04/20(火) 03:33:39.19ID:hE4KV5oa0
>>308
これがdelegateだとしたら意識しないで使ってました
まさかこれが..
310デフォルトの名無しさん (ワッチョイ b768-tdH6)
2021/04/20(火) 04:41:05.35ID:IRlXB/YU0
デリゲートは自分で使うもんじゃないと思ってた。
Buttonをクリックしたら、このメソッド実行してねってのを、IDEが作ってくれる奴だから。

だから、「こんなときどうしよう」って悩んだときに、
そうだ!デレゲートってのがあるんだよ!っていう、よっぽどの場合に、入門書を読めば良いと思う。
初めてのC#みたいな本がお薦めなんだけどね。
311デフォルトの名無しさん (ワッチョイ ffda-wDCo)
2021/04/20(火) 05:04:14.96ID:mPkgRyxP0
>>306
試しにhello2 からhello100まで突っ込んでみよう
312デフォルトの名無しさん (エアペラ SDbb-vsd6)
2021/04/20(火) 08:17:28.06ID:UlsxkGg7D
デリゲート定期
313デフォルトの名無しさん (ラクッペペ MM8f-ZP9E)
2021/04/20(火) 08:29:39.05ID:2x6gxMkWM
デリケートに好きして
314デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2021/04/20(火) 09:39:52.16ID:KMnW7zDR0
>>306
わからなかったらまず最初にリファレンスを読むといい
Delegateとは何かどういう目的で使われるのか普通に書いてる
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/delegates/
315デフォルトの名無しさん (オッペケ Sr8b-HAyt)
2021/04/20(火) 09:49:15.79ID:UooL86SRr
まあこういうものが腹に落ちるようになるのが楽しいとこでもある
316デフォルトの名無しさん (ワッチョイ fff2-9WMT)
2021/04/20(火) 11:01:31.30ID:wGU9ai2r0
>>313
パジャマのままで
317デフォルトの名無しさん (ワッチョイ 972c-KAGY)
2021/04/20(火) 12:07:45.54ID:7xfghfsY0
例えば、Ruby では、Forwardable でインスタンス変数に委譲できる

自分で配列クラスから、Stack を作って、その内のpush, pop だけを使いたい場合、
もし配列を継承・is-a すると、余計なメソッドまで継承してしまうので、それらを使いたくない。
そういう場合に、委譲・has-a で、インスタンス変数に委譲して、使うメソッドも限定できる

Go, Elixir も継承がない、委譲だけ。
継承は大掛かり。
使わないメソッドを呼ばれてしまう可能性があるから

また、誰でも使うような、String クラスなどを継承して、メソッドを追加されるのも嫌。
そういう継承は想定外だから

素人は、よくそういう事をする。
継承用のクラスじゃないのに継承したりする

require 'forwardable'

class Stack
extend Forwardable

def initialize( ) @ary = [ ] end
def_delegators( :@ary, :push, :pop )
end

stack = Stack.new
stack.push 1
stack.push 2
stack.pop

p stack #=> #<Stack: @ary=[1]>
318デフォルトの名無しさん (ワッチョイ 972c-KAGY)
2021/04/20(火) 12:25:42.67ID:7xfghfsY0
>>307
shadowing とは、内外の変数は、別々の扱いで、
内側のスコープに入ると、内側が優先されて、
外側の同じ変数名が隠されること。
その際、外側の変数には影響を与えない。

Ruby では、外側のa は10で、内側のブロックスコープでは、
同名の変数aを使っても、外側の変数には影響を与えない。
ブロックスコープを抜けると、aは10のまま

a = 10
ary = [ 1, 2 ]

ary.each do |a|
puts "ブロック内: #{ a }"
end

p a

出力
ブロック内: 1
ブロック内: 2
10
319デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/20(火) 13:01:47.56ID:TyJgyLsfa
このスレはRubyの宝石箱や!まで読んだ。
320デフォルトの名無しさん (ワッチョイ ffda-wDCo)
2021/04/20(火) 20:38:25.40ID:mPkgRyxP0
火入れするかあんたのはスピネルや
と言うべきか
321デフォルトの名無しさん (ワッチョイ b7b0-tdH6)
2021/04/20(火) 21:04:57.15ID:HBCxLvi90
なにかのネタというかエンジニアジョークなのかな? わからないや

シャドーイングがどんな機能なのかは単純だからわかってるつもりだけど、一見同じ変数名を扱えることで何が嬉しいの?って話です
コード読んでて混乱しそうなので無い方が綺麗だと思うのだが、自分の脳みそが貧弱なだけかな?
322デフォルトの名無しさん (ワッチョイ bf68-Zgro)
2021/04/20(火) 21:05:35.48ID:3ANNQsEU0
c から来た人なんだけど、デリゲートって関数ポインターの認識
323デフォルトの名無しさん (ワッチョイ bf68-Zgro)
2021/04/20(火) 21:08:17.98ID:3ANNQsEU0
半角の++が書き込めない。なんだこれ。
324デフォルトの名無しさん (ワッチョイ ffda-wDCo)
2021/04/20(火) 21:28:46.29ID:mPkgRyxP0
>>322
それがリストになっているので
複数の呼び出しを一気に行える。
という感じ
325デフォルトの名無しさん (ワッチョイ bfda-bvUB)
2021/04/20(火) 22:48:16.53ID:wpz1WDBF0
メモリリークの温床だがな。。
326デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/20(火) 23:13:15.40ID:oW++joyya
>>321
嬉しいでしょ。
まあぶっちゃけフィールドをローカル変数で隠蔽することはあまりないと思うけどね。

>>322
Cより機械語レベルで考えた方が分かりやすいね。
要はcall命令のオペランドだよね
厳密にはthisポインタの情報を含むから違うんだろうけど概念的には
327デフォルトの名無しさん (ワッチョイ 9fe4-2EJ2)
2021/04/20(火) 23:17:25.34ID:+w5LC8La0
初歩的な質問ですいません
オブジェクト初期化子とコンストラクタは何が違うんでしょうか?
やってることは同じのように感じるのですが…
328デフォルトの名無しさん (ワッチョイ 375f-QJa2)
2021/04/21(水) 01:35:22.73ID:qZ+z+JK20
>>324
デリケートって追加や削除されるたびに全リストコピーしてるんだっけ?
ぶっちゃけ効率考えたらデリケートよりインターフェースをリストで持たせた方が効率はいいよね
329デフォルトの名無しさん (ワッチョイ ff63-7LQ7)
2021/04/21(水) 01:38:27.35ID:GnM/pYwY0
どいつもこいつもデリケートデリケートってよお!
330デフォルトの名無しさん (ワッチョイ 97b5-Ct9k)
2021/04/21(水) 02:00:12.49ID:9Dxtj7zY0
♪シーズソーデリケート(デリケート、デリケート)
331デフォルトの名無しさん (ワッチョイ b768-tdH6)
2021/04/21(水) 05:50:25.83ID:iaWKhvh90
>>327
初期化子は参照側が任意に行う。代入しか出来ない。
コンストラクタはオブジェクト側が初期化のルールを決めて、ロジックが書ける。
ってことじゃないのかな。
332デフォルトの名無しさん (ワッチョイ bf62-rOyz)
2021/04/21(水) 09:15:40.20ID:hAG7zCyL0
>>327
コンストラクタにはそのオブェクトを生成するために必要なものを渡してる
初期化子は特に生成には関係ないない項目にも初期値を設定してるイメージ
使う側はあまり気にしなくていいけど用意する側は意識しといた方がいいよ
333デフォルトの名無しさん (スッップ Sdbf-QJa2)
2021/04/21(水) 09:18:16.78ID:zaNQ2p2Bd
>>327
初期化子はフィールド単体に対しての初期化で、コンストラクタはクラス全体に対しての初期化って考えたらイメージしやすいかも
まあ、初期化子を指定しない場合でも、def aultで初期化されるんだけどね
334デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/21(水) 11:04:40.00ID:9tzd621Ta
>>327
そもそも問題設定が間違っていると思うよ。
正しい問題設定は「オブジェクト初期化子って何?」

オブジェクト初期化子とは、コンストラクタ呼び出しと、複数の任意のプロパティーやフィールドへの
値の設定をインラインで書けるようにした糖衣構文。
335デフォルトの名無しさん (ワッチョイ d790-EWF6)
2021/04/21(水) 16:34:49.04ID:yCZSrEkI0
>>326
実を言うとnull safetyのせいで隠蔽したくなるんだな

もちろん、別の名前つければいいけど
336デフォルトの名無しさん (ワッチョイ d790-EWF6)
2021/04/21(水) 16:56:18.92ID:yCZSrEkI0
C#に限らずnull safetyの言語で、特にビューモデルのクラスでnullableなフィールドを宣言する機会が多いいんだが、
フィールドはメソッド内でnullチェックしても非nullableに昇格しない(kotlinでいうスマートキャストが効かない)
から、
if (field == null)
 throw new IllegalState
var field = field!; // わざわざnon nullableなローカル変数に代入で、ローカル変数に適当な名前が思い付かないのでフィールド名と同じ名前で隠蔽
337デフォルトの名無しさん (ワッチョイ d790-EWF6)
2021/04/21(水) 17:04:17.58ID:yCZSrEkI0
メソッド内で1,2回とか参照しないのであればわざわざnon nullableなローカル変数に代入しないが

特にkotlinとかスコープ演算子とかもあるがkotlinは「!!」と二重だからこれがいっぱい現れるとソースが見苦しい...
338デフォルトの名無しさん (ワッチョイ 1701-UBeK)
2021/04/21(水) 22:17:44.76ID:4gUtTQ4z0
>>333
違うだろ。C#ならフィールドとプロパティをきちんと区別しないといかん。
339デフォルトの名無しさん (ブーイモ MMcf-eihA)
2021/04/22(木) 08:19:06.23ID:b0xCXWo1M
x = a ?? b; ←null合体演算子

x.?method() ←これなんて言うんだっけ?
340デフォルトの名無しさん (ワッチョイ ff2c-xwMB)
2021/04/22(木) 08:59:45.35ID:bBpUq1Fa0
ピリオドとクエスチョンの位置逆だけどnull条件演算子
341デフォルトの名無しさん (ワッチョイ d76e-vWSz)
2021/04/22(木) 10:42:48.70ID:XvsGXOnj0
linuxとwindowsで動くguiソフト作りたいんですが、共通の開発環境と言語ってあるでしょうか?
openglを扱ってみたいのですが、c++とqtが多いんでしょうか?
c++を扱うと思うので、erectronやwxpythonなどは除外されるんでしょうかね。
342デフォルトの名無しさん (ラクッペペ MM8f-aCHF)
2021/04/22(木) 11:01:31.56ID:8IHXhPWQM
>>341
C++の話をするのに何故C#のスレに来たの?
343デフォルトの名無しさん (ワッチョイ bf62-rOyz)
2021/04/22(木) 11:15:40.26ID:wjS6T4Xy0
>>339
逆にnullだったらそのままにしたいってことが多いんだけどそういう演算子ないよね

int? x = null;
int? 2x = (x == null ) ? null : (2 * x);

みたいな
344デフォルトの名無しさん (ワッチョイ d76e-vWSz)
2021/04/22(木) 11:16:13.25ID:XvsGXOnj0
opengl関係無いアプリも作りたいので(´・ω・`)
c#は恐らくlinuxでは動かないものですよね
345デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2021/04/22(木) 12:12:49.77ID:fYKo/KH70
>>343
nullだったらメソッドやプロパティにアクセスせずnullを返すのがnull条件演算子(?.)
そのint?のケースは単に`2 * x`でnullが返されるようになってる
346デフォルトの名無しさん (ブーイモ MMbb-Vz79)
2021/04/22(木) 12:36:03.10ID:TgsR4gUfM
>>344
人脈があれば出来るぞ
347デフォルトの名無しさん (アウアウウー Sa1b-u2/C)
2021/04/22(木) 13:12:31.50ID:V2Z7bz83a
>>344
Unityならwindowsでもlinuxでも動くはず
348デフォルトの名無しさん (ワッチョイ ff33-ubdj)
2021/04/22(木) 13:26:29.41ID:r34CJZmP0
.NET MAUIがそういうの目指してるんだろうけれど…
349デフォルトの名無しさん (ワッチョイ d76e-vWSz)
2021/04/22(木) 14:05:53.62ID:XvsGXOnj0
>>347
unityをguiアプリ開発に使いませんよね 普通
350デフォルトの名無しさん (ワッチョイ 375f-QJa2)
2021/04/22(木) 14:23:56.91ID:wSGfQWAL0
>>349
mono 使えばいいんじゃないの?
351デフォルトの名無しさん (ワッチョイ bf62-rOyz)
2021/04/22(木) 15:04:02.14ID:wjS6T4Xy0
>>345
条件演算子を使えないパターンの例をあげたつもりだったんだけどそういう動作すんのか
x.method()に対応するならmethod(x);にも対応してくれてもいいのにって思った
352デフォルトの名無しさん (ワッチョイ d76e-vWSz)
2021/04/22(木) 15:44:38.28ID:XvsGXOnj0
>>350
monoやxamarinはc#ですよね。
c#製アプリはlinuxで動かないと効かされていましたが。
あと、openglなので、c++ではないですか?
353デフォルトの名無しさん (ブーイモ MMbb-Vz79)
2021/04/22(木) 15:47:59.35ID:TgsR4gUfM
.net core も動くぞ
354デフォルトの名無しさん (ワッチョイ 778e-u7Bp)
2021/04/22(木) 17:02:51.26ID:RDEPc8rd0
釣りだろ
355デフォルトの名無しさん (ワッチョイ ff63-7LQ7)
2021/04/22(木) 20:02:51.51ID:YBnx4+wd0
なんでも釣りって言わないで
356デフォルトの名無しさん (ワッチョイ 574f-ubdj)
2021/04/22(木) 21:59:40.16ID:8RSzlZOe0
なんでguiにunity勧める奴いるのw
357デフォルトの名無しさん (ワッチョイ ffda-wDCo)
2021/04/22(木) 22:01:36.51ID:itFZ12540
何にでもRuby勧める奴もいるだろ
358デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/22(木) 22:05:49.71ID:JJ/RFZ5mM
まあC#スレでC++連呼してるのは釣りか底抜けのバカのどちらかだからいずれにせよスルーが基本かと
359デフォルトの名無しさん (スププ Sd70-F6Jh)
2021/04/23(金) 21:53:03.64ID:e/IHU4YJd
c#でPCがアイドル状態か否か判定したくて
マウスの動きが一定時間なしで判定するのは出来たんだけど
マウスを動かさずブラウザで動画再生しているときにもアイドル状態ではない判定にしたいんだけど
どうすれば判定取れるでしょうか
360デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/23(金) 22:15:06.79ID:2LOGdF5/0
特定のキー押下でアイドル判定されない状態を追加して置いた方が今後楽じゃないかな?
361デフォルトの名無しさん (ワッチョイ 8e2c-MVqC)
2021/04/23(金) 22:40:41.15ID:vlx7cXWJ0
メディアプレイヤーの類で動画再生は構わないの?
ブラウザのバックグランドタブで再生中の場合は?

一応各プロセス各スレッドがSetExecutionStateした結果のステートはこんな感じで取れるらしい
https://stackoverflow.com/questions/10970625/how-windows-decides-to-show-the-screensave
362デフォルトの名無しさん (ワッチョイ 8e2c-MVqC)
2021/04/23(金) 22:41:57.81ID:vlx7cXWJ0
SetThreadExecutionStateだった
363デフォルトの名無しさん (ワッチョイ 1c79-BShP)
2021/04/23(金) 23:45:20.80ID:tWGuVFO60
その他の案
スクリーンセーバーのプロセスをトリガに利用にする
例えば「ブランク」のスクリーンセーバーが起動してたら、
「scrnsave.scr」がプロセス一覧から取得できる(はず)
つまり*.scrが動いてたら確実にアイドル状態と判断できる
この方法はスクリーンセーバーを無効にしてたら意味ないけど、それはレジストリから判断できるはず
問題はアイドル+スクリーンセーバーの起動時間まで待つ必要がある事
364デフォルトの名無しさん (ワッチョイ 7cda-otCu)
2021/04/24(土) 00:09:09.60ID:gwk+qBm00
つ WM _ enteridle
365デフォルトの名無しさん (ワッチョイ 0c01-UN6T)
2021/04/24(土) 00:13:28.13ID:RPGHdVOi0
タスクスケジューラでアイドル状態を条件にプログラムを起動できる
コードから直接利用する方法があるかどうかは知らない
366デフォルトの名無しさん (アウアウエー Sa6a-Nexr)
2021/04/24(土) 01:30:28.39ID:+FP4d2caa
>>359
率直に言って無理がある気が。

結局システムで正式に定義されたステートじゃないと
今たまたま何か方法を見つけ出してもいつまでそれが使えるか
わかんないよね。

スリープを抑止するプログラムが起動しているかどうかで
判定できないかとも思ったけど、ブラウザの動画再生は
たぶんスリープ抑止しないよね知らんけど
367デフォルトの名無しさん (スププ Sd70-F6Jh)
2021/04/24(土) 01:42:09.65ID:lUFfLIkMd
SetThreadExecutionStateを試してみます

>>360
同じような機能入れてたけど設定し忘れ&解除し忘れで意味なかったです
368デフォルトの名無しさん (ワッチョイ ca35-B45E)
2021/04/24(土) 11:26:55.87ID:gMqF1SGc0
GetLastInputInfo
369デフォルトの名無しさん (ワッチョイ 1c79-BShP)
2021/04/24(土) 13:52:13.80ID:gg+BSg3V0
>>361 でよさそう(未確認)
>>368 GetLastInputInfo は数ヶ月前10で試したけどうまくいかなかった
370デフォルトの名無しさん (ブーイモ MM5e-zC44)
2021/04/24(土) 14:17:41.68ID:zhh/+6W6M
.NETで文字列の見た目の幅を求めるライブラリってある?
等幅フォント前提で半角英数なら1文字分、全角漢字なら2文字分、、、といったように計算したい
371デフォルトの名無しさん (ワッチョイ a27c-ftt6)
2021/04/24(土) 14:21:02.35ID:n+JXhE4b0
https://dobon.net/vb/dotnet/graphics/measurestring.html
これじゃだめなの?
372デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/24(土) 14:34:56.09ID:CavyEmf6a
>>370
シフトJISでエンコードした時のバイト数を数えればいいと思うけど
今時そんなの何に使うの?
373デフォルトの名無しさん (ブーイモ MM5e-zC44)
2021/04/24(土) 15:01:36.07ID:zhh/+6W6M
>>371
ありがとう
でもできればプラットフォーム依存しないほうがいい

>>372
Markdownのテーブルをフォーマットしたり色々です
374デフォルトの名無しさん (ワッチョイ 66ad-JI0G)
2021/04/24(土) 15:03:28.91ID:6TA9BQj40
絵文字やサロゲートペアも考え出すとめちゃめちゃめんどくさいよね
375デフォルトの名無しさん (ワッチョイ f0ad-Wjwq)
2021/04/24(土) 15:27:27.20ID:h2P4AVL30
>>370
雑にやるなら、StringInfo.ParseCombiningCharacters2倍して、半角文字の文字数引いたら良いんじゃないの?
アクセント付き文字も半角文字に入れればそれなりに並ぶんでは?

タイ語とかアラビア語まで考える?
376デフォルトの名無しさん (ワッチョイ 0a42-On6t)
2021/04/24(土) 15:41:18.56ID:Of2cOFGz0
MeasureStringの数字を見ながら、頭がウニになったGDI+の思い出
勝手に文字の大きさ計算してくれるwpfの有り難さよ
377デフォルトの名無しさん (ワッチョイ 0c01-UN6T)
2021/04/24(土) 16:14:48.80ID:RPGHdVOi0
>>370
wcwidthとかeast asian widthで検索してみるといいと思う
https://www.nuget.org/packages/EastAsianWidthDotNet
378デフォルトの名無しさん (ブーイモ MM5e-zC44)
2021/04/24(土) 16:54:43.52ID:zhh/+6W6M
>>375
情報ども
とりあえず日本語対応できればいいかなと

>>377
あざす
これたぶん正解っぽいすね
379デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/24(土) 17:00:48.70ID:TFlZREhta
Markdownのテーブルっていうのが何かよく分からないけど、
細かいこと言えば等幅フォントであってもどの文字がどの幅で
描画されるかはフォントに依存するはずだと思うので、(一般的に半角の文字だと
されているものが半分の幅で描画される保証なんて実はないんじゃないか?)
グラフィック関係なら>>371みたいに実測するのが一番確実だよね
380デフォルトの名無しさん (ワッチョイ e27d-2xWT)
2021/04/24(土) 18:10:11.92ID:EfI17DN20
同じ文字で同じ等幅フォントで表示しても、アプリによって全角/半角相違することもあるよ
MS製品間でもVisualStudio/Officeで幅が一致しなくて以前困った記憶がある
381デフォルトの名無しさん (ワッチョイ 2a02-B0GO)
2021/04/24(土) 18:17:52.33ID:shUiIChg0
httpclientでpostした時にレスポンスヘッダーのlocationが取れないんだけど取る方法なかんかな
382デフォルトの名無しさん (ワッチョイ 8e2c-MVqC)
2021/04/24(土) 18:37:25.15ID:jBCuAF2S0
HttpClientをnewするときに渡すHttpClientHandler(.NET Core/5ならSocketsHttpHandler)の
AllowAutoRedirectをfalseにすればいけるような
383デフォルトの名無しさん (ワッチョイ 2a02-B0GO)
2021/04/25(日) 09:16:00.93ID:pCSAoCZZ0
>>382
できたわ
サンクス
384デフォルトの名無しさん (アークセー Sxd7-On6t)
2021/04/25(日) 15:07:37.80ID:hcyifmDsx
パネルに貼り付けているlabelの数を数えることってできませんか?

テキストファイルの1行目ならlabel1へ表示するってな感じにしたいのですが、
行数が少なければ↓でいいんですが、

label1.Text = File.ReadLines(FileName).Skip(0).Take(1).First();

数が多くなるとコードが長くなって修正等に時間がかかると思うんですよ。
そこでラベルの数が数えられるなら繰り返し文を使えばコードがスッキリするんじゃないかと思ったんです。
良い案のある方いらっしゃいましたらレスをお願いします。
385デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/25(日) 15:38:30.38ID:nePod60N0
>>384
controlsっているじゃん?
386デフォルトの名無しさん (ワッチョイ 3f2d-T6Cp)
2021/04/25(日) 15:45:05.88ID:jBx2XbWF0
>>384
var count = this.panel1.Controls.Cast<Control>().Count( x => x is Label );
387デフォルトの名無しさん (ワッチョイ 412f-42zS)
2021/04/25(日) 16:09:10.43ID:FaKFDW610
>>386
Controlにキャストする必要あるのか
つかOfTypeで良いんじゃねえのか

ちなみにControlsの列挙順って一定なのか?
388デフォルトの名無しさん (ワッチョイ 3f2d-T6Cp)
2021/04/25(日) 16:11:55.60ID:jBx2XbWF0
>>387
思わずCastで書いちゃったけど、OfTypeの方がいいね
389デフォルトの名無しさん (ワッチョイ 9b5f-On6t)
2021/04/25(日) 16:15:19.50ID:pX1h9NBm0
男だったらキャストして突っ張り続けろよ
390デフォルトの名無しさん (ワッチョイ 9378-On6t)
2021/04/25(日) 16:16:57.02ID:vWpG1hhV0
>>387
designerの登録順に依存するけどイジるたびに変更を確認するの馬鹿馬鹿しいから
自分はコントロール名やタブ順で並び替えてる
391デフォルトの名無しさん (ワッチョイ 412f-42zS)
2021/04/25(日) 17:17:41.16ID:FaKFDW610
>>390
(デザイナーでの)登録順ってのは「保障」されているのか?って話なんだが
ディクショナリとか一見登録順に見えても、それは条件が良いだけか実装依存な場合がほとんどだぞ

まあデザイナの定義もVSでいじるとどう変わるかわからんけどな
392デフォルトの名無しさん (ワッチョイ 3f2d-T6Cp)
2021/04/25(日) 17:43:19.45ID:jBx2XbWF0
>>391
自分で調べもせずに何でそんなに偉そうなんだw
Control.ControlCollectionはIListインターフェースを実装してるとDocsに書いてある
393デフォルトの名無しさん (ワントンキン MM42-XmRv)
2021/04/25(日) 17:57:58.07ID:NMiXqa1mM
>>388
いやCastの方がいいよ
失敗しない確信を持ってるんだから
394デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/25(日) 18:22:24.73ID:Jq50cbcAa
>>384
なんかやりたいことと質問の内容が噛み合ってないような気がw

n番目のLabelにn行目の内容を表示したいんだったら
欲しいのはLabesの数じゃなくてIEnumerable<Label>とかじゃないの?

っていうかそういう目的ならLabelじゃなくてListViewとか使った方がいいんじゃないの?w
395デフォルトの名無しさん (ワッチョイ 92da-eOAD)
2021/04/25(日) 18:45:17.32ID:6eSN7Ebq0
MVVMならもっと楽だったな
396デフォルトの名無しさん (アークセー Sxd7-On6t)
2021/04/25(日) 20:58:32.34ID:hcyifmDsx
皆様回答ありがとうございます。
Controlsプロパティに関しましては↓に
https://www.atmarkit.co.jp/fdotnet/dotnettips/224controls/controls.html
>PanelコントロールやGroupBoxコントロールなどを利用している場合には、フォームのControlsプロパティからすべてのコントロールにアクセスできるわけではない。

と書いていたのでスルーしていました。

>>394
まだ入門書を終わったばっかりでなにが正しいのかわかrない状態なので、変な感じなってるっぽいです。
ご指摘ありがとうございます。


とりあえずやりたいことはできたので、皆様本当にありがとうございました。
397デフォルトの名無しさん (ワッチョイ 0662-miHF)
2021/04/26(月) 12:04:27.44ID:aoKZLvu10
>>396
一応釘を刺しておくけど、コントロール名を変えるだけで動かなくなるような実装にならないよう気をつけてね
398デフォルトの名無しさん (ワッチョイ fb54-C+b/)
2021/04/26(月) 15:48:20.09ID:57LVbzrx0
>>397
横からすみません。
そういう事態を避けるにはどういう実装にすればいいでしょうか。
399デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/26(月) 17:00:40.17ID:fVZ2op5+0
Nameプロパティを見ない処理にすればよくね?
400デフォルトの名無しさん (ワッチョイ fb54-C+b/)
2021/04/26(月) 17:16:30.71ID:57LVbzrx0
>>399
現在、ToolStripのクリックされたボタンをNameで判別してます。
if(e.ClickedItem.Name == "") { }

この場合、Name以外のプロパティを使うようにするだけでいいでしょうか。
401デフォルトの名無しさん (スッップ Sd70-miHF)
2021/04/26(月) 17:43:14.20ID:1JVi9H1ud
>>400
Nameじゃなきゃいいわけじゃないよ
じゃあTextで″削除″だった時にって分岐をすると、後にダイアログを出すから″削除...″に修正しなきゃってなって動かなくなる
派生してカスタムコントロールを作るとかTagを利用するとかが一般的かな
402デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/26(月) 17:43:28.37ID:+MtLiehda
>>400
どのプロパティーを使おうが、そのコードを書いた時と違う値が設定されてしまったら
識別子として使えないのは同じじゃないの?w

素直に「クリックされたのは○○か?」を検査するコードを書けばいい。
if (e.ClickedItem == hogeButton) { ... }

そもそもボタン自身のイベントを使えば何がクリックされたか識別するコードを書く必要がない
403400 (ワッチョイ fb54-C+b/)
2021/04/26(月) 18:57:38.53ID:fsnGR4b00
ありがとうございます。

>>402
以前、その方式でやっていたのですが、理由あってToolStripと、そのコンテナになるFormを別にした結果、以下のコードになってしまいました。
結果、FormからMenuItemを直接参照出来なくなりました。
https://ideone.com/dlhYMG

対策的に、別途、MenuItemの一覧のenumと、クリックされたItemを伝播するイベントを作りました。
https://ideone.com/da5kPY

ただし、この場合はMenuItemを追加する時に、enumに要素を追加する必要がありますが、
enumは定数なので、アプリ使用中にItem追加した際、enumにそのボタンを登録出来ないのです。

それで結局Nameを参照するようになりました・・・
404デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/26(月) 19:20:00.87ID:+MtLiehda
>>403
メンバー(fileMenuItem)のアクセスレベルを非privateにして晒すのが嫌なら
素直にイベントを作っちゃうのがいいんじゃないの?

public class MyToolStrip : ToolStrip
{
  private ToolStripMenuItem fileMenuItem = new ToolStripMenuItem();

  public event EventHandler FileMenuItemClick
  {
    add
    {
      fileMenuItem.Click += value;
    }

    remove
    {
      fileMenuItem.Click -= value;
    }
  }
}
405デフォルトの名無しさん (ワッチョイ fb54-C+b/)
2021/04/26(月) 19:27:06.52ID:fsnGR4b00
>>404
それで行きます!ありがとうございます!
406デフォルトの名無しさん (ワッチョイ 412f-42zS)
2021/04/26(月) 19:35:35.06ID:/WVOYzSd0
動的にオブジェクト追加してるならそのオブジェクトの参照は持ってるはずだから
Nameプロパティとか見る必要ないはずだが
407デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/26(月) 19:50:40.13ID:fVZ2op5+0
言語の機能でインスタンスを特定しようとするのはギルティ
だいたい作っていくと痛い目にあう
408デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/26(月) 21:00:37.58ID:zRuX+7dna
>>405
本来はToolStrip自身じゃなくて、ToolStripやMenuStripを持った
Formを継承した方がいいような気もするけどね。
まあそれじゃ満たせない要件なのかもしれないけど。

でもToolStripやMenuStripってFormの継承と相性悪いんだよな確か。
修正されずに放置されてるバグがてんこ盛りだった気がする
409デフォルトの名無しさん (アークセー Sxd7-On6t)
2021/04/26(月) 22:26:58.02ID:VGqr4loSx
>>397-408
入門書がNameプロパティでの判別をしていたので、当たり前のようにやっていましたが、
あまりよくないやり方なんですね。
ありがとうございます。勉強になりました。
410デフォルトの名無しさん (ワッチョイ fb54-C+b/)
2021/04/26(月) 23:28:26.99ID:fsnGR4b00
>>409
よくないかどうかは状況次第だと思う。
自分や他人がコントロールのNameを変更した時に、判定する側もきちんと変更すれば問題ないはず。
そもそも変更しないなら問題になることもないし。
411デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/27(火) 00:39:04.06ID:H7ElJCU2a
>>410
「〇〇を変更した時には××も変更すべし」みたいな自明じゃないルールが存在すると、
そのルールをコードを保守する人が忘れているか知らない場合には
正常に動作しなくなるリスクが発生していることになる。

プログラミングの目的は要件を満たすことなので、他に手段がなければ
あえてそういうリスクのある方法を採用することはあってもいいけど、
今の話は明らかにそうじゃない
412デフォルトの名無しさん (ワッチョイ 9b5f-f+Su)
2021/04/27(火) 00:47:33.70ID:8Unh/3dq0
Windows,LInux,Macで動作するものを作る場合は.Net coreとmonoどっちがおすすめですか?
413デフォルトの名無しさん (ラクッペペ MM34-/WW/)
2021/04/27(火) 00:58:04.31ID:ezafVa/dM
今からなら.NET 5 (.NET Coreの後継)
今年中には更に後継の.NET 6が登場予定
.NET Coreは既に終了済、monoはモバイル向け(.NET 6に統合される予定)
414デフォルトの名無しさん (ワッチョイ d0f2-2tiM)
2021/04/27(火) 01:08:57.42ID:8OBs4sir0
なんか次々思い付いてはゴミのように捨てていくよな
415デフォルトの名無しさん (ワッチョイ 9b5f-f+Su)
2021/04/27(火) 01:13:33.58ID:8Unh/3dq0
そうなんですね
.NET 5調べてみます!
416デフォルトの名無しさん (ワッチョイ f82d-T6Cp)
2021/04/27(火) 01:19:08.19ID:DUr8YxD70
.NET Core 3.1の次バージョンを.NET 5とリネームしただけだから.NET Coreが終わったわけじゃない
417デフォルトの名無しさん (ワッチョイ 66ad-JI0G)
2021/04/27(火) 08:59:07.35ID:nkW/cvkg0
>>413
既に終了済み??
418デフォルトの名無しさん (ワッチョイ b701-J6CO)
2021/04/27(火) 09:09:39.16ID:+C/fTs2P0
インターフェースや抽象クラスのメリットとは?

つまりvirtualで処理をかかない純粋仮想関数を作る意味はあるのかということです。

そもそもvirtual指定するのであればデフォルト処理というものを書いておけば必要に応じてオーバーライドすればよいと思うのですが。
419デフォルトの名無しさん (ワッチョイ 1a63-3cD6)
2021/04/27(火) 09:56:11.35ID:zT7wmnFt0
>>418
>インターフェイス
多重継承

>抽象クラス
デフォルト処理が決まらないメソッドを継承先でオーバーライドで強要する
420デフォルトの名無しさん (ワッチョイ b701-J6CO)
2021/04/27(火) 10:13:30.82ID:+C/fTs2P0
>>419
ありがと、
めちゃわかりやすかった。
421デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/27(火) 13:59:45.19ID:MoRpu0yA0
ちゃんとifやcase文で書いた方が実は後で楽だけどね
使うかどうかはかっちょええかどうかである場合が多い
422デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/27(火) 14:31:58.08ID:H51IIUOO0
将来的にスパゲティ化することを防ぐために多少手間でもインタフェースや抽象クラスを使って制約を設けるもんじゃないの?
423デフォルトの名無しさん (ワントンキン MMb8-XmRv)
2021/04/27(火) 15:29:38.21ID:5DBHgWrVM
そういうのは大抵、いざ要件が増えたときには、今の引数だけでは〇〇の情報が足りないとか、拡張を想定していなかった部分を拡張しなければならなくなったとかで破綻するんだよ
要件にないなら後で実際に拡張が必要になってからリファクタリングした方がよい
424デフォルトの名無しさん (ワッチョイ bf87-dNqc)
2021/04/27(火) 16:06:23.66ID:NpDZDySr0
俺は>>422派だな。
要件が増えたときにパラメータが増えたとしても、ファクトリーに渡す拡張用の値増やすだけで元の処理に手を入れなくていいから
425デフォルトの名無しさん (ワッチョイ b701-J6CO)
2021/04/27(火) 17:44:39.71ID:+C/fTs2P0
もしかして抽象クラスとインターフェースって使う必要ない?
メリットはスパゲティコードにしない制約を追加するだけで有れば設計ミスの方じゃないか?
426デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/27(火) 17:54:44.27ID:MoRpu0yA0
>>425
まあでも知ってると他の誰かが使ったときに欠点がわかるよ
下地がそうやってできてるのにそれに逆らって作ってもしゃーないし
合わせるのは大事

ただメリットはよくわからん
List<object>やobject型の悪用とあんま変わらん気がする
落ちてもどこで落ちたかわからんのもいっしょ
427デフォルトの名無しさん (ブーイモ MM5e-ZDuA)
2021/04/27(火) 17:58:00.62ID:3vzUzKx8M
>>425
同時平行開発するときは有用だな
428デフォルトの名無しさん (ワッチョイ a27c-On6t)
2021/04/27(火) 18:04:24.32ID:pi+NfSuo0
interfaceはこのクラスにはこのメソッドがありますよと言う事を約束するだけで
実装が共通化しようもないようなものに使うものだし
(例としてforeachで回せるようにする為のIEnumerable)
抽象クラスは良くある例はFruitクラスの子クラスがAppleやら関連性のあるものに対して使うものだろうし
そもそも用途が違うような
429デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/27(火) 18:05:20.92ID:eLMexJPua
>>425
アーキテクチャ綺麗だとあんまし使わないね
依存関係グチャグチャのスパゲティになってるとインターフェースで切ってDIしないとキツイ
けどそれは最初から設計ミスなんだよ
430デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/27(火) 18:06:48.09ID:eLMexJPua
>>428
アルゴリズム書くときには便利かもね
431デフォルトの名無しさん (スッップ Sd70-I7vP)
2021/04/27(火) 18:14:04.55ID:RVxlIcyJd
クラスを他の人に使わせてまうとあとで変えれなくなってのっぴきならなくなることがあるからやがな。

interfaceにしておくことでサイズゼロにしておくことが出来る。
相手が不特定多数だと「変更したから変えてくれ」とはいえないわけですわ。
432デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/27(火) 18:16:27.98ID:H51IIUOO0
多態性を利用するために必須なんだから使わなきゃ不便じゃない?
純粋に楽になるついでに、構造に制約を設けて将来的に品質維持する保険にもなるっていう複数のメリットあるので、使わない理由が無いというか
一回つくって終わりの書き捨てならいらないけど

426の後半2行は意味がよくわからない
433デフォルトの名無しさん (ワッチョイ d863-x7P5)
2021/04/27(火) 18:32:34.55ID:/yDoZvzG0
下手の考え休むに似たりって本当だよな
434デフォルトの名無しさん (ワッチョイ b701-J6CO)
2021/04/27(火) 18:33:38.95ID:+C/fTs2P0
>>432
多様性を使う為に必須というのは初耳だった
別に普通のクラスでも継承してインスタンス化すれば多様性は使えると思ってたんだけど

同じ親クラスやvarの配列にしてfor回したり
そこでインターフェースや抽象クラスにしてしまうよりかは
少なくとも何も処理しないダミー関数でも書いて仮想メソッドで実装しておいた方が良いとおもてる
435デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/27(火) 18:35:08.09ID:MoRpu0yA0
>>431
いやいやinterfaceから触るでしょうよw
436デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/27(火) 18:37:58.55ID:MoRpu0yA0
ちゃんとcase文書いた方がいくつ分岐してるかわかっていいじゃん
これをメリットと思えないのってなんでなの?
ソース読むときいくつに処理が別れてるか知らずに済むことって皆無だと思うけど
437デフォルトの名無しさん (エアペラ SD03-eDU7)
2021/04/27(火) 18:48:41.39ID:K2ItIfw9D
今って多態性じゃなく多様性って言うのが主流なの?
438デフォルトの名無しさん (ワッチョイ c252-W/SR)
2021/04/27(火) 18:49:53.91ID:tjxIRyEc0
>>436
いくつに分岐しているかを気にしなくてすむのがinterfaceによる抽象化のメリットの1つだろうに
439デフォルトの名無しさん (ワッチョイ fc63-On6t)
2021/04/27(火) 18:51:27.27ID:LNs0Wm240
いいえ多態性です
440デフォルトの名無しさん (ワッチョイ 74e5-4uvq)
2021/04/27(火) 18:53:45.11ID:QWBqF+Zq0
>>431
interfaceって実装しなくてもいいの?
詐欺にならない?
441デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/27(火) 18:59:04.44ID:izPR1pTAa
OOPの歴史も30年以上あるのでさすがに本質的に不要なものが
淘汰されずに生き残っているってことはないよ。

インターフェイス不要論とか抽象クラス不要論とか
staticおじさん級に幼稚で非生産的な書生論w

もっとマシなことに時間使った方がいいよ
442デフォルトの名無しさん (ワッチョイ a27c-On6t)
2021/04/27(火) 19:07:16.33ID:pi+NfSuo0
>>440
実装しなくても良いのではなく、interfaceそのものには実装は書けない。必要なメソッドを定義するだけ
良くある例としてIDisposableがあるけど
using(var obj = new TestClass()) {
}
みたいな使い方したければ上記のTestClassにDispose()メソッドを用意してねって事で
class TestClass : IDisposable
{
public void Dispose() {何らかの終了処理}
}
みたいに実装を用意しないとそもそもエラーになる
443デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/27(火) 19:27:42.16ID:H51IIUOO0
>>434
普通の継承でも使えたね。すまん
具象クラス継承の適切なケースがわからんので考えなくなって、出来るって事も忘れてた
444デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/27(火) 19:49:20.62ID:MoRpu0yA0
>>441
ハイ、じゃあメリットは?
445デフォルトの名無しさん (ラクッペペ MM34-/WW/)
2021/04/27(火) 19:53:09.03ID:zk58yDApM
>>440
単一継承しか許されないクラスと違い多重継承が許されるインタフェースでは、実体を実装するとC++同様に基底メンバの衝突の問題が発生する
この問題を回避するために実装を派生先に委ねてしまうことにしてインタフェース内では実装は禁止されている
446デフォルトの名無しさん (ワッチョイ 56bd-n2H/)
2021/04/27(火) 20:06:45.34ID:3YkNPMA00
教えて下さい。VBから書き換えて勉強してます。
フォーム1と2があり、それぞれTextBoxが無数にあります。フォーム1→2まで入力をして最後入力した情報を保存したいのですが、どういった形式、方法で保存するのが望ましいですか?
VBは区切り文字を入れ、datファイル1つに2行で書き込んでます。再度呼び出す際にsplitでそれぞれのTextBoxに入れてます。
が、何かのタイミングでTextBoxが増減したとか面倒そうなんですが一般的にはどんな感じでしてるんですかね?
447デフォルトの名無しさん (ワッチョイ 7cda-ZDuA)
2021/04/27(火) 20:21:32.78ID:cvesXM3a0
辞書を作りたまえ

DDXって死語け?
448デフォルトの名無しさん (ワッチョイ 92da-eOAD)
2021/04/27(火) 21:09:28.77ID:3TA75SVH0
json
449デフォルトの名無しさん (ワッチョイ ae06-3cD6)
2021/04/27(火) 21:15:25.28ID:YZq/AI+30
自分で使ったことはないけどinterfaceはデフォルト実装持てるようになってなかったっけ?
450デフォルトの名無しさん (ワッチョイ 9ebd-1ACq)
2021/04/27(火) 21:17:18.55ID:AfIT+tVg0
>>449
なってるけどあんま使いたくないな
451デフォルトの名無しさん (ワッチョイ 66ad-KKaU)
2021/04/28(水) 01:26:19.18ID:C+xRRq0o0
まあどうしてもバイナリ互換性を崩したくない時に使うもんだよね
452デフォルトの名無しさん (ワッチョイ c0b5-8KU9)
2021/04/28(水) 02:42:21.15ID:2iApvDDg0
バイナリ互換性って何?
453デフォルトの名無しさん (ワッチョイ 66ad-KKaU)
2021/04/28(水) 03:00:12.55ID:C+xRRq0o0
あるdll(A)にインターフェイスが定義されており、別のdll(B)にその実装があった場合、Aを修正してもBに影響がなければバイナリ互換性があると言う。
たとえばAのインターフェイスに実装を持たないメンバーを追加するとBはコンパイルエラーになってしまうので互換性が崩れる。
Aにメンバーを足す際にデフォルトの実装を書いてあげれば、Bはコンパイルエラーにならない。

破壊的変更にならないようにフレームワークやライブラリを改修したいってのがインターフェイスのデフォルト実装の動機。
454デフォルトの名無しさん (ワッチョイ d863-x7P5)
2021/04/28(水) 03:09:37.20ID:QdyWhJOJ0
まあCOMみたいにナントカ2とかナントカ3とか増えるのもまたアレ感があるんで
455デフォルトの名無しさん (ワッチョイ 3702-6Fjd)
2021/04/28(水) 06:00:02.52ID:Nr1kHF1d0
"IsDisabled": false,
"Name": "Tap",
"Arguments": [
"Keys.O",
"112",
"12600",
"True"


これって、キーボードのOを112ms間押して、12600ms離すって意味だよね?
約24時間、キーボードのPを押す時間も離す時間もランダム(10〜10000msの範囲で)にしたい場合どう入力したらいいの?
あと24時間以内にとある画像を認識した場合、認識したその都度W、S、A、Fを押すという時どう入力したらいいの?
456デフォルトの名無しさん (ワッチョイ d0f2-2tiM)
2021/04/28(水) 11:10:31.63ID:905Z8E/r0
それ何の言語なの?
457デフォルトの名無しさん (ワッチョイ 29ad-iXMK)
2021/04/28(水) 11:34:29.86ID:o3+T5GoG0
json
458デフォルトの名無しさん (ワッチョイ b701-J6CO)
2021/04/28(水) 12:01:20.73ID:k6d6iGQO0
アップキャストを行うと何が嬉しいのでしょう?
インスタンス化は普通
クラスA a = new クラスA();
なのに
クラスB b = new クラスA();
ってする意味です。入れれるのと使えるメソッドはイメージ通りですが、使うタイミングが不明です。
459デフォルトの名無しさん (ワッチョイ f82d-T6Cp)
2021/04/28(水) 12:12:07.08ID:CT/VgEdf0
>>458
親クラスがクラスBで、クラスBを継承したのがクラスAってことなんだろうけど、
クラスBを継承したクラスCを追加して時に、クラスAとクラスCを同じように扱いたい時に使う。
460デフォルトの名無しさん (ワッチョイ 5368-WHtW)
2021/04/28(水) 15:39:41.26ID:z2mXZLfz0
>>458
foreachでまとめて処理するのに使ったかな。
461デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/28(水) 16:32:07.21ID:snAX0stPa
>>458
あえて言えばサブクラスで隠蔽(new)を使ってるメソッドやプロパティがあると、
サブクラスのインスタンスをスーパークラスの変数に入れた場合に
動作が変わってくるんだけど、恐らくそういう目的でそれをやるケースは
ほとんどないんじゃないかな。

ほとんどの場合、それは積極的な意味を持たないと思う。
462デフォルトの名無しさん (ワッチョイ 0662-miHF)
2021/04/28(水) 16:58:01.56ID:MNdo4yxk0
>>458
List<Human> list;
に派生したクラスとかを入れたい時に使う
463デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/28(水) 17:52:40.77ID:snAX0stPa
>>462
大阪人「は」人間なので、そんなことは不要。

class Human { }
class Osakan : Human { }
....

var o = new Osakan();
var hs = new List<Human>();
hs.Add(o);
464デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/28(水) 17:59:49.82ID:1SQ+syPV0
アップキャストってそれ自体を目的にするものなのかな?
意識せずに使ってるだけで、見方を変えればアップキャストが目的とも言えるのかもだが
465デフォルトの名無しさん (ワッチョイ 0662-miHF)
2021/04/28(水) 19:54:14.62ID:MNdo4yxk0
>>463
それ暗黙的にアップキャストをしてるから不要ではないよね?
質問が、アップキャストの嬉しさについてだから例としては適切だと思うけど

アップキャストとしての嬉しさではなく、
クラスB b = new クラスA();という変数を作る意味があるのかって話なら、大抵は暗黙的なキャストてどうにかなるからやる意味はない
466デフォルトの名無しさん (ワッチョイ 7d2d-eUQK)
2021/04/28(水) 20:13:50.67ID:VZRYywec0
var s = new LinkedList<char>();
_ = Console.ReadLine().Select(x => s.AddLast(x));

これでsに標準入力が入る気がするのですが実際何も入りません
どうすればいいんでしょうか?
467デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/28(水) 20:44:33.40ID:snAX0stPa
ポカミスだと思うけど、Selectはシーケンスを返すだけだよね。
Selectが実行された時点ではstringの中のcharを列挙したりしない。
468デフォルトの名無しさん (ワッチョイ 7d2d-eUQK)
2021/04/28(水) 20:50:43.89ID:VZRYywec0
>>467
var s = new LinkedList<char>();
_ = Console.ReadLine().Select(x => s.AddLast(x)).Count();

こうですね...
遅延評価にハマりました
ありがとうございました
469デフォルトの名無しさん (ワッチョイ 7d2d-eUQK)
2021/04/28(水) 21:04:25.17ID:VZRYywec0
var s = new LinkedList<char>(Console.ReadLine());
というかこれで良かったみたい
470デフォルトの名無しさん (ワッチョイ f82d-T6Cp)
2021/04/28(水) 21:35:36.25ID:CT/VgEdf0
Select(x => s.AddLast(x))
はやっちゃ駄目だろう
471デフォルトの名無しさん (ワッチョイ 38e6-4uvq)
2021/04/28(水) 21:38:57.70ID:ohiKXwgS0
ToLinkedListを実装するのが絶対的正義
472デフォルトの名無しさん (ワッチョイ c0b5-8KU9)
2021/04/28(水) 21:54:47.35ID:2iApvDDg0
>>457
このスレってJSONを推してる人むっちゃ多いんだけど、CSVと比べて何がいいの?
CSVに出来なくてJSONに出来ることってあるの?
473デフォルトの名無しさん (ワントンキン MM3b-D+2G)
2021/04/28(水) 22:01:00.21ID:N4TU29msM
階層構造を持たせられる
項目の追加が楽
シリアライザが充実している
方言の多いCSVと違い、仕様が統一されている
474デフォルトの名無しさん (ラクッペペ MM34-x7P5)
2021/04/28(水) 22:13:27.34ID:RJLrCSIQM
CSVの方がよさそうならCSVって回答するけど
このスレくらいの質問者だと背景や用途を喋らないので最大公約数的回答になる
475デフォルトの名無しさん (ワッチョイ 9b5f-On6t)
2021/04/28(水) 22:18:25.06ID:SKK3EpB30
俺はjsonの方が好きだからjsonを使う
476デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/28(水) 22:33:03.67ID:roTNJzpQa
CSVとかトラブル製造機じゃん
477デフォルトの名無しさん (ワッチョイ c0b5-8KU9)
2021/04/28(水) 22:43:14.57ID:2iApvDDg0
>>473-476
ありがとうございます
なるほど、XMLでも階層構造は持たせられるけど仰々しいですよね
ああ、あれをシリアライザって呼ぶんですね
昔、一回JavaだかでJSON読んでみて満足した記憶があります
GW明けの使い捨てのスクリプトではJSONで書いて読んでみます
478デフォルトの名無しさん (ワッチョイ 87e3-On6t)
2021/04/29(木) 00:09:54.46ID:uAu0lWj/0
CSVは方言多すぎてそこらのパーサー使うの怖いわ
479デフォルトの名無しさん (テテンテンテン MM34-SWap)
2021/04/29(木) 04:38:08.16ID:mJShgxJuM
unityでc#ぼちぼち覚えてきたけどc#って何ができるんや
480デフォルトの名無しさん (スププ Sd94-WHtW)
2021/04/29(木) 05:53:27.68ID:Pwf8A7W+d
>>479
何でも出来るさ。ライブラリが揃えば。
481デフォルトの名無しさん (ワッチョイ 972c-uCoU)
2021/04/29(木) 05:59:02.89ID:RErNGDPY0
[ {"a" : "1"}, {"b" : "x"} ]

a列のみとか、b列のみしかないJSON が、CSV では、

a,b
1,
,x
482デフォルトの名無しさん (ブーイモ MM5e-i9BS)
2021/04/29(木) 09:03:47.11ID:lalb0v+EM
>>481
わからん
483デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 09:48:46.58ID:IBkpf/CX0
>>477
階層を持つのは後の欠点にもなるからね
結局はCSV形式で持ってた方がいずれ近いうちなるデータベース対応時に楽だよ
484デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/29(木) 09:55:18.98ID:gug0J2oaa
楽じゃない
485デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 10:10:10.40ID:IBkpf/CX0
>>484
なんでだよ
階層データじゃデータベース入んねぇだろ
486デフォルトの名無しさん (スププ Sd70-5v27)
2021/04/29(木) 10:27:55.67ID:EFYWvXghd
楽じゃないな。
きちんとした形してるなら階層持ってるデータのほうがマシ。
正規化するよね?常識的に考えて。
487デフォルトの名無しさん (ワッチョイ 6cac-Tv8Z)
2021/04/29(木) 10:28:53.11ID:qu9Hv39D0
jsonはそのままクラスに持たせられるから便利
あとパースできない読めないってことが少ない
xmlもcsvと比較するとjsonに近い

csvはそのまま行と列のデータだからDBにいれるだけなら悪くないしそれならサイズ的に軽い
改行ダブルクォーテーションとかあと上で言う方言とかあるから、なかなかトラブルを消しきれないこともある

Excelでもよみたいとか要件があるならcsvかな
488デフォルトの名無しさん (スププ Sd70-5v27)
2021/04/29(木) 10:37:53.58ID:EFYWvXghd
>>487
エクセルで読ませたら先頭のゼロ消すやつとか日付のフォーマット変えるやつとか、ハイフンがついた数字を日付にするやつが現れがちなのですごく嫌かな。
489デフォルトの名無しさん (ワッチョイ 9b02-wQF1)
2021/04/29(木) 10:49:23.57ID:PVZP3gNe0
目的の違うデータ形式を個々人で違う基準で評価してあーだこーだ言っても仕方ないのと違うか。

ただ。
json 形式の意味があるのか分からない深い階層を持つデータに対応するクラス作ってたときは本気でイヤになったけど。w
きちんと正規化して意味のない階層だとかを排除してくれるなら扱いやすい方式だとは思う。 < json
490デフォルトの名無しさん (ワッチョイ c04f-3cD6)
2021/04/29(木) 11:15:55.38ID:Ta5ufSky0
csvのrow/columnをjsonで表現できるが逆はできないからcsv⊂jsonだけど
大量のデータを扱うにはjsonは冗長だよな。
491デフォルトの名無しさん (ワッチョイ 92da-eOAD)
2021/04/29(木) 11:30:58.28ID:b5j8CNbM0
jsonで大量データだと、容量削減のために要素名を変数1文字とかやりだすしな
492デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/29(木) 11:40:51.69ID:gug0J2oaa
CSVよりJSON Linesですわな
493デフォルトの名無しさん (テテンテンテン MM34-D+2G)
2021/04/29(木) 12:43:50.51ID:Gvkp+FCpM
>>491
そんなことするくらいなら圧縮するわ
冗長だから圧縮した状態同士での比較ならCSVと変わらん
494デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 12:52:51.92ID:IBkpf/CX0
>>493
デカイ階層データで気になるのは処理速度だから圧縮されると余計時間かかる
495デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/29(木) 13:06:57.09ID:C0wDcO7Sa
シリアル化方法(CSVをシリアル化とは普通は呼ばない気がするけど便宜上)を選択する上での
評価基準としては、

(1) 可搬性
(2) 対応するデータ構造の自由度
(3) 変換速度
(4) バージョン耐性
(5) テキストとしての可読性(これが重要なケースはほとんどないと思うが...)

こんなとこかね。
CSVで評価できるのは(1)ぐらいなので積極的に使う理由はないね当たり前だけど
496デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/29(木) 13:39:52.49ID:gug0J2oaa
エクセルおじさん用のデータ交換フォーマットと割り切ったほうがいい
497デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 13:47:05.06ID:MqlSo6MR0
>>494
展開時間かかる代わりにアクセス時間が相当減るから、変わらんか早くなるよ。
498デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/29(木) 14:36:43.78ID:t8Qsv63f0
用途次第だけどjsonのままDBにつっこめばいいじゃん()
499デフォルトの名無しさん (テテンテンテン MM34-veNy)
2021/04/29(木) 14:44:24.17ID:hnM2dBp9M
>>497
そんなのCPUとI/O次第としか言えん
500デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 15:11:48.04ID:IBkpf/CX0
>>498
え?どうやって?
501デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 15:19:29.90ID:IBkpf/CX0
結局、データベースに入れる運命なのに今の時代に階層データにするやつなんか頭悪いんだよ
502デフォルトの名無しさん (ラクッペペ MM34-/WW/)
2021/04/29(木) 15:28:12.72ID:zh8QYWZnM
いまどきはどんなDBMSでもjson形式のデータインポートくらい出来るだろ
LINQでクエリ走らせるだけだろ
503デフォルトの名無しさん (ワッチョイ c04f-3cD6)
2021/04/29(木) 15:32:29.05ID:Ta5ufSky0
>>496
じゃあjsonはテキストエディタおじさん用か。
504デフォルトの名無しさん (スププ Sd70-5v27)
2021/04/29(木) 16:10:49.54ID:1OxYHKr7d
最近のRDBMSだとjson型とかあったりするからな。
>>499
ライトはともかくリードは2021年だと殆どの場合で早いぞ。
505デフォルトの名無しさん (テテンテンテン MM34-veNy)
2021/04/29(木) 16:16:56.06ID:4wXFV0waM
>>504
いや、リードが速きゃ圧縮してなくても速いわけだが…
506デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/29(木) 16:48:57.18ID:t8Qsv63f0
>>500
もう言われてたけどjson型サポートされてるRDBMSもある。触ったことないのでパフォーマンスは知らぬ
mysql,PostgreSQLはカラムの型としてサポート済で、oracleとsqlserverは文字列型で格納して制約や関数でjsonとして扱う感じなのかな?
PostgreSQLだとjsonのキーに対してもインデックス作れるんだね。便利そう
507デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 17:02:11.90ID:IBkpf/CX0
激レアケースを例にあげて自分の失策を正当化するのは良くないぞ
今の時代にデータベースに入れにくいデータ構造にしたのは明らかにバカ
それがわからないならお前らも結局時代に対応できないんじゃんwぷw
508デフォルトの名無しさん (ワッチョイ d863-x7P5)
2021/04/29(木) 18:39:45.09ID:Yt1JhF/90
1ビット脳の生活って楽しそうだよね
509デフォルトの名無しさん (ワッチョイ bf87-/Q2x)
2021/04/29(木) 18:44:26.59ID:pn1fVmji0
>>507
rdbに突っ込むの前提ならcsvでも正規化されたテーブルが対象なんだから入れやすさなんかだけでは語れない。csvのデータは概ね正規化されたデータの結合と見れるので。
正規化·データの関連性を考えればjson·xmlの方が有利まである。
結局用途次第だと思うよ
510デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 19:28:20.05ID:MqlSo6MR0
>>505
10MBのデータ読んでメモリに乗せるのと、100KBに収まったデータを展開してメモリに乗せるの、だいたい後者のほうが早いぞ。
511デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 19:30:06.10ID:IBkpf/CX0
>>509
は?じゃあjsonそのまま入れてみろよ
512デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/29(木) 19:32:01.32ID:gug0J2oaa
CSVはインポートで有利とか言ってる人が居るけど
ほとんどの場合インポート用CSVに整形する手間があるからトータルで損してるんだよね
513デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 19:36:37.76ID:IBkpf/CX0
>>509
そうやって実際にはできないことできるってなんで言っちゃうかな?
514デフォルトの名無しさん (ワッチョイ 737b-h9tu)
2021/04/29(木) 19:37:51.57ID:bhMl+eBD0
いつまでスレ違い無意味なマウント合戦続ける気?
515デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 19:45:35.14ID:MqlSo6MR0
>>511
MSSQLならJSONそのままインポートできるだろ。
https://docs.microsoft.com/ja-jp/sql/relational-databases/json/import-json-documents-into-sql-server?view=sql-server-ver15#parse-json-documents-into-rows-and-columns
516デフォルトの名無しさん (ワントンキン MMb8-D+2G)
2021/04/29(木) 19:47:56.90ID:h5Kbt4/jM
>>512
それはあるな
一応データエンジニア名乗ってて仕事でいろんなCSVをロードしてきたけど、貰ってきたCSVをそのまま取り込めるのは稀だわ
517デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/29(木) 19:48:06.90ID:4VO5KYJUa
交通整理マンが出てこない時は(以下略

>>510
どんな圧縮率w
518デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 19:49:52.48ID:IBkpf/CX0
>>515
そんな誰も使ってない上に階層構造のjsonに使えるかどうかもわからん上に
さらに絶対仕事で使えないもの持ってきて必死だなw
採用実績あるの?ソレw
519デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 19:50:03.03ID:MqlSo6MR0
>>517
カラム名が長いなって思うようなデータだと、それぐらいの圧縮率になるぞ。
おまえやってみても無いだろ。
520デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 19:50:38.18ID:MqlSo6MR0
>>518
2016以降できるし、普通に使う。
521デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 19:52:56.86ID:IBkpf/CX0
>>520
絶対嘘だろw
522デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/29(木) 19:53:21.85ID:4VO5KYJUa
>>512>>516
英語が世界共通語として機能しているのは
英語が優れた言語だからではない。

可搬性と技術としての優位性は完全に別問題。
523デフォルトの名無しさん (ワッチョイ bf87-/Q2x)
2021/04/29(木) 19:53:32.90ID:pn1fVmji0
まぁすれ違いなんで最後で
>>513
そのままなんか入れないよ。
csvも正規化されたテーブルに分解·展開して入れる
jsonも正規化されたテーブルに分解·展開して入れる
データ構造の形で関連性が分かるのでこの点ではjsonのほうが有利
これはわかるでしょ?
まぁxml·jsonは言われている通りにdbmsがサポートしている場合があるから、その場合はそのまま入れればいいけども
524デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 19:53:48.66ID:MqlSo6MR0
>>521
なんで嘘つかないとならんのだ。

知らなかった事は、勉強になった、で済ませた方がいいんじゃないか?
525デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 19:55:35.85ID:IBkpf/CX0
>>523
じゃあ、できないじゃん

>>524
やってないってさw
嘘つきくん
526デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 20:00:29.06ID:MqlSo6MR0
>>525
俺は、やってるよ。
jqで突っ込む事もあるけど。
jsonで持ってるとnullと空文字の区別がついたりそこそこ便利なんよ。
527デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 20:01:40.70ID:IBkpf/CX0
じゃあ、jsonぶん投げて入れてみろよ
どこのテーブルのどのフィールドにどうやって入るかもわからんけどw
階層になってるデータをなw

なんでできないこと言っちゃうかなw
528デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/29(木) 20:05:16.52ID:t8Qsv63f0
時空が歪んで20年くらい前の環境からレスしてるんだろ
火曜日のインターフェース不要さんと同じ人っぽいし
529デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 20:05:41.39ID:MqlSo6MR0
>>527
対応を設定する方法はこれな。
https://docs.microsoft.com/ja-jp/sql/relational-databases/json/convert-json-data-to-rows-and-columns-with-openjson-sql-server?view=sql-server-ver15#option-2---openjson-output-with-an-explicit-structure
530デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 20:09:44.80ID:IBkpf/CX0
データベース使うとインターフェースも出番ないよね
そういうテーブルないし
531デフォルトの名無しさん (ワッチョイ d863-x7P5)
2021/04/29(木) 20:11:38.28ID:Yt1JhF/90
急加速してて笑
532デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 20:12:58.48ID:MqlSo6MR0
データとしての互換性は全く無いが、同様にinserted,updated,deleted列を持っているデータ、なんかはインターフェイス作っても良いんじゃないの?
533デフォルトの名無しさん (テテンテンテン MM34-veNy)
2021/04/29(木) 20:38:56.88ID:CPrTMOXFM
>>510
だいたいって言われてもねぇw
圧縮ソフトによるけど1/100に圧縮できるソフトだとそれなりにCPU負荷もかかるだろうしね
534デフォルトの名無しさん (ワッチョイ ce01-lEFC)
2021/04/29(木) 20:50:11.97ID:qknGBKNj0
また圧縮沼に😅
535デフォルトの名無しさん (テテンテンテン MM34-veNy)
2021/04/29(木) 20:51:47.22ID:nwdNubv1M
>>527
> どこのテーブルのどのフィールドにどうやって入るかもわからんけどw
> 階層になってるデータをなw
マジで知らないなら黙ってなよ…
1つのフィールドにjson形式でそのまま(内部的にはデシリアライズしてるだろうけど)入るんだよ
jsonをサポートしてるrdbmsはjsonの階層も含めて検索などができる
ただ、rdbmsによるだろうけど制約かけられないとかインデックス効かないとか色々制限あるので使い所はよく考えた方がいい
536デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 20:54:18.51ID:IBkpf/CX0
あっそう
537デフォルトの名無しさん (ワッチョイ 9b02-wQF1)
2021/04/29(木) 21:09:28.12ID:PVZP3gNe0
あっそう w
538デフォルトの名無しさん (ワッチョイ ef24-On6t)
2021/04/29(木) 21:10:59.33ID:JLw8VMIz0
流れあんま見てないけど何MBにもなるjson扱うって結構あり得る事なの?
GTA5も数十MBのjsonからのデータ読み込みがパフォーマンスのボトルネックになっててクラッカーが改善Mod作ったいうニュース見たけど、普通はそんな膨れ上がるならsqliteとか利用するもんじゃないのか?
539デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 21:22:08.52ID:MqlSo6MR0
>>538
あるよ。
ブラウザで3dモデル表示するときに使う形式にglTFってのあるんだけど、もろにデカいJSON。
540デフォルトの名無しさん (ワッチョイ 0e68-6Fjd)
2021/04/29(木) 23:20:12.08ID:QUExeogh0
プログラミングでファイル入出力を早くするにはやっぱり
良いGPUが必要なんでしょうか?
C#とGPUの関係を教えてください。
541デフォルトの名無しさん (ワッチョイ 0e68-6Fjd)
2021/04/29(木) 23:21:16.85ID:QUExeogh0
ちなみにGPUは欲しいですが3Dのゲームはしません(ゲーミングPCを購入予定ですが…)
プログラミングの良い環境を整えたいのでお勧めのがあれば教えてほしい
言語はもちろんC#です。
542デフォルトの名無しさん (テテンテンテン MM34-D+2G)
2021/04/29(木) 23:27:45.10ID:Gvkp+FCpM
そんなレベルならMac買っとくのが無難
なんでC#なのか知らないけどC#を選んだのもその調子じゃどうせまともな理由じゃないだろう
543デフォルトの名無しさん (ワッチョイ 9b5f-On6t)
2021/04/29(木) 23:30:51.76ID:PtPwSG5y0
ファイル入出力はGPU関係ない
ストレージに左右される
HDDよりもSSDの方が速い

何のプログラム作るか知らないけど
WinFormsでアプリを作るならGPUは関係ない
WPFで作るならアプリの描画にGPUが使われる
544デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/29(木) 23:40:25.95ID:DcwAc3waa
GPGPUってなんか暗号通貨のマイニング以外で聞かなくなっちゃた印象があるけど
C#から簡単に使えるライブラリとかあったりするん?
545デフォルトの名無しさん (テテンテンテン MM34-veNy)
2021/04/29(木) 23:42:47.01ID:Eeg/SlYmM
>>538
あるだろうね
サーバーもクライアントもDB持ってるけどその間のやり取りはjsonでとか普通にあるから
ストレージとしての用途ならsqliteでもいいけど伝送手順として使われることも多いので
546デフォルトの名無しさん (ワッチョイ 0e68-6Fjd)
2021/04/29(木) 23:59:30.38ID:QUExeogh0
>>543
大学の課題でテキストを読み込んで文字列を探すプログラムを作ってます。
文字列を読み込むスピードをほぼ0秒にすると実行時間が短くてすむので
良いGPUはないかと思ってるんですがね。。。
547デフォルトの名無しさん (ワッチョイ 0e68-6Fjd)
2021/04/29(木) 23:59:59.65ID:QUExeogh0
ちな読み込むファイルの容量は100MB程度です。
548デフォルトの名無しさん (ワッチョイ 87b0-OedE)
2021/04/30(金) 00:14:03.55ID:ZjT67Y+80
折角回答してくれてる内容の1行目を声に出して10回読め
549デフォルトの名無しさん (ワッチョイ 075f-OedE)
2021/04/30(金) 00:15:07.47ID:wixFV2dt0
>>546
GPU関係ないって書いてあるじゃん
重要なのはストレージとCPU
速ければ早いほどいいというだけ
550デフォルトの名無しさん (ワッチョイ 6768-TNk6)
2021/04/30(金) 00:19:41.24ID:f4OC/lzG0
ありがとうございます。
どんな高性能なPCでも時間は0秒にはならないってことですね?
俄かに信じがたいですが、早くなる方法ないでしょうか。
551デフォルトの名無しさん (ワッチョイ 075f-OedE)
2021/04/30(金) 00:26:18.54ID:wixFV2dt0
ジューダス版のJohnny B Goodええで
552デフォルトの名無しさん (ワッチョイ 075f-OedE)
2021/04/30(金) 00:26:29.50ID:wixFV2dt0
ごめんw
553デフォルトの名無しさん (ワッチョイ 0702-7a8P)
2021/04/30(金) 00:28:43.93ID:IafryiiR0
信じられないなら信じられる別の場所で聞けばいいんじゃないの。
554デフォルトの名無しさん (ワッチョイ 87b0-OedE)
2021/04/30(金) 00:35:48.48ID:ZjT67Y+80
> どんな高性能なPCでも時間は0秒にはならないってことですね?
C#全く関係ないスレチ

あと元の質問自体が「サッカーで速く走るにはいいスパイクが必要なんでしょうか。シュートとスパイクの関係を教えてください」みたいな謎文脈なので、
こちらはそっちの脳内でどんな解釈されてるのか、まるで見当が付かない
555デフォルトの名無しさん (ワッチョイ df52-FRJu)
2021/04/30(金) 00:45:47.98ID:FVXE5M810
>>550
そういう根拠のない思い込みでこうなるはずなんて思考をしてたらプログラミングなんて理解できなくて詰むから、早いうちに矯正しろよ
まあ根っから性分だろうからもう手遅れだろうけど
556デフォルトの名無しさん (ワッチョイ df79-2I0v)
2021/04/30(金) 00:55:52.99ID:1FoMz0PJ0
今jsonの話で忙しいのに話の腰を折る荒らしにしか見えない
557デフォルトの名無しさん (ワッチョイ 7f63-3Eyb)
2021/04/30(金) 01:50:11.84ID:OqlMgVmX0
なんだそれジョークか?
558デフォルトの名無しさん (スププ Sdff-FvP6)
2021/04/30(金) 06:01:15.69ID:6G/EU7oZd
大学の課題でスペックの条件が必要なの?
無駄のないロジックを書くとか、そういうのが目標だったりしないのかな。
なんだったかな。C#だったらライブラリのメソッド一発で終わってしまう話だよ。
スペックが必要ならハードディスクじゃなくてSDとかの電子メモリにするだけ。
559デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/04/30(金) 06:33:18.17ID:9CWg3MHlM
なんで相手するかなぁ…
560デフォルトの名無しさん (ワッチョイ e701-mFDB)
2021/04/30(金) 07:21:05.92ID:c/yKDnhO0
うっわ
ファイル名変更ってgit上で削除→追加になるのかよ
なんでこんな仕様なんだ面倒くさい
561デフォルトの名無しさん (エアペラ SDcb-R7/G)
2021/04/30(金) 08:20:45.76ID:/49R4AUmD
大学生が処理時間を0秒にできると考えてることが恐怖
562デフォルトの名無しさん (ワッチョイ dfad-XhmA)
2021/04/30(金) 08:31:59.95ID:hl1Q3MIe0
>>560
git mv
563デフォルトの名無しさん (ワッチョイ e701-mFDB)
2021/04/30(金) 08:49:07.02ID:c/yKDnhO0
すまんVisualStudioスレじゃなかったな
564デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/04/30(金) 09:24:19.33ID:QS3EuJUrM
まあgitはC#プログラマーでも使ってる人多いし、意味不明な大学の課題よりマシ
565デフォルトの名無しさん (ワッチョイ 8733-jDx3)
2021/04/30(金) 12:19:19.36ID:2B0L3g8/0
c# でもファイル名変更はFile.Moveメソッドだし、考え方は同じだと思うがな。
566デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/04/30(金) 12:37:03.29ID:clFaH4DRM
>>561
中2ぐらいなら許される?
567デフォルトの名無しさん (ワッチョイ 0702-7a8P)
2021/04/30(金) 13:53:37.33ID:IafryiiR0
真面目な話、設問の但し書きの部分を真に受けただけなんでは、とか思うのだけど。
「ただしファイルI/O などの処理時間は無視できる物とする」とかの。

大学の課題に取り組むのに私物のゲーミングPC を用意するって時点で意味が不明だもの。
私物の環境で設問をクリアできてもそれを持ち込むことなんて出来ないだろうし。
どこかを取り違えてたんだろ。
568デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/04/30(金) 14:02:57.22ID:clFaH4DRM
並列処理においてボトルネックになりやすいのがI/O
そこを改善しようと試みるのは良い
ただしこの場合C#とは関係ない話なのでスレタイすら読めない脳足らずという事になる
569デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/04/30(金) 15:01:33.00ID:Fe1MTD+iM
いつまでその話題やるの?
570デフォルトの名無しさん (ワッチョイ a72c-uN1F)
2021/04/30(金) 17:03:31.63ID:OOQWIiqB0
最近はサーバーで、データベースのCPU が不足する事も多い
571デフォルトの名無しさん (ワッチョイ 0743-eGTG)
2021/04/30(金) 21:55:35.01ID:HehJ8LLK0
C#とJAVAを併用してるけど、C#の解説者のほうが深く理解していて簡潔に解説してるね。
JAVAはコピペで説明していて、動かないことも多々ある。採用人口が多いのに不思議
androidの仕様変更が原因のときもあるけど、C#は洗練されて理解しやすい。
つまりC#を扱う人はレベルが高いと感じる
572デフォルトの名無しさん (ワッチョイ 2701-1Vh1)
2021/04/30(金) 22:21:45.51ID:kkXqBkDB0
Javaは裾野が広い分ゴミとの遭遇率も高いのかと
573デフォルトの名無しさん (ワッチョイ 2701-SFYt)
2021/04/30(金) 23:53:02.12ID:fJ1TA+qd0
/// 問題点 ///
処理をどのクラスに持たせるのかの指標がわかりません。。。
同時にクラスの分ける粒度感もわかりません。。。

/// 質問 ///
どのクラスにどの処理を持たせれば良いのでしょう?
そもそも何をクラスにしたらいいのでしょう?

/// 具体例 ///
前者でいえば例えばドキュメントクラスとプリンタークラスがあって印刷するメソッドはプリンターに持たせるのかドキュメントに持たせるのか決めきれないということです。
後者でいえば例えばキャラクタークラスがあってそのクラスはHPクラスやMPクラスを作りインスタンスを持つべきかそれともただ単に値型のフィールドとして持つのかどちらが良いのか判断しきれないです。
574デフォルトの名無しさん (ワッチョイ 8768-FvP6)
2021/05/01(土) 00:34:45.81ID:vLfObWug0
>>573
前者の例は現実と一緒じゃダメなん?
印刷の機能は書類じゃなくてプリンターの仕事。

後者はどうなんだろう。
自分なら、値型の方が代入比較が簡単で早そうだから、ギリギリまで何でも値型で。
でも、参照型の方がクラス継承とか参照渡しとか出来るから、その時の都合で使う。
機能と性能、仕様と規約、自分の主義で決めたらいいかと。
575デフォルトの名無しさん (ワッチョイ 7fa7-wijr)
2021/05/01(土) 00:35:58.96ID:u8jqB+2A0
>>573
お答えしましょう
どこに書いても動きます
好きなところでいいですよ
576デフォルトの名無しさん (ワッチョイ 87b0-OedE)
2021/05/01(土) 00:37:52.50ID:GAZiMPha0
C#関係ないやね
折角なので答えると正解はない問いだと思う。みんながベストを探してる
つくるソフトや環境で適切なモノを周りと相談して作り上げるしかない

とりあえずの指標という意味であればDDDについて調べると具体例の質問については答えが得られるかもしれない
特に後半はvalueObjectとEntityと言われるもの
ただしこれも小規模のソフトで取り入れても冗長になるだけという問題もある
577デフォルトの名無しさん (ワッチョイ df01-i6Oo)
2021/05/01(土) 00:45:41.04ID:ToMJKZXq0
>>573
1. どういう選択肢があるのかを把握できる力
2. それぞれの選択肢のメリットとデメリットを理解する力
3. 用途に対してより適切な選択肢はどれなのかを判断する力

あらゆる設計判断には上の3つの力が必要だが土台となるのは1と2の力
それらの力をつけるためには考えられる複数の選択肢をそれぞれ簡易実装してみて比較検討するのが一番
失敗を数多く繰り返すのが上達の近道

どのクラスにどの処理をもたせるのがいいのかは用途次第でケースバイケース
one size fits allな答えはないのでやる前からそれを求めていても進歩しない
578デフォルトの名無しさん (アウアウエー Sa9f-XmiE)
2021/05/01(土) 00:47:18.48ID:F0kMZy38a
どっちでもいいからまず作れ
なんかへんだなと思ったらリファクタ
579デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/01(土) 00:54:13.87ID:CrHqAudLa
>>573
そういうのはやる前からいろいろ考えるより
「失敗したらやり直せばいい」と考えてとにかくいろいろコードを
書いてみることが大事。

老人より子供の方がスマホなんかの操作を覚えるのが早いけど、
あれと同じだね。

アントニオ猪木のポエムのノリでw
580デフォルトの名無しさん (ワッチョイ 2701-SFYt)
2021/05/01(土) 01:21:16.01ID:5wEuRr/u0
574から579の方々
ありがとうございます。
とりあえずやってみるというアドバイスが多かったので実装から着手していきたいと思います。

この質問の背景としてはクラス図やUMLでの設計をしてC#コードに落とし込もうとしてクラス図がごちゃごちゃし出してコーディングまで行けなかったという経緯です。
(OOPの話でc#そのものの質問でなかったのは申し訳ない。とはいえc#初心者の人でオブジェクト指向が初めての人は少なくないはずなのでやはりこういう質問になりがちな気もする)

様々な意見感謝です☺
参考させて頂きます。
581デフォルトの名無しさん (ワッチョイ 6768-TNk6)
2021/05/01(土) 10:59:09.68ID:BCm84eaD0
この前質問したバカですが(一応国公立)
何故レースゲームは膨大な建物や道路データをリアルタイムに
読み込めているんでしょうか?どういう仕組みなんですか?
例えば1Gのテキストファイルを読み込もうとすると実験しましたが、10秒かかってしまいます。
テキストファイルではなく、グラフィックデータを瞬時に読み込めるのはなぜですか?
C#より速い言語なんでしょうか?
582デフォルトの名無しさん (ワッチョイ 7f7b-EJSk)
2021/05/01(土) 11:07:42.89ID:bkjJ/QRj0
>>581
streamとして必要な分だけ読み込む、圧縮したデータを読み込んで展開する、あらかじめパーツを指定しその配置だけ読み込むなどなど
最初以外C#は関係ないから該当する板でやってくれ
ゲ製作技術
https://mevius.5ch.net/gamedev/
583デフォルトの名無しさん (スププ Sdff-FvP6)
2021/05/01(土) 11:10:22.30ID:Bazlrq4sd
>>581
そのレースゲームがどんなんだか判らないけど、
ゲーム中じゃなくて起動するときに10Gでも100Gでも、
あらかじめ10分かけて読んでおけば良いんじゃないかな。
圧倒的に問題に対する条件が乏しくて、どう考えればいいのかこちらも判らないよ。
584デフォルトの名無しさん (ワッチョイ 6768-TNk6)
2021/05/01(土) 11:22:20.62ID:BCm84eaD0
>>583
市販のゲームは10分もかかりませんが、何故でしょうか?
585デフォルトの名無しさん (ワッチョイ 2701-1Vh1)
2021/05/01(土) 11:25:02.89ID:B2x+2kSO0
地図上の物体検索とかなら
numerical recipes の3rd edition に
説明があるからそれを読みたまえ。

なお日本語もC#版も無い
586デフォルトの名無しさん (ワッチョイ a724-OedE)
2021/05/01(土) 11:35:09.71ID:nO6fZcYL0
>>584
583は分かりやすく極端な例を出しただけで常識的に考えて10Gのデータ読み込みなんてしないっしょ
大体重めのゲームでも起動時やマップ入場時のロードは500MBくらいじゃね?
つまりそのレースマップ入場時にそこで必要なグラフィックデータを数十秒かけて読み込ませればいい
587デフォルトの名無しさん (ワッチョイ a724-OedE)
2021/05/01(土) 11:52:19.99ID:nO6fZcYL0
>>584
君のレス追ってみたけどゲームじゃなくて目的はテキストファイル?
ファイルI/Oにボトルネックがあると思ってるようだけど、テキストファイルだとしたらボトルネックはエンコードにあるんじゃない?
File.ReadAllTextは割とオーバーヘッド大きいから、.NetCore3以上でSpanを利用したエンコードを構築すればいくらか早くなるかもしれない
588デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/01(土) 12:02:16.59ID:79IzxePJa
>>581
自分もゲームまったく知らないので偉そうなことは言えないけど、
いきなりそんな高度な話より、例えば40年前のゲームのスーパーマリオは
たった30kBの中にどうやって32面分オーバーのマップデータを詰め込んだかを
考える方が有益だと思う。

要するに本質はI/Oじゃなくてデータをどうやって圧縮/展開するかじゃないの?
「リアルタイムで(ストレージやネットワークから)読み込み」なんかしてるはずがないと思うけど。
589デフォルトの名無しさん (ワッチョイ 7f63-3Eyb)
2021/05/01(土) 12:54:20.94ID:R4IHrQy80
馬鹿は的確な質問ができないってのを凄い的確に示してくれている
590デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/05/01(土) 12:58:57.73ID:GvoaCTGBM
ファミコンカセットはROMアドレス指定でCPUからダイレクトアクセス出来る
初期以外はアドレス足らないからマッパーで切り替えてる。物理で
591デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/05/01(土) 13:13:02.51ID:GvoaCTGBM
プレイステーションのすごいところは
ファミコンやPCエンジンと違って
ロード中にギャラガができる事
作りての工夫によってロード時間ゼロにすることが可能
ドラクエなんかはマップ切り替え直後はエンカウントしないよね
592デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/05/01(土) 13:34:26.28ID:GvoaCTGBM
サガフロの5連携が3連携で一休みしたりサガフロ2の連携が我々のレベルになると通常と変わらず目で追えたり
RAMが少ないと苦労が耐えないですね

えーっと500MBでしたっけ?ウフフ
593デフォルトの名無しさん (ワッチョイ 075f-Mxzp)
2021/05/01(土) 13:37:34.47ID:/yhKW3U+0
>>591
ファミコンはそもそもロード時間ないだろ
594デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/05/01(土) 13:39:40.13ID:GvoaCTGBM
>>593
円盤システムの話なので
595デフォルトの名無しさん (ワッチョイ 075f-Mxzp)
2021/05/01(土) 13:41:51.01ID:/yhKW3U+0
>>594
ファミコンやPCエンジンと違ってって自分で言っとるやん
596デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/05/01(土) 13:47:26.99ID:GvoaCTGBM

つまりdiskとdiscについて話し合いたいってこと?

スレ違いでは??
597デフォルトの名無しさん (エアペラ SD9b-R7/G)
2021/05/01(土) 14:03:33.45ID:v2ArV8E8D
>>581
結婚式場を出たら、もう披露宴会場が準備されていました
これを披露宴会場の支度を瞬時に終えたと言うことだと思うか?
598デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/01(土) 14:26:22.67ID:CCHnejZpa
MIDIとかMMLの方がたとえ話としては適切だったかな
たった数10kBのMIDIファイル一つで16bit-48kHzの音を何分も出力できるのはなぜなのか。
1分音を鳴らすのに6MBの量子化データが必要なはずなのに
599デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/05/01(土) 14:40:58.52ID:GvoaCTGBM
つまり薄っぺらな嘘を伸縮自在な愛で…
600デフォルトの名無しさん (ワッチョイ 6768-TNk6)
2021/05/01(土) 16:17:08.68ID:BCm84eaD0
>>586
10Gは大きいとか目安が分かるのすごいですね。
ゲーム制作者じゃなくてもわかるんですか?
>>587
そうなんですよ。テキストファイルを読んで、特定文字列の抽出カウントを
行いたいわけです。C#じゃなくてC言語なら夢見れますか?
低級感があって爆速なイメージですが。
>>588
難しいですがゲームプログラマが夢なんで、思考自体は高度になりがちです。
まず30kbってのはメモリ領域でですか?磁気領域でですか?

そもそも何でCPUの進化バージョンGPUは存在するのに
HDDの進化バージョンGHDDみたいなのは無いんですかね。

あったら困るんですかね?
601デフォルトの名無しさん (ワッチョイ bfda-jeEy)
2021/05/01(土) 16:28:44.50ID:LX/vNMTG0
うん、C#じゃなくてC言語がいいと思うよ。
頑張れ
602