ふらっと C#,C♯,C#(初心者用) Part153at TECH
ふらっと C#,C♯,C#(初心者用) Part153 - 暇つぶし2ch262:デフォルトの名無しさん
21/12/31 15:13:44.40 +14EUf560.net
やっつけ専用言語にデザインこだわってもなぁ。

263:デフォルトの名無しさん
21/12/31 15:42:51.31 ApQoIWIb0.net
そもそも、一貫したUIガイドラインに沿うべきGUIと、それぞれのサイトで独自色を出したいWebの方法論って
かなり方向性がq違うからあまり混ぜないでほしいがなぁ。

264:デフォルトの名無しさん
21/12/31 15:43:49.86 2Zk/vij+0.net
混ぜたのはマイクロソフトでは?

265:デフォルトの名無しさん
21/12/31 15:45:01.75 AHpR20H50.net
>>258
その程度なら普通にできない?

266:デフォルトの名無しさん
21/12/31 15:52:24.59 2Zk/vij+0.net
今年は厚生労働省が「マスクの供給は十分です」と発表したのでマスク買い溜めて、厚生労働省が「トイレットペーパーは無くなりません」と発表したので即座にトイレットペーパー買いだめしたので、一年中ウンコできたわ。
来年もこの調子で厚生労働省の流すデマに惑わされないよう生きようと思います。

267:デフォルトの名無しさん
21/12/31 16:13:21.59 ONP3ZHucM.net
>>262
できるかできないかで言えばそりゃできるだろうね
今日の折込チラシのうちで一番凝ったデザインのものを完全再現した画面を作るのを想像してみ
で作って見せたらここの角はやっぱり丸くしないとか影付けて強調したいとか変更が入るんだよ
WinFormsだと技術的に対応しにくい例をあげるとすれば、例えばテキストボックスを角丸にしたとして、
統一感を持たせるためにその隣りにあるボタンも同様のデザインにしたくなったとする
こういうのはCSSなら一瞬だけど、WinFormsなら一大事だよね

268:デフォルトの名無しさん
21/12/31 16:14:58.78 FNrpfdyG0.net
>>255
これはわかる。
俺はロジックではない部分は積極的に外に出してしまいたいし、誰でもできるようにしておきたいなと思う。
そういう部分で、HTML+CSSでテンプレート作るのは滅茶苦茶ラクだよなぁって思ってる。
角丸ぐらいだったら良いんだけど、みんな無茶言ってくるからな。

269:デフォルトの名無しさん
21/12/31 16:16:21.80 2Zk/vij+0.net
その程度なら問題なくない?

270:デフォルトの名無しさん
21/12/31 16:17:05.46 2Zk/vij+0.net
カレーは飲み物って人は?

271:デフォルトの名無しさん
21/12/31 16:30:43.26 ApQoIWIb0.net
>>252
まずC#とJSの2つの言語を使うってだけでもディスアドバンテージでかいと思うがな。
デバッグやテストも手間が増えそうに思うけど、UIフレームワークは何を使って?

272:デフォルトの名無しさん
21/12/31 16:47:15.22 AHpR20H50.net
まだ時代遅れのWinForms使ってる人いたのか
あれはデザイン性やUXを捨てたものしか作れないから使わないほうがいい

273:デフォルトの名無しさん
21/12/31 16:56:22.55 4KQ1p4JtM.net
デザイン性www
UXwwwww

274:デフォルトの名無しさん
21/12/31 16:57:44.41 FNrpfdyG0.net
>>268
実のところここは凄く楽になる。
C#側は正しくデータを入出力できる事を確認すれば良い。
JS側(というかHTML側)は与えられたJSONなりを検証して画面を正しく構築して、C#側から何かjsをevalする可能性があるならそれを全てこなせることを確認するだけ。
パキッと分けられるしどちらも自動化できる。
UIのフレームワークは業務ではReact使うことが多いけど、メンツ的な問題で個人的にはガワネイティブにはVueの方が楽だと思ってる。
流行に乗るならSvelteでも良いのでは?

275:デフォルトの名無しさん
21/12/31 17:03:51.48 AHpR20H50.net
HTML以下でしょWinFormsは

276:デフォルトの名無しさん
21/12/31 17:10:31.19 ApQoIWIb0.net
>>271
それってただのWebでは?
俺はC#のGUI(Forms or WPFもWeb(React+express)もやってるけど、デバッグやテストはやっぱり
スタンドアロンのC#の方が楽だと感じている。
それが>>238みたいにGUI側をhtmlにしてもっと楽になるんであればと思って訊いてみたけどどうも違うようだな。

277:デフォルトの名無しさん
21/12/31 17:20:57.32 FNrpfdyG0.net
>>273
UIがWebかどうかなんかあんまり関係ないのでは?
ローカルのリソース使うんだし実際あんま関係ないと思うが。
CordovaやelectronをWebと言うかどうか、みたいな問題に聞こえる。
正直WPF以降であれば、慣れの問題では?と思うけどなぁ。

278:デフォルトの名無しさん
21/12/31 18:17:17.40 ApQoIWIb0.net
定義はどうでもよくて、気になったのはのは実際にFormsやWPFより楽になるのかなんだが。
スタンドアロンアプリの話をしているわけじゃなさそうだからもういいけど。

279:デフォルトの名無しさん
21/12/31 18:37:19.76 CE1IM8E70.net
>>258
むしろそこまでキッチリ指定されてるなら面倒ではあるけど難しくはないだろ

280:デフォルトの名無しさん
21/12/31 19:00:48.11 FNrpfdyG0.net
>>275
スタンドアロンアプリの話してるよ。
ガワネイティブ理解してないだけでは…?

281:デフォルトの名無しさん
21/12/31 19:06:50.70 54dO0PUs0.net
C#で作られたDLLでSafeFileHandleを返す関数があるんだけど
C++で呼び出すラッパーDLLを作ろうと思うんだけどどうするのがベターなんだろうか
ラッパー側でSafeFileHandleを格納するvectorとか作っておいて
Openで格納、Closeで削除するって感じでいいのだろうか

282:デフォルトの名無しさん
21/12/31 19:07:51.75 ApQoIWIb0.net
Svelte使うスタンドアロンアプリってのは興味深い。

283:デフォルトの名無しさん
21/12/31 19:11:37.16 DclmO4XRd.net
>>278
C++/CLIだったら変に集中管理とかしないで普通にRAIIなラッパークラス作ればよくね

284:デフォルトの名無しさん
21/12/31 19:18:48.86 FNrpfdyG0.net
>>279
それ自体は既にある。
WebView2でやるのがちょっと面倒なだけで。
URLリンク(dev.to)

285:デフォルトの名無しさん
21/12/31 20:06:32.82 ApQoIWIb0.net
それでどこまで楽になるのか興味深かったんだが
>WebView2でやるのがちょっと面倒なだけで。
本末転倒やん

286:デフォルトの名無しさん
21/12/31 20:09:14.87 +14EUf560.net
楽なのはVB6、winformあたりが限界で
それ以上何かやろうとしてもどんどん面倒になるだけだな。

287:デフォルトの名無しさん
21/12/31 20:11:29.60 FNrpfdyG0.net
>>282
お前は本当に何も理解してないんだな。
WPFでつくる方がよっぽど面倒なんだよ、そもそも。
BlendとモックのDLL使ってコントロール作って貰ってたのが、Web技術で作って貰えるだけでも相当工数下がるの。
デザイナー×制作にでも作れるんだから。

288:デフォルトの名無しさん
21/12/31 20:12:57.99 FNrpfdyG0.net
>>283
MSがあれだけBlendを振り回して叫んでた「デザイナーと技術者で役割分担」という絵空事を解決したのは結局これというね。

289:デフォルトの名無しさん
21/12/31 20:14:09.02 +14EUf560.net
昔はASP案件が多かったから経験ある人はWEBまわりの学習コストが下がるがWPFはね。

290:デフォルトの名無しさん
21/12/31 20:26:28.10 AHpR20H50.net
このスレは能力低い人が多いからWinForms以外をすすめても意味がない
あれしか理解できない

291:デフォルトの名無しさん
21/12/31 20:29:05.37 F5O9+7Cr0.net
WinFormsで事足りる案件をそれ以上でやる意味なんてないからな

292:デフォルトの名無しさん
21/12/31 20:47:01.32 ScgFuRuP0.net
なんかwinformに一族を滅ぼされた人がいるっぽいな

293:デフォルトの名無しさん
21/12/31 20:54:49.37 ApQoIWIb0.net
>WPFでつくる方がよっぽど面倒なんだよ、そもそも。
>BlendとモックのDLL使ってコントロール作って貰ってたのが、Web技術で作って貰えるだけでも相当工数下がるの。
つまりhtml+jsの方が楽ってのはこういうふうにカスタムコントロールを作る前提での話なのかい?
それとも、それがなくてもhtmlの方が簡単っていうことなのかい?
こんなふうにどんどん後付け条件が出てくると話が迷走していけない。

294:デフォルトの名無しさん
21/12/31 20:59:35.03 FNrpfdyG0.net
>>290
ほとんど全ての場合だよ。
カスタムコントロール作らない事の方が珍しいだろ。ペタペタと直接、素のコントロール置いて作ってるとか狂気の沙汰じゃん。
後付け条件も何も俺は最初からその想定で言ってる。
お前がどんどん原始的な例ばっかり挙げて後付け条件出してるんでは?

295:デフォルトの名無しさん
21/12/31 21:04:02.72 +14EUf560.net
コモンコントロール以上の何かがほしいってそれはもうRICHなGUIですよ。
アナログメーターだのバーコードだのね。

296:デフォルトの名無しさん
21/12/31 21:13:20.91 2Zk/vij+0.net
>>289
それはお気の毒に。
仇討ちするなら助太刀いたしますぞ。

297:デフォルトの名無しさん
21/12/31 21:48:59.01 M0GZ3VlB0.net
WPFは結局見た目重視の癖に他のデザインツールとの連携がゴミカスだったからな
お前に食わせられるデータって何のアプリで作れるの?っていう根本的な問題が解決しない

298:デフォルトの名無しさん
21/12/31 22:31:41.34 DunWig+Gr.net
flutterみたいにGUIが整備されていればいいだけなのにマイクロソフトには作れないのか
URLリンク(codezine.jp)

299:デフォルトの名無しさん
21/12/31 23:02:04.13 M0GZ3VlB0.net
つか、データ内容から言ってイラレとの連携が必須なのにそこの対応がおざなりなのがいけない
そして見た目にこだわらせるツールなら
全コントロールカスタマイズ可能にしろ
もちろんイラレのデータで
これができんからwebview2なんて使ってんだろそいつも

300:デフォルトの名無しさん
21/12/31 23:38:40.48 FNrpfdyG0.net
なんでイラレなの?XDとかFigmaとかでは?
Storyboardで見ながら全カスタマイズ出来て当然かと。
デザイナーや制作にもそれができるからWebView2とかelectron使うんだが。

301:デフォルトの名無しさん
22/01/01 00:03:57.34 s/VzubKG0.net
>>297
いや、俺が最近のツール知らんだけ
まあ、アドビ製品で作れないと辛いと思うなってことで

302:デフォルトの名無しさん
22/01/01 00:04:02.95 s/VzubKG0.net
>>297
いや、俺が最近のツール知らんだけ
まあ、アドビ製品で作れないと辛いと思うなってことで

303:デフォルトの名無しさん
22/01/01 00:05:29.75 pK4dI97g0.net
>>298
最近はAdobe製品あんまり人気ないよなって感じしてる。
デザイナーの人、だいたいFigmaかなぁ。人によっては直でCSS書いてくるよ。

304:デフォルトの名無しさん
22/01/01 05:34:40.61 zdHw19Xx0.net
>>292
メーターはCommunity Toolkitにあるな

305:デフォルトの名無しさん
22/01/01 08:49:17.03 pK4dI97g0.net
このあたりが出来るのが楽。
URLリンク(observablehq.com)
JSのエコシステムは割と手厚くて、結構色々できる。
変わり種だと最近はこれも使った。今までだったら相当大がかりな仕組みになってた。
URLリンク(modelviewer.dev)
IEベースのWebViewだったら出来なかったんよね、これ。

306:デフォルトの名無しさん
22/01/01 16:57:15.57 cbVZORXia.net
何の話で盛り上がってるんだっけ?
結局MSは今後デスクトップは何使えって言ってるんだっけ?
もうWin32を追放してUWPで統一する計画は頓挫してたよね?

307:デフォルトの名無しさん
22/01/01 17:38:08.24 lDil4oeBr.net
MSは何も示せなくてユーザーたちが独自になんとかしようともだえてる

308:デフォルトの名無しさん
22/01/01 17:52:27.24 cbVZORXia.net
>>304
やっぱりあいかわらずそうなんだね。
今後はこういう展開をしていきます、みたいなの(横文字で何って言ったっけ?)
も一切ないんだっけ。

309:デフォルトの名無しさん
22/01/01 17:56:51.18 gOXFnTf60.net
UWPってアレ結局なんなん?
MSのうさんくさい説明見ても正体がさっぱり掴めんわ
ちなXAML使い

310:デフォルトの名無しさん
22/01/01 19:05:01.23 Je/lt7i4a.net
>>302
IEコンポーネントは初期設定がIE6になってるだけで、その制限解除するだけで使えるんじゃないのかな?
設定しないと使えないのは多かったけど、設定して使えないものがあった覚えはないな

311:デフォルトの名無しさん
22/01/01 19:09:06.13 pK4dI97g0.net
>>307
IEコンポーネントはパフォーマンス悪すぎて大変だったんよ。本当に悪かった。
WebGL 2.0は全くダメだし。
そしてごく最近の記法が使えないので、古い書き方で苦労するかトランスパイラで相当トランスパイルしないといかんのだけど、これもこれで大変。

312:デフォルトの名無しさん
22/01/01 19:38:20.84 FXZWUiqn0.net
そういえば、IEのコンポーネントって他プロセスから普通にDOM掴めたけど今のはそんなこと無いよな、さすがに。

313:デフォルトの名無しさん
22/01/02 02:26:12.88 XjOyUWVU0.net
>>308
VML使えや

314:デフォルトの名無しさん
22/01/02 08:39:01.25 i8dUNFkB0.net
>>309
今のIE11でも変わらない。Chromium Edgeは無理。

315:デフォルトの名無しさん
22/01/03 00:27:24.71 qrnm2syfM.net
結局DelphiやVB6を超えられなかったね

316:デフォルトの名無しさん
22/01/03 09:45:55.35 eQW2AhJK0.net
ということにしたいのですね

317:デフォルトの名無しさん
22/01/03 09:53:42.79 Nty+tcHi0.net
もったいないので私にください

318:デフォルトの名無しさん
22/01/03 10:54:19.16 SmC4rDQma.net
はつみみです。

319:デフォルトの名無しさん
22/01/03 13:30:35.98 lKbCt2OW0.net
C#でNewtonsoft.Jsonを使用して
[272,1496922300000,1496934000000,"Y3913",true,"XA","XA","HSZ-HAC","HAC-DFS-WCY",1496913600000]
のようなJSONを作成できますか?
(数値と文字列の混合配列)

320:デフォルトの名無しさん
22/01/03 13:46:53.86 AMytSBf5a.net
名前なしのカンマ区切りだったらそれはcsvとして処理した方がはやいんじゃないのか

321:デフォルトの名無しさん
22/01/03 14:44:00.30 5Qqik4MO0.net
>>316
全部文字列でいいじゃん

322:316
22/01/03 15:23:04.22 lKbCt2OW0.net
echartsのガントチャートのデモです。
URLリンク(echarts.apache.org)
このデモ用のデータが
URLリンク(echarts.apache.org)
なんですが、これをバックエンドのC#から渡したいのです。
>>316はJSON構造の一部で、他に名前付きのデータも渡します。
なのでCSVはそぐわないかと思われます。

323:デフォルトの名無しさん
22/01/03 16:42:23.19 JMA8ZT+Nd.net
>>319
CSV一行分をjsonのValueとして持てばいいんだよ

324:デフォルトの名無しさん
22/01/03 17:00:56.51 0xi3No7I0.net
var objs = new {
hoge = "hoge",
fuga = new object[] { 272, 1496922300000, "Y3913", true, "XA" },
};
var json = JsonConvert.SerializeObject(objs);
できない理由はないけどなんか他に条件とかありそうでアレだな

325:デフォルトの名無しさん
22/01/03 18:09:00.90 lKbCt2OW0.net
>>321
おお、出来るんですね。
ありがとうございます、試してみます

326:デフォルトの名無しさん
22/01/03 18:12:39.51 TMV+x4l+0.net
var json =
結局何の型だよってイライラくるよね

327:デフォルトの名無しさん
22/01/03 18:57:22.48 GjMIBEAT0.net
>>323
Visual Studioだとvarの上にカーソル持っていったら型が表示されるだろ

328:デフォルトの名無しさん
22/01/03 20:14:18.47 pwAwOJBp0.net
var: 無能発見機

329:デフォルトの名無しさん
22/01/03 22:52:28.05 TMV+x4l+0.net
型が分からなくてもソースが読み書きできる人が羨ましいわ。
どういう脳の論理構造してるのだろう。分からないまま読み進めるとかイライラしないの?
昔、『菊次郎の夏』って映画見て、映画見ながら、だから菊次郎って誰だよ?って
最後までイライラして発狂しそうになったの思い出したわ。ほんと糞な脚本だと思ったわ。

330:デフォルトの名無しさん
22/01/03 22:59:05.73 /qjDMXVn0.net
右辺見ろよ

331:デフォルトの名無しさん
22/01/03 23:54:17.33 /ROio/0MM.net
インテリセンスとAPIデザインが優秀って前提はあるだろうね
適当に.で繋げてけばなんとなくコードが出来上がる
間違ったらコンパイルエラーになる
だったらもうそれで型名は書かなくてもいいじゃない
型付スクリプト言語はその辺がまだまだ雑魚なんで型名をしっかり書かないと間違えるようにできてる

332:デフォルトの名無しさん
22/01/04 00:14:59.85 fY9OVGa4a.net
>>326
いや、型がメソッド名や右辺式から推測しづらいと思ったら
var使うなという方針は基本的には間違ってないと思うよw

333:デフォルトの名無しさん
22/01/04 00:16:29.87 2Grj8syS0.net
>>326
なんでvarの上にカーソル持って行かないの?

334:デフォルトの名無しさん
22/01/04 00:23:52.35 ufcanjsed.net
>>330
俺はvar推奨派だが、コードレビューでGitHub上で読むとかあるだろ?
コード工の数が多いといちいち全部pullしてVSで開くとかやってられない

335:デフォルトの名無しさん
22/01/04 02:20:28.03 f9obKWjH0.net
>>326
わからないままに何かしてない。
よめばわかるだろ。

336:デフォルトの名無しさん
22/01/04 09:52:16.17 2gpItayR0.net
326はC#の話じゃなくてジャバスクとかの話してるんだろ

337:デフォルトの名無しさん
22/01/04 10:52:36.05 +AHJD1dV0.net
inai inai var !

338:デフォルトの名無しさん
22/01/04 11:04:23.12 Qpyz6D0Nd.net
>>333
そういうことか
型推論は型が確定してるのに意味不明なこと書いてるなと思ってた

339:デフォルトの名無しさん
22/01/04 11:48:21.13 Oz0E0ZFa0.net
型が分からないとほんとイライラくるよな。
今回の反応でスルーできる奴の脳みその構造がだいたい分かってきたわ。わかったつもりで何も分かってない。
ジャバスクの話だ!! そういうことか!!! ←こいつらの脳の構造はこれなんだよ。馬鹿かこいつら…

340:デフォルトの名無しさん
22/01/04 11:52:23.41 Hrzc5R7N0.net
>型が分からないとほんとイライラくるよな。
varは型が確定しています
イライラしているのはあなたがバカなだけ

341:デフォルトの名無しさん
22/01/04 11:56:22.08 698Ta9DA0.net
>>337
“いつ”確定するの?

342:デフォルトの名無しさん
22/01/04 11:58:40.79 Oz0E0ZFa0.net
ジャバスクの話だ!!! varは型が確定している!!! ほんと馬鹿かこいつら…

343:デフォルトの名無しさん
22/01/04 12:00:45.54 K01QBlyFd.net
>>338
コーディングした時点で確定してるよ
varの上にカーソル持って行ったら確認できるだろ

344:デフォルトの名無しさん
22/01/04 12:01:01.01 g8h7/5Pi0.net
>>321から>>323ときてジャバスクとか後付感半端ないわ
こういうのとは仕事したくねーわw

345:デフォルトの名無しさん
22/01/04 12:07:12.39 kSsP1HEHa.net
>>323見たときに
var json =
こうあったとき、デコード後のclassが入ってることあったり、json stringが入ってたり、varやjsonなんて型や変数名だとわけわかんねーよ!
って話かと思ったら全然違った。なんだこの流れ・・・

346:デフォルトの名無しさん
22/01/04 12:11:24.66 Oz0E0ZFa0.net
これこれ。>>341 おれは一言もジャバスクなんて言ってないのにジャバスクの話にされて、
さらにはおれがジャバスクを後付したと妄信し、いきなり仕事したくないとかキチガイ妄想炸裂。
仕事先でこんなキチガイいたらガチで名誉毀損で訴えるわ。
これが型をスルーできる奴の脳の構造。リアルでアホだろ、こいつら…

347:デフォルトの名無しさん
22/01/04 12:12:43.55 IgSyCTXi0.net
※現在は削除されています
URLリンク(i.imgur.com)

348:デフォルトの名無しさん
22/01/04 12:14:13.14 K01QBlyFd.net
>>343
TypeScriptおすすめ

349:デフォルトの名無しさん
22/01/04 12:23:30.92 CklunmhzM.net
TypeScriptは型ヒント付きスクリプト言語にはよくあることだけど型が嘘をつけるので積極的に使わない方がいい
「型がついてるから安心だ」と思っていたら実行時に違う型の値が入っていることがよくある
なんなら生のJavaScriptの方が「型がないから全ての変数が信用できない」という前提に立てる分まだマシまである

350:デフォルトの名無しさん
22/01/04 12:29:36.62 K01QBlyFd.net
>>346
それ言い出すとC++もreinterpret_cast多用で型の嘘つけるからなあ

351:デフォルトの名無しさん
22/01/04 12:42:28.79 rprq1MIMM.net
>>347
まさにそれだね
cppは名前付きのキャストを使い分ける習慣が広まってるから状況は多少、マシ
TSにはanyとかいう負の遺産がある
それにJSはそれ自身ではできることが少ない言語なのでインフラapiコールに頼りがちだ
そこでanyを使いたくなくても多用するのでとにかく間違えやすい
自分がうっかり間違える可能性
チームメンバーが間違える可能性
ライブラリ作者が間違える可能性
とにかく間違いが起こりやすい
なのでTypeScriptは使わないほいがいい

352:デフォルトの名無しさん
22/01/04 12:53:18.36 rkCZbU1/0.net
・間違ったコールバックの型付け
・間違ったasの使用
・間違った.d.tsの使用
・間違ったユーザー定義タイプガード
TypeScriptで肩を間違える可能性があるのはこんなところかね。
まぁ、自分で使いこなせないものを使わない方がいいってのはその通りだが、
他人も同じように使いこなせないわけじゃないしな。

353:デフォルトの名無しさん
22/01/04 13:23:06.07 b15zgk0OM.net
>>349
間違える余地が在ることが問題
特定の個人が使いこなせるこなせないという低次元な議論じゃない
型Aと書いたものが実際にはAでないという可能性が生じた時点であらゆるコードが信頼性を失い
その検証のために心労とコストが増えて
そして実際にバグが増える
C#では例えば「DateTimeと書いた変数に実際にはstringが入っているかもしれない」などと考えてコーディングする人は誰もいない
C#ではよほどのことがなければ基本的に型が嘘をつかないからそれで上手くいく
DateTimeと書かれたらそれはDateTimeであってstringであることを考慮する必要はない
しかしTypeScriptは違う
型は平気で嘘をつく
Date型と書いた変数が実際は文字列だろうが数値だろうがお構いなしだ
TypeScriptでは型が嘘をついていないことを確かめるには
その型が嘘をついている可能性があるという前提でバリデーションを追加するか
依存してるライブラリの内部の隅々までソースを追いかけるか
そういった対策をしなければならない
それはあまりにも非生産的だ

354:デフォルトの名無しさん
22/01/04 13:31:23.12 b15zgk0OM.net
function ExternalLibFunc(): string
function example() {
const s: string = ExternalLibFunc();
if (typeof s === “string”)
throw new Error(“type errro”);
// do something
}
これが安全なTypeScriptコード
stringと宣言されたものを本当にstringかどうか確かめなければならない
この確認はバカバカしいと思うがやらなければバグを踏む可能性がある
でも全てを確認するなんて大変だ
だからみんな確認を怠る
そして実際にバグが発生する
そういう言語なんだTypeScriptってのは

355:デフォルトの名無しさん
22/01/04 14:02:28.93 4jDgn5Qw0.net
Form1csにイベントがたくさんあるので行数が多くなってしまうのですが
部品ごとにファイルを分けてコードを書く方法を教えてください

356:デフォルトの名無しさん
22/01/04 15:10:27.49 v2mo/5h3a.net
>>352
メニューやツールバーみたいのがあったら
イベントハンドラの数が増えること自体は仕方ない。
行数が増えて困ることは目的の場所を探しにくくなることだから、
対策は#regionディレクティブをうまく使って分類することぐらい

357:デフォルトの名無しさん
22/01/04 15:15:26.98 2Grj8syS0.net
>>352
partial class

358:デフォルトの名無しさん
22/01/04 15:40:55.02 y9M4FwJ2M.net
>>352
void HogeEvent(object s, EventArgs e) {
//長いコード
}
↑これを
↓こうする
void HogeEvent(object s, EventArgs e) {
_hoge.DoSomething();
}
class Hoge {
public DoSomething() {
// 長いコード
}
}

359:デフォルトの名無しさん
22/01/04 16:14:54.64 3sRZKpnOa.net
>>350
そうは言ってもc#だってobjectや継承あるからな・・・

360:デフォルトの名無しさん
22/01/04 17:04:00.85 BWSRqAyGM.net
>>350
ネイティブ呼び始めたら嫌でもチェックせんか?
タグ付きユニオンとか使い始めたらどうせそうなるし。

361:デフォルトの名無しさん
22/01/04 17:29:19.72 XgG7cDH40.net
なんだ動的型付け言語が嫌いなだけか

362:デフォルトの名無しさん
22/01/04 17:41:00.66 h9ISFI6AM.net
>>356
全く意味合いが異なる

363:デフォルトの名無しさん
22/01/04 17:42:21.35 h9ISFI6AM.net
>>357
本来バリデーションが必要がないところでバリデーションが必要になることが大問題

364:デフォルトの名無しさん
22/01/04 18:00:52.01 v2mo/5h3a.net
それはバリデーションじゃなくてバグのチェックだねw

365:デフォルトの名無しさん
22/01/04 18:24:36.74 h9ISFI6AM.net
そだね
TypeScriptdではそういうことも必要になってくる
言語上の欠陥なんだけどランタイムがJSだから永遠に解決しないだろうなこれ

366:デフォルトの名無しさん
22/01/04 18:24:37.24 rkCZbU1/0.net
>間違える余地が在ることが問題
完全無欠な言語以外は認められないと?
>型Aと書いたものが実際にはAでないという可能性が生じた時点であらゆるコードが信頼性を失い
どういう場合にそのようなことが起きるかがわかってないんだろうね。結局使いこなしの問題。

367:デフォルトの名無しさん
22/01/04 18:27:22.35 h9ISFI6AM.net
>>363
完全無欠な言語しか使わないとまでは言わない
ただ大きな欠陥のある言語は使いたくない
感覚としてはその程度だね
どういう場合に起こるか?
それはあらゆる場面で起こりうる
ライブラリすら信用できない

368:デフォルトの名無しさん
22/01/04 20:53:29.42 f9obKWjH0.net
>>360
本来バリデーションは必要なのに必要じゃないと思い込んでるだけだろ。
カナリア置いたりした経験無さそう。

369:デフォルトの名無しさん
22/01/04 20:55:06.78 f9obKWjH0.net
>>364
あるゆるは言い過ぎでは?
ほとんどの場合信頼境界を越えるからかと。

370:デフォルトの名無しさん
22/01/04 21:33:12.76 e29mAngZa.net
formsのchartを使ってるんだけど、20系列くらいを100ms以下でリアルタイム更新って厳しいのかな
色々試したけど更新にどうしても時間がかかる。。

371:デフォルトの名無しさん
22/01/04 21:37:51.18 I8DXoUzs0.net
>>365
c♯においてdatetime型の変数の中身がdatetime型以外である可能性があるの?
本来必要なバリデーションって何よ?

372:デフォルトの名無しさん
22/01/04 21:44:14.34 rkCZbU1/0.net
>>364
Cのポインタだって使い方を間違えたら正しい型を示さないことになるし、C自身も安全でない言語と見做される
こともあるが、それを分かったうえで正しく使う人はいるし実際広く使われている。そういうこと。

373:デフォルトの名無しさん
22/01/04 21:58:28.71 f9obKWjH0.net
>>368
外部のAPIで1899年以前を扱いうる場合。

374:デフォルトの名無しさん
22/01/04 22:45:31.35 mTPUUbcD0.net
>>367
サードパーティ製のチャートを探すことをお勧め
詳しくないから具体的な名前は特に挙げられないけど
とりあえずScottPlotって名前を最近見かけたので試してみては
しかし20系列もあると読みづらそうだな

375:デフォルトの名無しさん
22/01/04 22:57:39.12 xZMfmUxua.net
>>367
ただの折れ線グラフとかでビジュアル的に凝る必要がなければ
UserConrolから自分で作った方が早いかもね。
昔散々そういうのやってたけど、やってみると案外簡単だ。
WPFを選択するとパフォーマンス問題にぶち当たるから注意。

376:デフォルトの名無しさん
22/01/04 23:04:51.13 hJBi5qqI0.net
おすすめ本あります?
アマゾンで独習を見たのですが第4版は不評、第3版おすすめとなってたんですが
2010年出版っというのが引っかかっているので他を探しています。
スキルはPythonでPyGameのサンプルを打ち込みつつ、解説を見て勉強してるレベルです。
その他言語の経験はなし!

377:デフォルトの名無しさん
22/01/04 23:13:01.18 0nFT+Tq8M.net
>>365
違う
本来バリデーションは必要ないのにTSでは(というか型がゆるゆるのスクリプト言語全般だが)余計なバリデーションが必要ということ
string x = func();
と書いた時にC#ではxが本当に文字列であることを検証する必要はない
nullになっていないか、文字列が特定の書式を満たしているか、といった心配はあるだろう
しかし、xにintが入ってる可能性は考慮する必要はない
TSではxにnumberが入っているかも、という可能性を考慮しなければならない
これが本来やらなくていいはずのバリデーションだ
これは型が嘘をつくから起こりうること
TSの代表的な欠陥の1つだ

378:デフォルトの名無しさん
22/01/04 23:14:48.44 0nFT+Tq8M.net
>>369
詭弁
話を逸らすな

379:デフォルトの名無しさん
22/01/04 23:19:57.46 Oz0E0ZFa0.net
var x = func();
var y = x.func();
型が分からないとイライラくるよね。
スルーできる奴の脳みそってそ


380:れをすべて妄想で埋めてることが社会実験で実証された。



381:デフォルトの名無しさん
22/01/04 23:20:34.56 rkCZbU1/0.net
>型が嘘をつく
この言い回しをよっぽど気に入っているようだけどw当然TypeScriptが勝手に嘘をつくわけはなくて、
嘘をつかせたのはそれを使うプログラマ自身だわな

382:デフォルトの名無しさん
22/01/04 23:24:23.97 Hrzc5R7N0.net
>>376
それはメソッド名が糞なだけだよ

383:デフォルトの名無しさん
22/01/04 23:30:10.65 r+SDF27Td.net
わざわざ宣言した行まで戻って型確認するのか

384:デフォルトの名無しさん
22/01/04 23:30:19.98 QHt6N4Fh0.net
相変わらずコードが読めてもテンプレ読めない人が多いな

385:デフォルトの名無しさん
22/01/04 23:36:38.21 0nFT+Tq8M.net
>>377
TSが勝手に嘘をつくことはないがC#と比べて嘘をつかせるように導くのに長けている
プログラマは世界中に沢山いてTSを使うと漏れなくその脅威に晒される
また彼らが作成したライブラリにも嘘が潜んでいるかもしれない

386:デフォルトの名無しさん
22/01/04 23:58:26.60 f9obKWjH0.net
>>374
違わないよ。
全てTSの中であればNumberであることが担保されているのは、全てC#の中である場合と同程度に正しい。
C#の場合でも信頼境界を越えるのであればその可能性は考慮しないといけないし、TSの場合でも信頼境界を越えないのであれば気にする必要は無い。
ましてやTSというかJSはシングルスレッドなので別スレッドに壊される事も無い。

387:デフォルトの名無しさん
22/01/05 00:01:01.66 fuEg19Cq0.net
>>381
お前信頼境界って言葉一切ググらずに喋ってるだろ。
言われたことぐらい理解して反論してこいよ。

388:デフォルトの名無しさん
22/01/05 00:50:54.28 JsfvM5KJM.net
>>382
全てTSでも型が保証されない
最も簡単な事例は
const x: string = 100 as any
もちろんこんなコードを書く人はいないが
複雑で膨大なアプリケーションコードを扱うプロジェクトのなかで誰一人としてミスをしないかというと
そんな保証は全くなく型に嘘をつかれることになるだろう

389:デフォルトの名無しさん
22/01/05 00:51:02.44


390:JsfvM5KJM.net



391:デフォルトの名無しさん
22/01/05 00:56:20.83 fuEg19Cq0.net
>>384
それはC#でも同じでしょ。

392:デフォルトの名無しさん
22/01/05 00:59:38.17 JsfvM5KJM.net
C#ではI/Oが生じる場合にも型が嘘をつくことはない
例えばこうだ
int x = Parse<int>(inputStream);
パースエラーにより実行時に例外が発生することはある
それはどの言語でも起こりうることだ
しかし、依然としてxにstringが入ったり、DateTimeが入ったり、という、TSでは普通にあり得る悍ましい挙動を示すことは無いのだ
なぜならC#はTSと違って型が嘘をつかないから
C#の型は信頼できる
TSの型は嘘つきで信頼できない

393:デフォルトの名無しさん
22/01/05 01:00:08.39 fuEg19Cq0.net
>>384
大規模アプリ開発では、何層もの見えない層があった結果これが起こる。
オブジェクトの型を破壊的に変換 - C#と諸々」でググってみ。

394:デフォルトの名無しさん
22/01/05 01:00:59.54 fuEg19Cq0.net
>>387
じゃあTSはどうしてxにStringやなにがしかが入るの?どこで入れてんのよ?w

395:デフォルトの名無しさん
22/01/05 01:10:21.43 JsfvM5KJM.net
>>386
全く異なる
C#ではdynamic、リフレクション、コード生成を使えばコンパイラの検証を回避して、間違った型の変数に値を設定できる
しかし、C#でこれをやると実行時にエラーになるのだ
TSで何事もなく処理が進むのとは、全く趣が異なる
そう、TSではstringと指定した筈の変数にnumberやDateの変数が入ったまま、何事もなく進んでしまうのだ
これは本当に恐ろしい挙動だ
つまり、バグを仕込んだところから、しばらく処理が進んだところで被害が顕現する、ということだ
これはまるで、潜伏期間の長いコロナウイルスのように厄介な特性だ
この挙動はC言語などではよくあるものだったが、原因と結果が離れているのでデバッグがしにくい、とのことで先人達は大いに苦しめられたものだ
まがりなりにも後発の言語であるTSが、大昔の言語設計と同じ失敗を繰り返しているのは残念でならない

396:デフォルトの名無しさん
22/01/05 01:17:22.12 JsfvM5KJM.net
>>388
低レベルなメモリアクセスでランタイムを破壊できるのはどの言語でも当たり前のことだろう
TSのように低レベルメモリアクセスでもなんでもない、ただの代入で型安全を破壊できるようなものと同列に扱うべきではない

397:デフォルトの名無しさん
22/01/05 01:19:07.95 JsfvM5KJM.net
>>389
困ったことにTSではどこででも起こりうる
だから欠陥言語なんだよ
C#のように低レベルメモリアクセスで無理やり破壊すればできるよ、といった次元とはわけがちがう

398:デフォルトの名無しさん
22/01/05 01:46:29.20 lnjYKBBj0.net
>>379
varの上にマウスカーソル合わせてツールチップに表示される型を見るだけ

399:デフォルトの名無しさん
22/01/05 07:33:07.78 OXnyWrYu0.net
>>384
既に>>349で挙げているがそこに注意してプログラミングすればいいだけ。
お前は馬鹿だからそれができないんだろうが世の中の人間がみなお前と同じように馬鹿なわけではない。

400:デフォルトの名無しさん
22/01/05 07:38:49.44 t5pkfnoc0.net
JSなんて使いたくて使ってるやつはいないって事だよ
ほかに選択肢がないから仕方なく使ってるだけで
そもそも本来TSのようなトランスパイラはこの世に存在し得ない存在

401:デフォルトの名無しさん
22/01/05 09:23:21.76 bvaGXVet0.net
なんでc#スレで一生懸命TSの悪口言ってるの?

402:デフォルトの名無しさん
22/01/05 09:53:21.58 SNzZltS0M.net
欠陥指摘できる俺すげー君だろw
スルーしとけ

403:デフォルトの名無しさん
22/01/05 09:57:56.22 5ORhcVX2D.net
WinFormのlistViewをタブレットで使いたいのですがlist部分を指で上下してlistをスクロールする事は出来るでしょうか
スクロールバーで上下出来るのですがスマホのように出来ないかなと

404:デフォルトの名無しさん
22/01/05


405:10:15:33.57 ID:Zzh6nSy3M.net



406:デフォルトの名無しさん
22/01/05 10:17:21.15 Zzh6nSy3M.net
>>396
しつこく返してくる奴がいるから仕方なく付き合ってやってる
そいつがTSの型は安全でないという当たり前の事実を素直に受け入れれば俺もこんなレスバしなくても済むんだが

407:デフォルトの名無しさん
22/01/05 10:34:58.47 TbL+VltAd.net
TypeScriptなしではJS開発やってられなくなってしまったな
特にチーム開発

408:デフォルトの名無しさん
22/01/05 11:00:24.24 dUhlmVC50.net
>>398
一応標準でサポートされてるはずだけど
なんかスクロール遅いし慣性の扱いが下手糞だけど…

409:デフォルトの名無しさん
22/01/05 11:06:50.05 llHLsWPPp.net
>>400
おまえは相手がうんと言うまでスレチ議論続けるつもりか

410:デフォルトの名無しさん
22/01/05 11:43:03.34 93Qk8F8ua.net
例えばリストビューを作るときにアイテムのTagに日時を代入しとく
そうしたら選択したアイテムの日時がすぐにわかるから。こんなのはよくやる手法だよね
で、実際にアイテムがクリックされたときにTagを読んで日時を取得しようとしたらstringだったりDateTimeだったりして型エラー。バリデーションwが必要になる
こんなの(アホがプログラミングしたら)c#でも日常茶飯事だからな
tsでも同じ。アホがプログラミングしたらバリデーションwは必須だし、普通にプログラミングしたら不要

411:デフォルトの名無しさん
22/01/05 11:54:44.06 ZRZErZAVM.net
>>404
君は議論の焦点を全く理解してないようだね

412:デフォルトの名無しさん
22/01/05 12:07:48.08 2gwkfiFL0.net
すまんが、昔、Linux + LLDBでのC#のデバッグ方法が公式サイトに書かれていたようが気がするんだけどさ
そんなようなページってどこにあるのか、誰か知ってたら教えて!!!

413:デフォルトの名無しさん
22/01/05 14:47:28.15 kRupjksVa.net
昔OSも乗ってない小規模組み込みをアセンブリでずっと書いてたけど、
アセンブリには当然型なんて概念そのものが存在しないが、
だからintとBCDを間違えたり、構造体のポインタを別の構造体のポインタと勘違いする
ミスが多いかと言うと、そこは意外とそうでもなかったりする。
それより生産性に対する影響の方が大きい印象だね。
まあこれは小規模かつ基本1人の開発だったからそうだっただけで、大規模かつチーム開発だと
話が変わってくるのかもしれない。
この辺はゲーム業界の人が詳しそうだね。
あの世界は下手したら90年代の終わり頃までアセンブリでやってたはず

414:デフォルトの名無しさん
22/01/05 15:04:40.06 XpPjLRYm0.net
バグには様々な要因があるから、不正な型が代入された場合だけを過度に心配してもね

415:デフォルトの名無しさん
22/01/05 15:08:39.22 C1Xb8B3u0.net
型を気にしない馬鹿はテストも当然にしないから

416:デフォルトの名無しさん
22/01/05 15:14:15.12 ROW6egx4d.net
>>384
自分が守らなければそりゃ保証もされないだろ。
C#ならある型にはある値しか入らないと思ってそう。
例えば構造体につっこんでFieldOffsetで上書きすればあっさり壊れるぞ。
[StructLayout(LayoutKind.Explicit)]
struct XXX {
 [FieldOffset(0)] public DateTime Value;
 [FieldOffset(0)] public ushort Tag;
}
でXXX.Tagに適当なもの入れ�


417:スらValueは無茶苦茶になる。



418:デフォルトの名無しさん
22/01/05 15:54:13.43 qaVNdYDmM.net
参照型の変数にnullが入ってるかもしれないし、C#の場合は例外の型もドキュメントの記載を信じるしかないよね
結局は程度問題なんだよ
前者のnullの問題についてはnull許容参照型を使えば型として区別できるけど、null非許容だからといって絶対にnullが入らないわけではなく簡単にnullを混入させることができる
彼の大嫌いなTSと同じく、特にランタイムチェックのない紳士協定だ

419:デフォルトの名無しさん
22/01/05 16:24:00.16 kRupjksVa.net
っていうかこれたしか元はvarの話だよね。
繰り返しになるけど、元々の問題提起、つまり
「右辺の型が推測しづらいケースでもvarを使うのは不適切じゃないのか?」は正しいよ完全にw
匿名型を受ける場合以外のvarの目的は、「見れば分かる」冗長な繰り返しを避けて
シンプルにすること。
「かっこ悪い」みたいな中二病的動機で意地でも型を明示しないことに固執する奴はアホだが、
困ったことに現実にはそういうアホが結構いる。
この辺LINQの乱用が嫌われるのと同じなんだろうねw
シンプルにするための道具を使ってわざわざ難解にするバカw
たぶん彼はシンプルとは文字数が少ないことだと倒錯している

420:デフォルトの名無しさん
22/01/05 17:12:39.57 x9hFTlB3d.net
varの型が分からん分からんってこいつメモ帳で開発してんのか?

421:デフォルトの名無しさん
22/01/05 17:24:59.67 5TZJeeZKa.net
IDEだけでしかソース見ない奴は問題ないんだよ
ぐぐってブラウザ上で見るソースなんてマウスあてても型表示してくれないからな

422:デフォルトの名無しさん
22/01/05 17:28:23.80 C1Xb8B3u0.net
どんだけ小さなプロジェクトしか関わったことないのか知らないが
code reviewするときに数百、数千というvarをおまえはいちいちマウス乗せてチェックしてるのか?
型を気にしないならオープンソースもコードを確認せずビルドして使うタイプだろう。
OSS品質=誰かがチェックしてくれるはず=テストしてない=今のMSのコード品質

423:デフォルトの名無しさん
22/01/05 17:32:31.52 5TZJeeZKa.net
var使ってるぐらいで崩壊するようなとこは大きいの作れないから気にする必要ないよw

424:デフォルトの名無しさん
22/01/05 17:43:11.47 t5pkfnoc0.net
varなんて大抵は右辺見たら型わかるやろ?
何が分からんのだ?

425:デフォルトの名無しさん
22/01/05 17:48:48.78 C1Xb8B3u0.net
実験結果は分かった気になって実は全然分かってないでした。
でも分かった気になってるのでいつまでもなぜ分からないのだ?と問い続ける。

426:デフォルトの名無しさん
22/01/05 17:52:58.23 t5pkfnoc0.net
いやマジで何が分からんの?アホの子なの?

427:デフォルトの名無しさん
22/01/05 17:58:12.21 bWjicXEh0.net
つか、変数名見ればクラス名も分かる程度にしておくのが普通だから
マウスで調べなくてもだいたい分かる

428:デフォルトの名無しさん
22/01/05 17:58:55.28 C1Xb8B3u0.net
自演じゃないよ、彼はそう信じてるんだ。笑わないでほしい。

429:デフォルトの名無しさん
22/01/05 18:09:44.71 R56PdZ5+0.net
>>421
このスレの住人はお前のことを笑っているぞ

430:デフォルトの名無しさん
22/01/05 18:09:55.54 t5pkfnoc0.net
staticおじさんみたいなもんだな

431:デフォルトの名無しさん
22/01/05 18:21:06.82 C1Xb8B3u0.net
そして彼は笑いながら未テスト納品を繰り返す。そしてまたスパコンのデータを吹き飛ばす。

432:デフォルトの名無しさん
22/01/05 18:39:16.92 w42D9Ab/0.net
コードレビュー時にローカル変数の型をいちいち調べる意味がよくわからん
必要になるのってバグの原因調査する時だけでしょ

433:デフォルトの名無しさん
22/01/05 18:41:30.05 jje+EFiu0.net
TS、JSの型がゴミなのはわかる
c#のvarも俺は嫌い
普通に読みにくい
最近は派遣先会社のVSに仕込まれた強制変換スクリプト?で保存すると勝手にvarが明示的な型に置き換えられて
久しく見ない問題だったが

434:デフォルトの名無しさん
22/01/05 18:42:19.84 C1Xb8B3u0.net
何も知らないなら喋らなきゃ無知はバレない。

435:デフォルトの名無しさん
22/01/05 19:07:10.79 5TZJeeZKa.net
>>425
人のソース読むのにvarで省略されてるよりも、型が使われてる方が理解しやすい
もちろん>>420のようにしてくれればvarでも変わりゃしないけど、世の中そういうソースばかりじゃないし酷いのになると名前で型を騙されることあるからな
整数型にn、floatにfついてるからdがついてたらdoubleかと思ったらそれも整数だったり。そりゃないだろ・・・

436:デフォルトの名無しさん
22/01/05 19:19:51.10 fuEg19Cq0.net
限度の問題では?
MSの規約にあわせれば良いでしょ。
IEnumerable<T>で受けるべきなのにList<T>で受けてるとかそういう不適切な状態になってない限りvarで良いと思うけどな。
varは省略の為に使うのではなくて推論の為に使うんよ。

437:デフォルトの名無しさん
22/01/05 19:53:56.06 jje+EFiu0.net
varなんて右クリックメニューで元に戻せるから書くだけ書いたら明示的な記述に直しちゃった方がいいよ

438:デフォルトの名無しさん
22/01/05 19:57:59.86 kRupjksVa.net
>>429
推論はするよりしない方が脳への負担が低いはずなので、
君の説を採るとvarは全面禁止すべきという結論になってしまうよw
少なくともコードの読み手(書き手ではなく)にとってのvarのメリットは
右辺の型が分かりきっている時に左辺の方でもくどくどそれを繰り返される冗長さが回避されることだ。

439:デフォルトの名無しさん
22/01/05 20:04:49.66 lXYh5E9eM.net
型推論
URLリンク(ja.wikipedia.org)

440:デフォルトの名無しさん
22/01/05 20:09:49.34 34fypwCFM.net
書くやつは楽
コピペ盗作するやつは脳味噌が必要
var大勝利じゃん

441:デフォルトの名無しさん
22/01/05 20:11:27.06 jje+EFiu0.net
>>432
そもそもこれがゴミなのか有効なのか?
って議論がなされないまま突然導入されてほら使えだからな
VSの右クリックメニューにもvarを元に戻す機能が付いたってことはあんまり評判よくないだろコレ

442:デフォルトの名無しさん
22/01/05 20:16:51.17 eampx4mf0.net
議論に参加できるぐらい出世しろ

443:デフォルトの名無しさん
22/01/05 20:20:48.72 jje+EFiu0.net
>>435
お前の会社は社長が1番技術力高いのか?

444:デフォルトの名無しさん
22/01/05 20:41:21.39 P9kF/5N50.net
varで推論しないほうが脳への負担が低いというのはどういうことですか?

445:デフォルトの名無しさん
22/01/05 20:42:40.80 C1Xb8B3u0.net
>>437
型が分からなくてもイライラしない人はそもそも負担がありません。

446:デフォルトの名無しさん
22/01/05 21:00:44.67 jje+EFiu0.net
アホが作った無意味なマトリョーシカクラス追わなくて済むからな

447:デフォルトの名無しさん
22/01/05 21:16:57.60 w42D9Ab/0.net
15年近く前から導入されてるものに対して
いまだに文句を言い続ける「熱量」には感心する

448:デフォルトの名無しさん
22/01/05 21:20:57.24 jje+EFiu0.net
>>440
正直、クラスから嫌いです
構造体以上のメリットを全く感じたことない

449:デフォルトの名無しさん
22/01/05 21:56:49.45 LjEcMnXra.net
>>441
そこは「しっくりこないんです」、と書いて欲しかったw

450:デフォルトの名無しさん
22/01/05 22:09:26.64 R56PdZ5+0.net
staticおじさん生きてたのかw

451:デフォルトの名無しさん
22/01/05 23:32:21.89 9KUuQ3bM0.net
わかってる奴がvar使うのはOK
馬鹿がvar使うのはNG

452:デフォルトの名無しさん
22/01/05 23:33:33.69 HyMzvNe00.net
じゃあdynamicつかうね

453:デフォルトの名無しさん
22/01/06 02:10:11.97 jegOl+WX0.net
>>431
推論させる方が脳への負担は低いよね?
型がわからなくてイライラすると言うけど、解る必要ある部分ではないのでは?
極端な�


454:bメソッドの入口と出口は型が決まってんだから。



455:デフォルトの名無しさん
22/01/06 02:36:29.67 Vr7+jyV40.net
そのメソッド追っ掛けるのが面倒だって話ではないのか

456:デフォルトの名無しさん
22/01/06 02:50:36.77 ChZ1cCgVa.net
>>446
推論の主語が変わってるよw
あなたの言ってる推論の主はコンパイラ(開発環境)だよね?w
ついでに言うと、あなたがたぶん言いたいことは「書く時の負担が減らせる」ということ。
だからそうじゃなくてコードの読み手にとってのメリットが重要なのよw
そう書いてるよね?>>431
だってそうでしょ。
コードを書いてる時の書き手にとってはどの変数がどの型かなんて
当然自明なんだからvarにはメリットしかないよ。そんなの当たり前でしょw
結局varについても意見が割れるのは前にも書いた(>255)こういう意識の差があるからだろうね。
世の中KISSなんてただのお題目だと思っててなぜ重要か体感レベルで実感できない人が結構いる。

457:デフォルトの名無しさん
22/01/06 03:46:43.08 Jy6L3sVt0.net
>>448
>コードを書いてる時の書き手にとってはどの変数がどの型かなんて当然自明なんだから
馬鹿はvarを使えばエラーが出ないという理由でvarを使っているだけで型なんか理解もしとらんのだよ

458:デフォルトの名無しさん
22/01/06 06:07:27.91 WSidiaMA0.net
>>449
その発想はなかったわ
バカの考えは馬鹿にしかわからないのだな

459:デフォルトの名無しさん
22/01/06 08:30:02.04 GGuE86Bnd.net
>>448
違うよ。
コードの書き手も読み手も楽が出来る。
varで宣言されている変数に関しては、推論を行わせて、自動的に型が決まっていても良い、というシンプルな話。
Task<IQueryable<Bar>> foo()
{
 var masters=getMasters();
 //なんかmastersを使った処理
 // :
 var predictate= e=> ... ;//変換したmastersを使った関数
IQueryable<Bar> result = xxxx.Where(predicate).Take(10);
 //resultの確認
 return result;
}
こんながあったとき、predictateとmastersはvarで充分では?

460:デフォルトの名無しさん
22/01/06 09:18:51.63 BMV6DlOj0.net
全く論点が不明
コードレビューでは全てのvar変数をマウスオーバーして型を確認しなければならないと言うのもシチュエーションとして理解不能、猿が働いてる企業なのか?
そもそもそんな使用の是非の議論が必要な話なら世の中にvar禁止の組織はさぞかしあるんだろ?
御託並べる前にgithubでvar禁止にしてるC#プロジェクトでも持ってこいよw

461:デフォルトの名無しさん
22/01/06 09:23:52.72 BMV6DlOj0.net
この手の「一人のstaticおじさんに大勢が説教する図」はさまざまなスレで見かけるけどまったく生産性ゼロで不毛だよな
ほかに同調する奴いない時点で自分が間違ってる可能性か考えろよ
まず自分を疑うのはエンジニアの基本やろ

462:デフォルトの名無しさん
22/01/06 09:37:12.69 VWdkYx+r0.net
>>440
また低能馬鹿論理でましたね。WPFでも同じ馬鹿なこと言ってる人がいました。

463:デフォルトの名無しさん
22/01/06 10:00:08.90 WPmMIBV7M.net
>>451
C#だとresultの型は推論できないんだっけ?

464:デフォルトの名無しさん
22/01/06 10:02:24.36 VWdkYx+r0.net
>>ID:BMV6DlOj0
論点すら分からない馬鹿でも喋らなきゃ無知はバレない。

465:デフォルトの名無しさん
22/01/06 10:07:20.21 sIABQ4ka0.net
初心者スレで無知晒しても別に構わんだろ
ちゃんと教えてやれよ

466:デフォルトの名無しさん
22/01/06 10:10:39.02 jegOl+WX0.net
>>455
resultというか、メソッドの宣言的には省略不可。
なので、returnしているということはvarでも良いかもしれんな。

467:デフォルトの名無しさん
22/01/06 10:11:51.45 VWdkYx+r0.net
>>ID:BMV6DlOj0
いちいち捏造してはマウンティングしてきて
相手を猿だの罵倒してくるクソ野郎にはクソレス返しで十分。

468:デフォルトの名無しさん
22/01/06 10:36:42.54 cm3DDwaa0.net
議論用でやれば
凄い流れるんだけど

469:デフォルトの名無しさん
22/01/06 10:38:33.11 BMV6DlOj0.net
数千のvarをマウスオーバーして型を調べるってんだからそんなもん猿以外の何者でもないだろw
それでカネ貰えるんだからいい仕事だなあ
で、var禁止のC#プロジェクトは見つかったのか?
さっさと探してこいよ

470:デフォルトの名無しさん
22/01/06 10:42:17.16 VWdkYx+r0.net
ID:BMV6DlOj0 ←無職のクソ野郎が仕事を語る

471:デフォルトの名無しさん
22/01/06 10:52:01.70 XJZjWgUBd.net
戦犯は>>323

472:デフォルトの名無しさん
22/01/06 10:58:22.55 VWdkYx+r0.net
>>463
馬鹿の壁の社会実験。参加してくれた馬鹿に感謝する。

473:デフォルトの名無しさん
22/01/06 11:41:47.82 CKbwlJU4M.net
>>458
メソッドの宣言?
ここの話だろ
> IQueryable<Bar> result = xxxx.Where(predicate).Take(10);
xxxx の定義によるけど普通は var で良くね?

474:デフォルトの名無しさん
22/01/06 12:18:50.36 +o9sIybza.net
IQueryable<Bar> result = xxxx.Where(predicate).Take(10);
↑だとこの一行でBarとってるとわかる
var result = xxxx.Where(predicate).Take(10);
これだとなにかを取ってるとしかわからない。たった数文字の差だけど受け取れる情報が多くなって読みやすい
俺みたいなエスパー能力低い人間にとっては普通に書いてくれた方がありがたい

475:デフォルトの名無しさん
22/01/06 12:34:17.18 B4j0C8aZM.net
試してみたけどpredicateの型を明示的にExpression<Func<T>>にしてないと
WhereがIEnumelableで解釈されてだめやね
resultの型をIQueryable指定しててもコンパイルエラー
Whereにlambdaのリテラル入れた場合は varでOk

476:デフォルトの名無しさん
22/01/06 12:57:35.75 jegOl+WX0.net
>>465
すまん、そこ間違えた。varで良い。
言語によってはTask<IQuerable<Bar>>が要らない言語があるんよ。
確かにBar取ってるとわかるが、Barを取っているとわかる必要はある?
>>467
スマホで書いたらダメだな、すまん。

477:デフォルトの名無しさん
22/01/06 13:20:28.91 +o9sIybza.net
Barだと分かる必要はないけど分かったほうがありがたい
無地のジグソーパズルでも問題なく完成できるけど、絵柄があったほうがありがたいのと同じ

478:デフォルトの名無しさん
22/01/06 13:50:37.41 A4g6fK0TM.net
わかる必要はないのわかったほうがありがたい?
初心者にありがちな必要ないのにやけに細部にこだわるタイプなのかな?

479:デフォルトの名無しさん
22/01/06 14:04:18.23 +o9sIybza.net
その行の前後見ればvarとあってもそれがBarだとわかる
でもBarと明示してくれたら前後見る手間なく分かる、たったそれだけの差をありがたいと言ってる
var result = colBar.Where(predicate).Take(10);
xxxxでなくcolBarというように書かれてたらvarでもBarだと分かるからありがたいし
もっと言えばresultとかやめて
var resBarTop10aroundPOI = colBarInTokyo.Where(predicate).Take(10);
こんな風にしてくれたら、この一行見るだけでそれが何しているのかが分かってありがたい
俺みたいに理解力に乏しい人間にとっては情報量多いほうがありがたいんだよ。無駄に多すぎるのは勘弁だが

480:デフォルトの名無しさん
22/01/06 14:08:45.09 t38juXmg0.net
class HogeBase
{
・・・
}
class Hoge : HogeBase
{
・・・
}
static Hoge GetHoge()
{
  return new Hoge();
}
の場合

HogeBase hoge = GetHoge();
だと右辺の型確認しない主義の人はhogeの実態がHogeBase型だと勘違いしたまま作業することになるからまずいんじゃないの?

481:デフォルトの名無しさん
22/01/06 14:13:52.71 HsEWm91X0.net
それは勘違いじゃないんじゃないの?

482:デフォルトの名無しさん
22/01/06 14:15:52.97 +o9sIybza.net
それはHogeBaseとして扱いたいからHogeBaseに入れてるんでしょ
中身はHoge2やHoge3かもしれない。Hogeと知らなくてもいいよ

483:デフォルトの名無しさん
22/01/06 14:19:47.84 t38juXmg0.net
virtualメソッドがHogeとHogeBaseで違う動きするよ?
virtualがHogeBaseの動きする前提でレビューしていいのかい?
>>473
>>474

484:デフォルトの名無しさん
22/01/06 14:29:24.20 HsEWm91X0.net
何か問題が?
それで困るなら派生させちゃ駄目

485:デフォルトの名無しさん
22/01/06 14:33:13.09 +o9sIybza.net
HogeBaseがさらにIBaseってインターフェース派生だったらどうするよ
IBase hoge = GetHoge();
hogeは何も実装できないInterfaceだから何の動作もしないはずなんて思うやつはいない
そもそも型に対して前提としてる考え方が違う
GetがHogeじゃなくてHogeBase返してきたら右辺見ても区別つかないよ
static HogeBase GetHoge()
{
  return new Hoge();
}

486:デフォルトの名無しさん
22/01/06 14:33:43.94 t38juXmg0.net
>>476
へー、呼ばれるメソッドを間違えて認識しててもレビューできるんだ
すげーな

487:デフォルトの名無しさん
22/01/06 14:37:00.03 t38juXmg0.net
>>477
うん、だからレビューするなら真面目に右辺のメソッドの中身まで確認しろってこと

488:デフォルトの名無しさん
22/01/06 14:41:37.87 A4g6fK0TM.net
>>478
えっ?
多態使ったことないんか?

489:デフォルトの名無しさん
22/01/06 14:54:39.91 t38juXmg0.net
使ってるからこの話題持ち出したんだけど
>>480

490:デフォルトの名無しさん
22/01/06 15:15:22.51 FKeKEAH4M.net
hoge.fuga();
って言うコードをレビューする時に実際に呼ばれるメソッドがまだ作られてないケースもあるんだけどどうやってレビューしてるの?

491:デフォルトの名無しさん
22/01/06 15:19:14.44 Rudq/m5Ya.net
>>451
人の話聞かない人?何が言いたいのかさっぱり分からん。
恐らく誰も、少なくとも俺は
「varを使うと自動的に左辺の変数が不明瞭になるからvarは一切使うな」
などとは言ってないの。
例えば>>431
むしろ現実的にはほとんどの場合varでいいんだよ。
それはコードの書き手にも読み手にもメリットがある。
論点は>>412に書いた通り、「右辺の型が推測しづらいケースでもvarを使うのは不適切じゃないのか?」だ。

492:デフォルトの名無しさん
22/01/06 15:20:25.57 77VqpiEwM.net
var嫌がってるのってもしかしてテストコードを書かない種族の人?

493:デフォルトの名無しさん
22/01/06 16:21:47.64 7whnQ4QD0.net
ワイはvarのほうが効率あがる
うちはそこはレビューよりも書き手優先でvar推奨(c#)
レビューも気にするならその段階でIDE起動してる
その現場でいちいち書かせたいんなら型明示を強制すればいいんでね
うちのとこはそんなとこまでちまちま言い合うほど暇じゃないし、それ以上にテスト充実してほしい勢
まあvarにわざわざ書き直させたりもしないねw

494:デフォルトの名無しさん
22/01/06 16:35:03.08 +o9sIybza.net
俺はvarが嫌なんじゃなくて読みにくいコードが嫌
で、読みにくい要因の一つがvarだということな
さらに自分がvar使うのが嫌なんじゃなくて他人が使ってるのが嫌。自分のコードだったらそんなこと気にしなくても読めるし
自分に優しく他人に厳しくがモットーなんだよ

495:デフォルトの名無しさん
22/01/06 16:36:42.04 OeKJG00I0.net
私C#良く分からないのですが、
そんな私がC#の説明することになりました。
クラスが参照型なのですが、どういう理由でこうなっているのか、
どういう意図でこうなっているのか、何と言って説明すればいいの?
本読んでも「参照型はポインタ的な雰囲気の何か」的な説明しかなくて
なんでこうなっているのか全く書いてなかった。
ちなみに、参照型=ポインタと言い切っちゃってもいいのかな??
よろしくお願いいたします。

496:デフォルトの名無しさん
22/01/06 16:38:59.36 OeKJG00I0.net
コード書くときはvarで書いて、
それをintとかlongに変換してくれるツールを作ればいいだけなのでは??

497:デフォルトの名無しさん
22/01/06 17:01:20.10 WCTWOnks0.net
>>487
書籍に例えるとどちらも目次に該当する
ポインターがページ数だとすると参照型ってのはタイトル

498:デフォルトの名無しさん
22/01/06 17:31:36.72 ae3RunliM.net
>>487
参照型はデータそのものじゃなくデータへの参照を持ってる型
C言語しか知らない人にC#を説明するんじゃなければわざわざポインタとの対比で説明する必要ないよ

499:デフォルトの名無しさん
22/01/06 17:35:14.31 WCTWOnks0.net
Varでも何でもいいけど読みながらその都度型を類推するよりは読む前に何をしてるか理解してから読む
大まかな流れを理解してから読むのとメクラ滅法に読むのじゃ時間が100倍も1000倍も異なるからね
書く時だってそう

500:デフォルトの名無しさん
22/01/06 17:50:32.30 rL+VifTwM.net
>>483
> 論点は>>412に書いた通り、「右辺の型が推測しづらいケースでもvarを使うのは不適切じゃないのか?」だ。
具体的にどういうケースを言ってるの?

501:デフォルトの名無しさん
22/01/06 17:51:43.10 VWdkYx+r0.net
>>492
型が分からなくてスルーできる脳みそが羨ましいわ~

502:デフォルトの名無しさん
22/01/06 17:55:43.01 h7LPoqLqM.net
そもそもvarがいいのって書くときだけじゃん
戻り値なんかでやられると最悪じゃん

503:デフォルトの名無しさん
22/01/06 17:58:59.73 XJZjWgUBd.net
結局宣言行まで戻って型見る面倒
ショートカットでいいような

504:デフォルトの名無しさん
22/01/06 18:41:32.37 6bRgcWdcM.net
>>493
そういうレスしかできない時点でなにも困ってないのがバレバレやん

505:デフォルトの名無しさん
22/01/06 19:04:48.00 VWdkYx+r0.net
>>496
トラが檻に戻ってないのに確認しないで施錠できる脳みそみたいな

506:sage
22/01/06 19:25:09.72 OeKJG00I0.net
>>489 >>490 返答ありがとうございます。
「参照型とは何か」を問うているのではなくて、
クラスが参照型なのは、どういう理由でこうなっているのか、
どういう意図でこうなっているのかを問うています。
クラスを参照型にしている思想は何かということです。

507:デフォルトの名無しさん
22/01/06 19:27:13.03 6bRgcWdcM.net
単なるアホかよ、NGしとくわ

508:デフォルトの名無しさん
22/01/06 19:34:15.72 VWdkYx+r0.net
>>499
推測しづらいケースが一つも思い浮かばない→推測をしたことがない→馬鹿の壁

509:デフォルトの名無しさん
22/01/06 19:34:56.89 jNRDp0FJa.net
>>498
逆に参照型じゃないならどうする?
多くのデータを抱えたクラスを毎度毎度コピーして渡すコピー型にでもする?

510:デフォルトの名無しさん
22/01/06 19:35:48.42 Bcw/lb7Z0.net
>>498
C# クラス 参照型
でググれば一番上にお前が望んでいる答えがあるぞ

511:デフォルトの名無しさん
22/01/06 19:38:04.42 OeKJG00I0.net
var addFunc(var a, var b){ return (a + b); }
とかはありですか??

512:デフォルトの名無しさん
22/01/06 19:42:33.04 Z0ROnAB1M.net
>>503
その宣言内容だけでどうやって型推論するのか
いくら何でもコンパイラに与える情報が足りなさすぎる

513:デフォルトの名無しさん
22/01/06 20:15:49.57 pGhYWD4M0.net
>>499
気付くのが遅いぞ
コレいつもの人だわ

514:デフォルトの名無しさん
22/01/06 20:27:11.92 VWdkYx+r0.net
>>505
おまえの型推論はバグってるな。

515:デフォルトの名無しさん
22/01/06 20:53:48.44 2nit6p8q0.net
>>471
これ、古より嫌われているシステムハンガリアンだから結構嫌がる人多いと思うよ

516:デフォルトの名無しさん
22/01/06 20:55:39.69 WSidiaMA0.net
winapiのクソキャストにはハンガリアンぐらいが丁度いい

517:デフォルトの名無しさん
22/01/06 20:59:03.64 snULIxlRa.net
>>487
問題設定自体を変えた方がいいかもね。
なぜ値型ではだめなのか?と。
値型だと少なくとも「フールドを増やしたサブクラスの値を
ベースクラスの型の変数に入れる」なんて芸当は難しくなるね。
というか、こういう禅問答みたいな話は(たぶん重要なんだろうとは思うけど)
初心者は後回しにした方が絶対にいいと思う。

518:デフォルトの名無しさん
22/01/06 21:28:53.73 TiVU33P2M.net
>>498
参照型を理解してないんだからそれを理解するのが先
クラスが参照型なのはポインタ型や値型だと困るから
文字列が値型だとどうなるか考えてみれば?
ポインタを理解してるならすぐわかる

519:デフォルトの名無しさん
22/01/06 23:17:09.17 mv8eR6oh0.net
C#のスレでメソッド名の先頭が小文字から始まってる時点で、
・意識が低い
・まともに調べたり勉強していない
どちらかであることを認識すべき。

520:デフォルトの名無しさん
22/01/06 23:20:50.62 VWdkYx+r0.net
varがある時点でやっつけ専用言語なのに

521:デフォルトの名無しさん
22/01/06 23:32:25.27 8QDluGwV0.net
>>512
???

522:デフォルトの名無しさん
22/01/06 23:51:42.25 t38juXmg0.net
>>512
今時C++でさえ型推論付いてるというのに

523:デフォルトの名無しさん
22/01/06 23:53:35.71 VWdkYx+r0.net
どうしてもc++でやっつけコード書きたいから追加した仕様だろ

524:デフォルトの名無しさん
22/01/07 00:03:01.88 IK3vjsT30.net
今時型推論ないほうが珍しいだろ

525:デフォルトの名無しさん
22/01/07 00:09:41.99 qow9t6Ky0.net
やっつけコードしか書かないプログラマだらけの時代に何言ってんだ
昔はOSの無償サポートは10年とかだったのに今はすぐサポート切れの切り捨て。
なぜならやっつけコードで保守する気ないからだ。Win8とかEdgeとかWPFとかぜーんぶやっつけで作ってたからすぐ捨てられた。

526:デフォルトの名無しさん
22/01/07 00:23:20.23 bs4RpyaW0.net
型推論はやっつけなのか。
古き良きなのか、時代についてこれないのか
考え方は人それぞれよね

527:デフォルトの名無しさん
22/01/07 00:30:28.71 uWMJJK3h0.net
型推論だめってチームいやだわ
ギスギスしてそうw

528:デフォルトの名無しさん
22/01/07 00:32:56.56 IK3vjsT30.net
型推論付きの言語はやっつけ専用か
普段この人は何言語でやっつけじゃない開発してんだろう

529:デフォルトの名無しさん
22/01/07 00:40:49.40 YgufRjXg0.net
最近は「int key = 0」でなく「Key key = new(0)」みたいに書いてるからvarは使わんな

530:デフォルトの名無しさん
22/01/07 06:45:05.41 j4Wq+RBJM.net
>>520
・老害のCOBOLer
・自称スーパープログラマーな組込C使い
・Javascriptのvarと混同してるボンクラPG

531:デフォルトの名無しさん
22/01/07 08:15:52.34 y6x0s+uzd.net
var一切使わない人ってラムダの引数型もクソ真面目に書いてそう

532:デフォルトの名無しさん
22/01/07 09:50:10.76 qow9t6Ky0.net
スップw 初心者スレでラムダw

533:デフォルトの名無しさん
22/01/07 10:00:38.21 qow9t6Ky0.net
知らないうちにLINQスレもなくなってる。過疎なム板で落ちるとかよほど人気ないのか。
>>523 そうやってガキみたいに初心者相手にマウンティグして全部追い出したんじゃないのか。

534:デフォルトの名無しさん
22/01/07 11:42:40.26 yxixByMw0.net
おーっとここでガキマウントです

535:デフォルトの名無しさん
22/01/07 11:50:35.85 FRwoYiaWM.net
>>524
初心者のくせにラムダなんて生意気だ!
ってマウントですね

536:デフォルトの名無しさん
22/01/07 12:38:03.65 6zNCaZbD0.net
>>509
>> 値型だと少なくとも「フールドを増やしたサブクラスの値を
>> ベースクラスの型の変数に入れる」なんて芸当は難しくなるね。
すみません。良く分かりません。クラスが値型のC++で
「フールドを増やしたサブクラスの値をベースクラスの型の変数に入れる」
なんて芸当、なんの問題もなくできると思うのですが
>>510
>>文字列が値型だとどうなるか考えてみれば?
文字列は内部実装は参照ですが、ユーザ見えは値型と同じだと思うんですが・・・
内部でどう実装されているのかは、そんなに説明するつもりもないし・・・

537:デフォルトの名無しさん
22/01/07 13:00:57.38 y6x0s+uzd.net
>>528
ベースクラスの変数に入れることはなんの問題もないけど逆の操作派生クラスに戻せなくなる
C++でもそうだけどnewされた時の型をベースクラスが覚えておかないとvirtualとかasが使えない

538:デフォルトの名無しさん
22/01/07 13:01:07.20 6zNCaZbD0.net
返答ありがとうございます。
>>501
>>逆に参照型じゃないならどうする?
c++ではクラスは参照型ではないですよね?
c#では構造体は参照型ではないですよね?
>>502
>> C# クラス 参照型
>> でググれば一番上にお前が望んでいる答えがあるぞ
配列が参照型なのを考慮すると、高速化・・・・
いや、そのサイト見てると高速化よりも
ポインタを無理やり追い出した弊害に思えてきました・・

539:デフォルトの名無しさん
22/01/07 13:03:35.17 qow9t6Ky0.net
c++に参照あるのに

540:デフォルトの名無しさん
22/01/07 13:03:54.16 y6x0s+uzd.net
>>528
型ってのはコンパイル時に大きさ(byte数と配置)が決まってないといけないという縛りがCのときからある
長さがいくつになるか分からんstringは参照型にするしかない

541:デフォルトの名無しさん
22/01/07 13:06:18.93 qow9t6Ky0.net
クラスや構造体の中にポインタもって動的にメモリを確保するだけである。型のサイズは変わらない。

542:デフォルトの名無しさん
22/01/07 13:08:54.79 6zNCaZbD0.net
>>529
>>C++でもそうだけど
まことに申し訳ないけど、何を言いたいのか全く理解できません。
クラスが値型のC++でも通用する話を出してきても???と思うんですが

543:デフォルトの名無しさん
22/01/07 13:09:35.44 IAj8vN+S0.net
>>530
生のポインタだとオブジェクトを移動して断片化したメモリの整理が出来ない

544:デフォルトの名無しさん
22/01/07 13:12:31.36 6zNCaZbD0.net
>>532
それだとクラスは値型でOKという話になっちゃいます。

545:デフォルトの名無しさん
22/01/07 13:17:33.66 6zNCaZbD0.net
>>535
ひょっとして私根本的な所を理解していないのかな?
class clsA { class clsB { class clsC { xxx }}}
みたいなクラスの内部にクラスを含んだクラスであっても
GCでガンガン割り当てられているメモリアドレスを
動かされると言いたいのでしょうか??

546:デフォルトの名無しさん
22/01/07 13:18:48.25 qow9t6Ky0.net
で参照の何を議論してるんだ?
c#のクラスが参照型なのが許せない!!って言いたいのか? キミがそういうのならそうだろう。キミの中ではな。

547:デフォルトの名無しさん
22/01/07 13:26:11.81 FRwoYiaWM.net
参照のほうが便利だからじゃね?

548:デフォルトの名無しさん
22/01/07 13:28:12.36 6zNCaZbD0.net
>>538
>> c#のクラスが参照型なのが許せない!!って言いたいのか?
質問を読んでそういう理解なのでしょうか?
質問を読まずにそういう理解なのでしょうか?

549:デフォルトの名無しさん
22/01/07 13:34:18.44 qow9t6Ky0.net
>>540
誰が質問をしたかすら知らないが、質問を質問で返す。つまりそれは構ってちゃんだ。

550:デフォルトの名無しさん
22/01/07 13:45:30.30 BJs69ghP0.net
流れを読まず、適当なところに突っかかる
つまりそれは荒らしだ

551:デフォルトの名無しさん
22/01/07 13:51:09.32 qow9t6Ky0.net
話題が分散しすぎて流れが分からないから聞いただけなのに酷い言い掛かりだ。
C#のクラスがなぜ参照型かだって?
C#は関係ないよ。.net側の仕様だから。vb.netでも同じ。で終わりの話。

552:デフォルトの名無しさん
22/01/07 13:54:19.71 FRwoYiaWM.net
>>543
その仕様をなぜ決めたかを聞いているんでしょ
こんなところで

553:デフォルトの名無しさん
22/01/07 14:01:57.02 IAj8vN+S0.net
>>537
そう頻繁では無いにしろ移動されない保証は無いね

554:デフォルトの名無しさん
22/01/07 14:24:42.02 qow9t6Ky0.net
>>544
え? コピーのコストが違うから分けたという単純な話だが。
Cだって配列のコピーは重いから引数で参照渡しされるだろう?

555:デフォルトの名無しさん
22/01/07 14:55:19.17 FRwoYiaWM.net
だからみんな単純な回答してるじゃん
あ、俺はどちてぼうやじゃないよ

556:デフォルトの名無しさん
22/01/07 15:17:14.00 6zNCaZbD0.net
>>546
>> コピーのコストが違うから分けたという単純な話
確かにそんな感じですね。
クラスが値型のc++が遅くて
クラスが参照型のc#が早いなんて
全く聞いたことないのですが、
MSがトチ狂って高速化を優先(それ以外を犠牲)したようですね。

557:デフォルトの名無しさん
22/01/07 15:54:45.54 FRwoYiaWM.net
トチ狂っててワロタ

558:デフォルトの名無しさん
22/01/07 16:20:24.15 EZdfrZXhM.net
>>548
C++ は値型のクラスを作れるけどそれをそのま他の関数に渡すなんてことはほぼやらんぞ
そもそもCでも構造体をそのまま渡したらコピーされるからコピーコストを言うなら参照型にしてるだろ
要はC/C++はそういう制御もプログラマに開放してるがC#は開放してない(コピーはそれなりのメソッドを呼び出す)ってだけの話

559:デフォルトの名無しさん
22/01/07 17:18:23.04 0zyZKkps0.net
牛乳飲んで落ち着いて

560:デフォルトの名無しさん
22/01/07 17:50:23.82 7Nc+xMj80.net
>C++ は値型のクラスを作れるけど
なんかもう、松永パソコン大先生みたいな話だな

561:デフォルトの名無しさん
22/01/07 18:17:48.54 EoqFVcXVr.net
割りきればいいものを、どうでもよく無駄にこだわるやついるよな

562:デフォルトの名無しさん
22/01/07 19:02:16.87 NAsC2Vwba.net
>>528
正直C++よく知らんので調べてみたけど、だから↓にあるような「問題」があるわけだよね
URLリンク(www.cloverfield.co.jp)
だから他の人が指摘しているstringのようなケースを無視するとしても、
値型で無理に継承を実現しようとすると、
(1) >>509に書いたように多態を諦めるか
(2) メモリ効率を犠牲にして、ベースクラスの変数のメモリ上のサイズは全ての派生クラスの
「共用体」のサイズとする。当然全ての型はinternalとして定義する必要もある。
こういうありがたくない制約が出来ちゃうでしょ

563:デフォルトの名無しさん
22/01/07 19:37:25.76 6zNCaZbD0.net
>>546 >>Cだって配列のコピーは重いから引数で参照渡しされるだろう? つ【std::vectorは参照ではない】



565:デフォルトの名無しさん
22/01/07 19:39:06.67 46kMC38t0.net
Unityの座標系って左下起点がデフォなの?
WindowsのGUIとのやり取りが凄い大変なんだけどなぜこういう仕様になってるのか教えてもらいたい

566:デフォルトの名無しさん
22/01/07 19:41:19.72 6zNCaZbD0.net
>>554
>> 正直C++よく知らんので調べてみたけど、だから↓にあるような「問題」があるわけだよね
菱形継承はいろいろと問題あるからね。菱形継承問題でググってみな
それにc#は多重継承できないからね・・・

567:デフォルトの名無しさん
22/01/07 19:42:11.75 46kMC38t0.net
>>555
push_backでコピーorムーブが発生するってことを言いたいん?
そのコピーコストを無視できないくらい大きなもの扱ってるときは正にC#の参照型Listのようにポインタ型のvectorを作るか、resize+インデクサアクセスで直埋め込みするじゃん

568:デフォルトの名無しさん
22/01/07 19:44:39.54 6zNCaZbD0.net
>>554
>> ベースクラスの変数のメモリ上のサイズは
いや、ベースクラスの変数のメモリ上のサイズは
ベースクラスが持っている変数のメモリ上のサイズの合計
(パディング考慮)でしょうが・・・

569:デフォルトの名無しさん
22/01/07 19:46:03.22 NAsC2Vwba.net
>>556
Unity知らんけど、印刷考えなきゃ最初から普通のデカルト座標採用してくれた方が
自然ではあるね。
むしろCRTなんていう前世紀の遺物の仕様をいまだに引きずってる方が「なぜ」のような気が

570:デフォルトの名無しさん
22/01/07 19:47:36.10 NAsC2Vwba.net
>>559
だから、そうだとしてそれにフィールドを追加した派生クラスの値を入れられるんですかと

571:デフォルトの名無しさん
22/01/07 19:48:35.26 6zNCaZbD0.net
>>558
引数で参照渡しされるだろう?
と言ってるので『std::vectorを引数にする時は参照渡しではない』という意味で言ってるが

572:デフォルトの名無しさん
22/01/07 19:54:08.11 46kMC38t0.net
>>562
C/C++には参照型も糞なく全部値型だからvectorそのままだと当然値渡しになるから言葉そのまま受け取ればそういうことになるけど
std::vectorって配列へのポインタを持ってるだけだから疑似参照型みたいなもんってことを言いたいんだろ
sizeof(std::vector<T>)のTが何であろうと固定で16byteくらいだし

573:デフォルトの名無しさん
22/01/07 19:54:17.18 6zNCaZbD0.net
>>561
つまり『ポインタを無理やり追い出した弊害に』だよなぁ

574:デフォルトの名無しさん
22/01/07 19:58:27.54 46kMC38t0.net
>>560
WindowsGUIの方がレアだったのか
C#でもSIMD命令呼べるようになったから_mm_add_psとかで一気にやりたいのにxとyで加算減算分けないといけないから出来ないのが�


575:c念すぎる



576:デフォルトの名無しさん
22/01/07 20:02:45.79 qow9t6Ky0.net
>>555
それC++やないか。しかもそれはC++でも配列やない、classや。
しかもC++はclassの参照渡しできるねん。

577:デフォルトの名無しさん
22/01/07 20:49:57.04 NAsC2Vwba.net
>>564
いや何でそうなるw
意味が分からん。
問題設定は「なぜクラスの変数はポインタなのか?」
だからポインタを使わないとどうなるかを示しているわけで、
実際はC#はポインタを追放なんかしてないよ

578:デフォルトの名無しさん
22/01/07 20:56:58.30 0Qlm+FNra.net
他人の話を聞かないタイプだから相手するだけ無駄よ
相手するならMSはトチ狂ってるってのに同意する方向じゃないと

579:デフォルトの名無しさん
22/01/07 21:12:41.39 qow9t6Ky0.net
だから.netの仕様だと。
言葉を借りるならポインタを追い出したのが値型だ。値型と参照型の機能の違いを仕様書で確認しなさい。
つまるところガベジコレクションからの分離。値型はスタックに乗せれる。確保も開放も高速。
つまり型が分からなくてもスルーできる奴は元から何も考えてないということだ。

580:デフォルトの名無しさん
22/01/08 00:48:49.28 T5N54j6i0.net
手動でメモリ確保して解放すんのめんどくせぇなぁって流れから、
全自動でメモリ確保と解放するC#が生まれたってだけの話じゃないの?

581:デフォルトの名無しさん
22/01/08 01:01:47.02 PQBT4Nc/0.net
>>570
Delphiを知らない馬鹿

582:デフォルトの名無しさん
22/01/08 01:03:56.61 IGpBQzM50.net
その後10時間もマウンティングゴリラしてたのかw


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