15/12/16 15:44:16.48 yfneKelH.net
>>270
AddHandler だね、VBでは。
いちいち += しないといけないのも微妙に不便だし
いったん書いたイベントコードを削除するとき、 += の部分もセットで手で消さないといけない。
フォーム側でイベント作ったときは、+= があっち側のコードにあるし
277:デフォルトの名無しさん
15/12/16 15:52:22.24 s50ZsdUA.net
>>273
new入れたら候補出るだろ
嫌ならvar使え
278:デフォルトの名無しさん
15/12/16 17:53:38.00 ++aKhWi5.net
C#6.0 が出てることを今知った
プロパティ周りが改善されてるっぽくて期待
あとはメモリ管理(特に Bitmap のリソースリーク(?))と
64bit 版でポトペタできるようになることと
CLI 上で動くスクリプト言語が充実してくれればいうことはない
どうでもいいけど C++ と簡単に連携できるスクリプト言語を教えておくれ
正規表現/文字列処理とかファイル処理がちょっとしんどい
かと言って python や ruby だとちょっと規模が大きい
scheme 系はそれそのもので使うのはいいけど
組み込みだとシンタックスが違いすぎて�
279:癢a感がある
280:276
15/12/16 17:56:57.27 ++aKhWi5.net
あばばスレ違いだった
>>276 の下半分は無視してください
281:デフォルトの名無しさん
15/12/16 17:57:57.55 Aaq31spz.net
C#はマルチロールな言語だから、特定のフレームワークやIDEに強く依存するような機能は控えられてるんだよ
今や主力は完全にASP.NETに移ってるし
282:デフォルトの名無しさん
15/12/16 21:27:02.80 B4+Sd+fc.net
嫌ならVB使えよ
いや、ドカタそんな権限は無かったな
失礼した
283:デフォルトの名無しさん
15/12/16 21:31:06.49 sgXyEvFI.net
>>273
ただの慣れと知識不足だな
素早く書きたければReSharperでもいれとけ
284:デフォルトの名無しさん
15/12/16 21:48:22.50 6hxUKU2I.net
WithEvents Handlesはいいよね
C#にも同等の構文を導入すべきだ
285:デフォルトの名無しさん
15/12/16 22:07:18.91 yEzHguVk.net
つーかVBってそれだけだよな
286:デフォルトの名無しさん
15/12/16 22:15:49.12 D+5z8iwV.net
職場で皆VS使っているはずなのにvarは好ましくないと言われるんだが、テキストエディタからでも見ているんだろうか
287:デフォルトの名無しさん
15/12/16 22:46:15.22 GLEYjupT.net
運悪くjavaやってるけどvar使えないのがストレス溜まる
Handlesは参照検索に引っかからないのがちょっと不便
288:デフォルトの名無しさん
15/12/17 01:20:42.25 uAOfrDRi.net
Handelsはオブジェクト名変更のリファクタかけたときにメソッド名が追従しないからめんどい
289:デフォルトの名無しさん
15/12/17 08:19:30.62 wWt+W3PI.net
>>283
IT業界では開発の現場は最先端のプラクティスから10~15年遅れるって研究がどっかにあった
varが推奨されだしてから何年たったかな
そのうち普及するでしょ
290:デフォルトの名無しさん
15/12/17 08:20:16.53 zuQvdIGp.net
eclipseが使いにく過ぎ
インテリセンスうんこ
291:デフォルトの名無しさん
15/12/17 08:36:44.13 IGH7+3HM.net
>>281
With ~ End With も VB便利
292:デフォルトの名無しさん
15/12/17 09:12:26.24 wazgEvjt.net
varは使ってみると合理的だよね
そもそも型の確認は、宣言見るか右の式見て確認するかなんだから、宣言も右見て確認するのは違和感ないし。
現場で使える自分は幸運か
293:デフォルトの名無しさん
15/12/17 09:44:23.39 RxywOKqd.net
宣言システムやめてほしい
コード上じゃなく、プロパティで設定させればいいだろ
294:デフォルトの名無しさん
15/12/17 10:08:20.34 1RX3gDoP.net
C# 風の文法で native binary を吐くらしい Vala がちょっと気になる
使ってみた人いる?
295:デフォルトの名無しさん
15/12/17 11:18:29.88 YaXbQbPq.net
Goでいいだろそんなもん
296:デフォルトの名無しさん
15/12/17 12:12:58.46 VaFnwyV1.net
>>288
それはないわ
297:デフォルトの名無しさん
15/12/17 23:00:07.56 uAOfrDRi.net
>>288
Withはコードを横長にしたくないときに
一時オブジェクト作らないで出来るからほかの言語にも入れてほしい
298:デフォルトの名無しさん
15/12/17 23:44:00.53 nE3SkfcG.net
withは検討の結果「要望が少ない」ということで却下された経緯がある
つまりお前はマイノリティ
299:デフォルトの名無しさん
15/12/17 23:45:34.55 wKzIyU7U.net
まるでマイノリティが悪いみたいな物言いだな
300:デフォルトの名無しさん
15/12/17 23:48:28.58 dKLnlHXg.net
C++からの流れではあるが、際限なく長い名前が良しとされていたからな
あのノリは未だについていけない
301:デフォルトの名無しさん
15/12/17 23:49:49.06 S8YW+Ehf.net
略しまくったのよりは、意味が分かる名前のがいいなぁ
あとはセンスっていういやーな言葉になるが
302:デフォルトの名無しさん
15/12/17 23:51:46.87 i1r3U0+U.net
>>297
つってもメジャーなスクリプト言語にもwithなんか無いからな
JavaScriptにはあるけど完全に黒歴史扱いでほとんど使われてないし
303:デフォルトの名無しさん
15/12/17 23:55:41.04 8YX8F0Hj.net
ブロックで囲むのめんどいから
withはインテントで頼む
304:デフォルトの名無しさん
15/12/18 00:17:25.15 GSoM/4PI.net
>>297
> C++からの流れではあるが、際限なく長い名前が良しとされていたからな
なのにimportしまくって、どのオブジェクトの派生なのか分からなくなるんだよな
305:デフォルトの名無しさん
15/12/18 07:49:51.32 Pn8g8BvN.net
コンテキストを理解してればそんな長い名前にならないよ
306:デフォルトの名無しさん
15/12/18 09:42:03.30 sT9ZaHDR.net
馬鹿は一つ覚えで限度を知らないからな
307:デフォルトの名無しさん
15/12/18 19:43:35.84 aPFZSVCF.net
MVCの勉強してから
WebFormやると、コントロールのvisibleやenableみたいなプロパティを一つ一つ弄るのが面倒で
なるべくもModelをバインドするような作りにしようとしてますが、後々まずくなったりしますかね?
308:デフォルトの名無しさん
15/12/18 22:09:04.97 gk961EIG.net
先生、質問がございます。
小粒なクラスを200万個近くインスタンス化するシチュエーションで途中でgc.collectが走ってしまい400msほどビクンビクンしてしまうんですが、俺がいいと言うまでgcするな命令みたいなものってあります?
309:デフォルトの名無しさん
15/12/18 22:19:36.70 4VAnTop2.net
先にやっとくとか。
それでもなるのはしょうがないかも
310:デフォルトの名無しさん
15/12/18 22:30:19.05 gk961EIG.net
ありがとうございます。先に作ってインスタンスをプールしとく感じですか。
試してみます!
311:デフォルトの名無しさん
15/12/18 22:37:13.38 bT2qV2qZ.net
光る砂漠でロール~
312:デフォルトの名無しさん
15/12/18 23:16:54.63 XVLPEWds.net
プログラマはMacを使ってるってマジ?
スレリンク(news板)
313:デフォルトの名無しさん
15/12/18 23:19:27.65 bkeqB6RS.net
今の現場がMacだわ
最初は勘弁してくれと思ってたけど、慣れると割と使いやすい
まあWindowsも使いやすいけど
Macが特別使いにくいってことはなかった
314:デフォルトの名無しさん
15/12/19 00:20:11.15 y4ZISOlF.net
マルチポストにマジレスするカス
315:デフォルトの名無しさん
15/12/19 00:27:23.99 xp+k7OcH.net
× マルチポスト
○ コピペマン
316:デフォルトの名無しさん
15/12/21 16:49:42.01 kS2EmNXf.net
程よい規模のMVCのサンプルプロジェクトなにかありませんかね?
実際に自分で作ってると
複雑なモデルのバインドパターンとか色々でてきて、ネットにもあまり載ってないパターンもでてくるので...
317:デフォルトの名無しさん
15/12/21 16:55:44.27 U3hF6CjN.net
>>313
RailsのOSSプロジェクトとか読めばいい
318:デフォルトの名無しさん
15/12/21 19:38:07.95 N+jvPVY9.net
>>314
それはasp.net MVCですか?
MVCのアーキテクチャを勉強したいのではなくて、asp.net MVでつくられたシステムが見たいです。
サンプルに出てるのって、本当に単純なCRUDシステムしかなくて、困ってます
319:デフォルトの名無しさん
15/12/21 19:58:44.97 xw4vh+oL.net
わかったわかった
そのくせえ頭ごと腐り落ちて死ね
320:デフォルトの名無しさん
15/12/21 20:36:13.74 kS2EmNXf.net
>>316
チンパンジーはお呼びでない
321:デフォルトの名無しさん
15/12/21 21:05:31.92 bPnNcr23.net
>>315
いや、Webってマジでそれだけなんだよ
パラメータを元にDBへクエリ投げる→結果が返ってくる→結果を元に画面を作る
終わり
大きなシステムはただ単に画面の数やクエリの数が多いだけ
322:デフォルトの名無しさん
15/12/21 21:07:13.47 gVgBUI5g.net
何言ってんだこいつ
323:デフォルトの名無しさん
15/12/21 21:29:26.05 XlnWv6G/.net
ストレートに言えば「失せろ」だろ
324:デフォルトの名無しさん
15/12/21 21:35:04.56 U3hF6CjN.net
初心者はフレームワークに惑わされがちだけど、Webってマジで>>318で全てなんだよな
ORMだのバインディングだのというのはユーティリティに過ぎない
そこを理解してないなら最初はNode.jsみたいなシンプルなのから入ったほうがいい
325:デフォルトの名無しさん
15/12/21 21:56:36.37 kS2EmNXf.net
name属性使ってバインディングされるとか、.NETMVC特有のものじゃん
複雑なモデル構造のリストとかになると、TextForでなくTextBoxヘルパー使ってname属性にlist[0].のような文字列付けたりとか
そういうフレームワーク独自のものが色々あるでしょう
326:デフォルトの名無しさん
15/12/21 22:08:30.44 kS2EmNXf.net
>>318
その、パラメーターを受け取るって一言で片付けてるけど
.net MVCなら
viewbagやtempdataやmodelがありますよね?
modelだって複雑な場合はカスタムバインダー使わないといけないし
327:デフォルトの名無しさん
15/12/21 22:08:34.68 AKR6rQ1b.net
HTTPはTCP上の、TCPはIPの上のプロトコルに過ぎない、からといって
IPだけ理解してりゃいいってわけじゃないわな。
328:デフォルトの名無しさん
15/12/21 22:20:56.47 kS2EmNXf.net
>>321
webの仕組みが単純なのを分かってるからって.net MVCが分かるというわけにはならないでしょ?
webの仕組みを包み込んで、関心ごとの分離やテスタビリティを高めるためにフレームワークを使うのであって
そのフレームワーク自体のことを学ぶためには、本読んだり実際のコードを沢山読むじゃん。
MVCの概念を学ぶなら他のフレームワークでもいいけど、その先は独自のフレームワーク学ぶしかないでしょ。
329:デフォルトの名無しさん
15/12/21 22:21:29.08 LGmH8Vm3.net
ViewBag=低能の証
330:デフォルトの名無しさん
15/12/21 22:33:39.02 u9+EAVY3.net
>>325
MVC固有のことはこっちで訊いた方が良いのでは。
ASP.NET MVC
スレリンク(php板)
331:デフォルトの名無しさん
15/12/21 23:30:21.24 v4VU6uUx.net
何ですか?厄介払いしようってんですか?
332:デフォルトの名無しさん
15/12/22 01:57:02.79 PrFisxRg.net
ここより適した場所があるってだけ。
若干スレ違いなここで訊いてもまともな返答は期待できないよ。
333:デフォルトの名無しさん
15/12/22 02:05:42.41 EpD71riO.net
private void timer1_Tick(object sender, EventArgs e)
{
i++;
string url = "URLリンク(tamae.2ch.net)
System.Net.WebClient wc = new System.Net.WebClient();
wc.Headers.Add("Accept", "text/html, application/xhtml+xml");
wc.Headers.Add("Referer", "スレリンク(ana板)");
wc.Headers.Add("Accept-Language", "ja-JP");
wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko");
wc.Headers.Add("Accept-Encoding", "gzip, deflate");
wc.Headers.Add("Host", "tamae.2ch.net");
wc.Headers.Add("Pragma", "no-cache");
wc.Headers.Add("Cookie", "NAME=\"\"; MAIL=\"\"; __cfduid=000217b92175216f95382b146abc764221450557291; yuki=akari; PREN=%83%89%83C%83u%81E%83A%83i%81%5b%83L%81%5b%82%b3%82%f1");
//NameValueCollectionの作成
System.Collections.Specialized.NameValueCollection ps = new System.Collections.Specialized.NameValueCollection();
//送信するデータ(フィールド名と値の組み合わせ)を追加
ps.Add("submit", "a");
ps.Add("MESSAGE", System.
334:Web.Security.Membership.GeneratePassword(128, 0)); ps.Add("bbs", "ana"); ps.Add("key", "1450521890"); ps.Add("submit", "a"); ps.Add("mail", "age"); ps.Add("time", "1450616060"); //データを送信し、また受信する byte[] resData = wc.UploadValues(url, ps); wc.Dispose(); //受信したデータを表示する string resText = System.Text.Encoding.GetEncoding("Shift-JIS").GetString(resData); Console.WriteLine(resText); }
335:デフォルトの名無しさん
15/12/22 02:07:07.58 EpD71riO.net
↑これで2chに書き込めるんだけど
レスポンスをコマンドラインに表示したいけど?とか・とかにしかならないんですけどなぜですか?
336:デフォルトの名無しさん
15/12/22 04:36:56.37 U2GagDf5.net
WebはUTF-8で、コマンドラインはShift-jis系のCP932
337:デフォルトの名無しさん
15/12/22 04:46:34.78 EpD71riO.net
>>332
string resText = System.Text.Encoding.GetEncoding("Shift-JIS").GetString(resData);
とところでconvertですか?
338:デフォルトの名無しさん
15/12/23 01:35:40.37 mLLLpett.net
最近 Visual Studio Standard Collector Service とかいうサービスプロセスが馬鹿みたいにメモリー浪費してくれるんだけど
何か変なアップデートあったっけ?
これ、何をしてるんだろうな
339:デフォルトの名無しさん
15/12/23 11:18:14.36 Ouk9W9pK.net
>>334
ツール - オプション - デバッグ - 全般 の下の方にある
「デバッグ中に診断ツールを有効にします」のチェックの有無が影響するみたい。
診断ツールが何だかは知らない
340:デフォルトの名無しさん
15/12/23 11:19:46.70 Ouk9W9pK.net
まあでもデバッグ走らせると出るCPUのグラフとかじゃないかな
341:デフォルトの名無しさん
15/12/23 11:41:52.67 JaeaaX8T.net
デバッグビルドしたのにデバッガで変数ウォッチできない事が時々あるんだけど何故なの
最適化はされてないしデバッグ情報はフルで付いてる
もちろんソースコードはビルドに使用したものと同じファイル
342:デフォルトの名無しさん
15/12/23 11:44:18.71 uP6j/Iq7.net
匿名ラムダの中だったりするんだろ
343:デフォルトの名無しさん
15/12/23 11:45:17.66 sUZCBNnf.net
お前が変数の中身を知らないとデバッグできないように、
俺たちはお前のコードやプロジェクトの設定を知らないと何も解決できない
344:デフォルトの名無しさん
15/12/23 11:47:29.06 DcpaLEXp.net
メインフォームとは別に定期的に関数を実行をさせたい場合、
各種TimerやBackgoundworkerより、Taskとasynk/awaitがいいのかな?
345:デフォルトの名無しさん
15/12/23 12:43:20.12 9lRKIrWz.net
スレタイのC#のパターン対策ww
346:デフォルトの名無しさん
15/12/23 12:47:01.78 ZolTmMoK.net
>>340
System.Timers.Timerでいいよ
Taskは単発の処理に使うもので、Task使うならタイマから毎回起動させるのが筋
347:デフォルトの名無しさん
15/12/23 13:01:08.67 ZZxQfTix.net
>>342
TaskCreationOptions.LongRunningってのもあるし、単発処理に限らないのでは。
このオプション指定するとスレッドプールとは別の専用スレッドが作成されるから、別スレッドを作ってるのと同じ。
348:デフォルトの名無しさん
15/12/23 13:39:15.27 ZZxQfTix.net
>>305
.Net4.6からの機能だけど、GC.TryStartNoGCRegionとEndNoGCRegionは使えないかな
349:デフォルトの名無しさん
15/12/23 14:00:39.69 DcpaLEXp.net
>>342
ありがとうございます
System.Timers.Timerでキッチリ回して、
その中からTaskを使って別スレッドで動かすのが安定そうですね
>>343
LongRunningは知らなかったですが、こちらも使いこなせば安定して動きそうですね
勉強して比較してみます
350:デフォルトの名無しさん
15/12/23 17:59:55.08 +gIeTCQg.net
システムで使うメッセージを外部リソースで管理するとして
メッセージを管理するMessageクラスはstaticで、インスタンス生成の時に外部リソースからメッセージリストを読み込む
みたいな作りって悪いでしょうか?
351:デフォルトの名無しさん
15/12/23 18:05:10.56 fiBTvI7H.net
C#のstatic classはインスタンス化できないのにインスタンス生成もくそもないだろ
それともstatic constructorのことを指してるか?
352:デフォルトの名無しさん
15/12/23 18:17:23.15 +gIeTCQg.net
>>347
static コンストラクタです。
間違えました
353:デフォルトの名無しさん
15/12/23 18:26:36.74 BrzFNCu8.net
使い終わった後もずっとプロセスに居座ってメモリやシステムリソースを圧迫するからリソースをstaticにはしない
354:デフォルトの名無しさん
15/12/23 18:40:10.66 YaELbVXU.net
メッセージとかならプロセス生きてる間は使う可能性があるからいいんじゃね
355:デフォルトの名無しさん
15/12/23 18:40:14.14 FrDQkBPX.net
Messageクラスに依存してるクラスは単体テストが困難になるけど、それでもよければ
356:デフォルトの名無しさん
15/12/23 18:40:24.41 F7FK9/Ld.net
ctor でリソースの生成/破棄まで行う(行える)なら問題はない
xml ファイルを読み込んでパースまでしてしまう(もちろんファイルは close する)とか
メモリ圧迫を理由にするのは…… まあアプリケーションの仕様によると思う
357:デフォルトの名無しさん
15/12/23 19:05:42.55 BrzFNCu8.net
メモリだけじゃなくGCにも悪影響
サーバーでは避けたほうが良いね
358:デフォルトの名無しさん
15/12/23 21:38:31.09 +gIeTCQg.net
逆にメッセージの管理はどうやるのが理想ですか?
359:デフォルトの名無しさん
15/12/23 22:04:33.08 w6yNQewc.net
普通にVSで編集できるリソースでいいでしょ。
あえて自前で用意する必要があるの?
文字列ぐらいでメモリだのリソースだのっていつの時代だよw
80年代かよw
今は2015年だよw
360:デフォルトの名無しさん
15/12/23 22:11:50.15 fiBTvI7H.net
球形の牛の逆みたいな話になってるな
361:デフォルトの名無しさん
15/12/24 02:05:35.25 ta6MMntY.net
メッセージって単なる表示する文字列の話なのか?
362:デフォルトの名無しさん
15/12/24 08:35:04.97 KQkP520X.net
マルチリンガル対応じゃね?
363:デフォルトの名無しさん
15/12/24 09:19:44.01 NEwYqcPU.net
そんなもんサテライトアセンブリでいい
364:デフォルトの名無しさん
15/12/24 10:14:50.05 6sd2Vm8U.net
月は出ているか
365:デフォルトの名無しさん
15/12/24 10:56:47.42 844ZWqQO.net
フィールド宣言のコメントにおいて
/// <summary>
/// テストフィールド
/// </summary>
private int tes;
と
/// <summary>テストフィールド</summary>
private int tes;
はどっちの書き方にするのがいいですか?
366:デフォルトの名無しさん
15/12/24 11:03:55.90 1wWNjS7A.net
>>361
VSのデフォルトは上だから何も気にして無かったわ
下は2行書くとき面倒そう
367:デフォルトの名無しさん
15/12/24 11:24:50.32 844ZWqQO.net
上の書き方にするとコメントごときに行数を取られすぎる、下ので書けと言われました
でも下の形式にするにはデフォルトからわざわざ形を変えないといけないので
正直、超面倒臭いです
368:デフォルトの名無しさん
15/12/24 11:49:07.88 gvn2o1E3.net
コードスニペット作ればいい
369:デフォルトの名無しさん
15/12/24 12:33:53.44 tTrPmLEb.net
>>363
自分は上の書き方だなぁ
デフォルトだし
"コメントごときに"超めんどくさいことする必要ないんでない?
もし言ってる人が簡単にその書き方できる方法知ってるんだったら
教えてもらえば?
370:デフォルトの名無しさん
15/12/24 13:07:21.60 ZIvzfH3j.net
VSだと書いても折りたたんじゃうからな
371:デフォルトの名無しさん
15/12/24 14:45:51.48 OvoDVxQ7.net
コメントは沢山書くほうが正義とされているけど、本当は程度問題だよな
とは言えなかなかソレで押しきれない
372:デフォルトの名無しさん
15/12/24 14:57:09.77 dcUdhHTO.net
var helloMsgText = manager.GetText(ResourceId.Hello);
var helloMsgText = manager.GetTextHello();
みんな上のように書くけど別に下でよくね?
373:デフォルトの名無しさん
15/12/24 16:24:50.35 logTvbmn.net
vbのコードをc#に完全な形で変換してくれるツールもしくはサイトない?
374:デフォルトの名無しさん
15/12/24 17:21:54.23 Y8pSRiNc.net
>>369
ILSpy
375:デフォルトの名無しさん
15/12/24 19:34:20.26 eIL8ov29.net
リソースでメッセージ等の文字列を管理する場合、クライアント側のみの処理で表示するようなメッセージはどう管理します?
リソースをJSONに変換して返すWebServiceを作って
ajaxでメッセージ取得して表示する感じでしょうか?
376:デフォルトの名無しさん
15/12/24 19:40:09.79 7/G2aj/P.net
無駄に複雑にして工数を増やしたい病気でも患っているのか?
377:デフォルトの名無しさん
15/12/24 19:47:53.79 1wWNjS7A.net
>>368
GetTextByeとかGetTextHogeとか増えていくの?
それはなんだか・・・
378:デフォルトの名無しさん
15/12/24 19:57:28.37 h3yCwgPm.net
>>373
VSが自動生成するマネージドリソースにアクセスするコード(Properties)も>>368方式。
もっともあっちは静的クラスのプロパティだけど。
379:デフォルトの名無しさん
15/12/24 21:40:23.96 Y8pSRiNc.net
>>371
クライアントを更新するときに一緒に更新すればいいだろ
それともお前のアプリはクライアントの機能の更新がないのにメッセージばかり頻繁に更新するトチ狂ったアプリなのか?
380:デフォルトの名無しさん
15/12/24 21:50:39.61 S0+P+Hy7.net
そもそもこういうリソースって一括管理するものなのか
特定の画面だけで使うメッセージを集めて一括管理って逆にわかりにくいだろ
ある画面で使うリソースを1つのまとまりで管理
別の画面で使うリソースはまた別のまとまりで管理
としたほうがわかりやすいし実行時のコスパも良い
381:デフォルトの名無しさん
15/12/25 00:49:48.26 Nwjnyecm.net
>>376
とにかくメッセージは一括管理しろって要求みたいなんですよ。
クライアント側での入力チェック等のメッセージまで管理となると、どういう方法がよいのかと気になったので
382:デフォルトの名無しさん
15/12/25 01:00:42.04 wX928DHg.net
だったらメッセージ専用のDLLを作って共有すればいい
383:デフォルトの名無しさん
15/12/25 01:02:54.78 Nwjnyecm.net
すみません、クライアント側というのはWebシステムの話です。
384:デフォルトの名無しさん
15/12/25 01:19:15.30 GzgJ+pjK.net
//と///の違いってなんですの?
385:デフォルトの名無しさん
15/12/25 01:39:40.53 jYPgyGYg.net
ラッスンゴレライ
386:デフォルトの名無しさん
15/12/25 04:39:44.37 +55nFQ10.net
質問です。
「リファレンス(参照渡し)の引数を持つデリゲート」を引数とする、関数を作ろうとしています。
──────────
public void Hoge(Action<string, out string> funcA) {
string paramA = "auau";
funcA("hoge", paramA);
Debug.Log(paramA);
}
Hoge(
(param1, param2) => {
param2 = param1 + param2;
}
);
> paramA = hogeauau
──────────
こんな感じの事がしたいのですが、エラーとなってしまいます。
MSDNを見ると下記のような記載があるのですが、実現方法はないのでしょうか。
> ラムダ式は、外側のメソッドの ref パラメーターまたは out パラメーターを直接取り込むことはできません。
387:デフォルトの名無しさん
15/12/25 07:39:53.30 wX928DHg.net
>>382
いや実引数やパラメータにout付けてないからエラーになってるだけだろ
MSDNのその記述は関係ないはず
388:デフォルトの名無しさん
15/12/25 08:23:39.99 G7nDvP8n.net
一括管理したことあるよ。
一部置き換えすれば全体で使える。
クラス作った。
389:デフォルトの名無しさん
15/12/25 08:33:24.90 hK6V4eA3.net
別に一括管理するだけならソースコード生成すればいいのに
頭堅いんだあ
390:デフォルトの名無しさん
15/12/25 14:27:59.27 ojJ97SJR.net
>>382
ジェネリック型引数にrefや(参照渡しの意味での)outはつけられない。
そのためAction<T>が使えないので、delegate型自体を自分で定義する必要がある。
391:デフォルトの名無しさん
15/12/25 21:08:27.60 +55nFQ10.net
>>386
遅くなりましたが、ありがとうございます!
以下で動くことが確認できました。
─────
// デリゲート準備
public delegate void RequestCallback(string wwwText, out string resultJson);
public void RequestReal(string wwwText, out string resultJson)
{
resultJson = "{ \"content\" : \"" + wwwText + "\" }";
}
// 使用先関数
public void Hoge(RequestCallback funcA, out string outStr)
{
string apiResult = "seikou sita kigasuru";
funcA(apiResult, out outStr);
}
// 呼び出し
string result;
RequestCallback req = RequestReal;
Hoge(req, out result);
Debug.Log(result);
> { "content" : "seikou sita kigasuru" }
>
UnityEngine.Debug:Log(Object)
──────────
392:デフォルトの名無しさん
15/12/25 22:09:37.11 GzgJ+pjK.net
>>380
これ教えてください
393:デフォルトの名無しさん
15/12/25 22:32:21.16 wX928DHg.net
>>388
言語仕様上は//がコメント始まり、3つ目の/はコメントの文字列
ただしC#の拡張仕様で///はXMLのマークアップをソース内に記述するのに使うことが推奨されている
URLリンク(msdn.microsoft.com)
394:デフォルトの名無しさん
15/12/27 09:53:45.68 guLL/9cN.net
TcpClient使って、サーバーへの接続、切断を非同期でやりたいんですが、参考になるサイトか本を紹介してください。
395:デフォルトの名無しさん
15/12/27 13:52:24.01 ELdsNW5n.net
データベースを使いたくて入門書を買ってきたらDataSetを使ったものでした。
"DataSetはもう古い" みたいな言われ方するようですが、それなら何を覚えればいいでしょうか?
GUIとのバインディング(?)が目的です。
396:デフォルトの名無しさん
15/12/27 14:01:14.72 F6G0FzqO.net
Entity Frameworkとか?
397:デフォルトの名無しさん
15/12/27 14:05:32.63 /kKhf1RB.net
WinFormsならDataSetでいいよ
もう古いとかいうならクライアントアプリ自体もう古い
.NETでは主役はもうASP.NETにシフトしていて、.NET関連のあらゆる新技術はWebが中心になってるの
DataSetに代わるデータアクセス方法として今はEntity Frameworkがあるんだけど、
これは基本Web用でGUIにバインドしたりするのには向かない
>>390
そんなもん誰でもやってるから普通にググれ
398:デフォルトの名無しさん
15/12/27 14:11:35.14 fwIV4Uvo.net
DataSetとかEFとか詳細はどうでもいい
アーキテクチャ設計に失敗してなければどれ選んでもどんぐりの背比べだよ
399:デフォルトの名無しさん
15/12/27 14:48:38.55 isAqOdFe.net
いまだにDataReaderとCommand.Executeでシコシコ書いちゃう。
SQL Serverに100万件くらいINSERTの必要があって
パラレルForで4スレッドで回したらなぜか4倍以上の速度が出た。
ADO.NETのまとまった資料って2005の時のMS公式本くらいしかないのはなぜなんだ
400:デフォルトの名無しさん
15/12/27 15:23:48.57 Ps5R7yzw.net
すべてのDBフレームワークがそのかぶせモノになってるから進化のしようが無い。
何でかって言ったら、RDBMSをアクセスするための薄いラッパーで
ADO.NET≒RDBMSみたいなものだから。
RDBMSが変わらないと、大きく異なるライブラリは出てこないかと。
401:デフォルトの名無しさん
15/12/27 16:42:00.30 TqZTceMP.net
>>395
それbulkcopyでいいんじゃ・・・100万回INSERTとかマルチスレッドでも限界あるで
402:デフォルトの名無しさん
15/12/27 18:55:52.38 qJI8FLco.net
odp.net以外でまともにバルク処理できるDB製品あるのか
403:デフォルトの名無しさん
15/12/28 01:30:00.56 h/evoQDS.net
これの解決策ありませんか?
URLリンク(pbs.twimg.com)
URLリンク(mobile.twitter.com)
404:デフォルトの名無しさん
15/12/28 09:59:18.25 JJlxJ852.net
諦めればいい
405:デフォルトの名無しさん
15/12/29 04:40:34.90 2j1vpab9.net
C#はじめましたが
何が書いてあるのか意味がわかりません
読み始めていつ頃から脳に入ってきましたか
経験をお聞かせくさい
406:デフォルトの名無しさん
15/12/29 05:06:16.01 bJW4Eq7l.net
アタシは
C→VBA→VB→.NET→Javaの資格とる→
JSP&サーブレット→.NETに戻る
って来たから楽勝だった
407:デフォルトの名無しさん
15/12/29 07:14:16.16 XNVDRgDP.net
俺はc++とかいうクソ言語で耐性を高めてからclr via c#読んだからc#を触る前に完全にc#を理解していたよ
408:デフォルトの名無しさん
15/12/29 07:23:58.55 wJImNd8e.net
他言語やってたから割とすんなり入れたな
BASIC→C→VB→Perl、JS→Ruby→C#
BASICでは変数の扱いや基本的な命令覚えてって
Cではポインタやメモリ確保の壁にぶつかり
VBでオブジェクト指向とフォーム関連を覚え…
サンプルプログラムやりまくったりゲームプログラム打ち込んで改造したりしてたな
どれくらいかかったか覚えてないけど
409:デフォルトの名無しさん
15/12/29 08:45:37.22 kdwBJB68.net
アセンブラは居ないのか?
410:デフォルトの名無しさん
15/12/29 09:45:07.31 xDYyv4wo.net
C#から入ったけどデリゲートとか構造体とかC#特有の部分が辛かったな
最初はJavaから入ったほうが馴染みやすい
411:デフォルトの名無しさん
15/12/29 10:54:53.68 uIdyz590.net
>>406
デリケートは関数ポインタに毛が生えたもの
412:デフォルトの名無しさん
15/12/29 10:55:56.03 sfUMzRql.net
407はアスペ
413:デフォルトの名無しさん
15/12/29 11:00:46.08 r/vj9keN.net
javaから始めたけどソースコードをそのままコピペして少し弄くったら動いたから特に迷わなかったわ
414:デフォルトの名無しさん
15/12/29 11:02:47.97 FSVLMb4L.net
>>408
URLリンク(i.imgur.com)
415:デフォルトの名無しさん
15/12/29 12:10:45.06 wlSqNWOm.net
グロ貼るな
416:デフォルトの名無しさん
15/12/29 12:16:01.80 wlSqNWOm.net
デリゲートを関数ポインタっぽいものと教えるのは好ましくない
ストラテジーパターンの省略形と認識したほうが良い
417:デフォルトの名無しさん
15/12/29 12:33:47.57 DwiC5QEn.net
>>412
それは意味論的な定義(それは何であるか?)と機能主義的な定義(それは何に使えるか?)を
混同してるだけ。
定規は背中を掻くのに使えるから孫の手だ、っていう考え方はどうかね。
418:デフォルトの名無しさん
15/12/29 12:58:20.29 xUCplUf3.net
C#誕生当初は第一級関数というのがまだあまり一般的ではなく、
「関数オブジェクトはオブジェクト指向ではない」などと抜かす馬鹿も多かった
だからオブジェクト指向でその存在を正当化するために当初はインターフェイスを簡略化した概念として説明され、
名前も「委譲」というオブジェクト指向で馴染みのあるものになった
419:デフォルトの名無しさん
15/12/29 14:00:09.08 C/O8tL6v.net
>>401
コードを読む前段階の、文法の入門書の学習はしんどかったけど
そのあとは、コードを読んで全く脳に入らないってことはあまりなかった
もちろん知らないことはググったりヘルプ見たりしたけど
420:デフォルトの名無しさん
15/12/29 14:30:22.86 +K3f7QC6.net
コードを書くことでしか理解できないよね。読んだだけだとしっくりこない
421:デフォルトの名無しさん
15/12/29 15:04:31.42 tZ7ULgVX.net
いま数学のおさらいをやってるんだけど、>>416 に同意だわ。
理屈が込み入ってることをやるときは、自分で書いてみるのが一番。
その方が覚えるとかじゃなくて、自分で考えながら書いてみると、
暗算してたときには見過ごしてた理解不足な面がぼろぼろ見つかる。
422:デフォルトの名無しさん
15/12/29 17:53:08.89 AhKmKGiO.net
デリゲートは意味的にも機能的にもストラテジーだよ
423:デフォルトの名無しさん
15/12/29 18:29:58.49 6fhy+1hJ.net
StrategyでありStateでありTemplate MethodでありAbstract Factoryでもある
デザインパターンよりも抽象度が高いんだよ
オブジェクト指向の言葉で言えばその名の通り「委譲」が一番正しい
424:デフォルトの名無しさん
15/12/29 18:31:35.62 EI7d6zEo.net
URLリンク(msdn.microsoft.com)
> delegate は、指定されたメソッドまたは匿名メソッドをカプセル化するために使用される参照型です。
> デリゲートは C++ の関数ポインターに類似していますが、タイプ セーフであり、安全です。
つまり、デリゲートは型なんだね。
425:デフォルトの名無しさん
15/12/29 18:32:14.31 eW7HIrdi.net
>>419
TemplateMethodをデリゲートで置き換えようとすると結構面倒なんだよな
426:デフォルトの名無しさん
15/12/30 03:45:30.77 A4v2uAzd.net
UbuntuにMonoをインストールしたんだがFormアプリがコンパイルできない・・・
簡単なコンソールアプリならコンパイルできてちゃんと動くんだがFormはWindowsの機能使ってるからダメってこと?
FormがないC#なんてピクルス抜きのハンバーガーだぜ
427:デフォルトの名無しさん
15/12/30 04:08:11.52 qUFxM6Uk.net
GUIはOSありきなんだから諦めなさい
どのOSでも同じコードに拘るならJAVAでもやればいい
返ってC#の高機能さも分かるし
428:デフォルトの名無しさん
15/12/30 09:27:53.99 s3TIK8lI.net
Monoってどの程度まで互換性あるの
429:デフォルトの名無しさん
15/12/30 09:30:33.42 2ZE2aRQN.net
互換性は基本的に無いよ
「GUIは個別に作れ」が公式の方針らしい
430:デフォルトの名無しさん
15/12/30 09:51:04.00 Bj92UdRZ.net
Gui以外の部分はどうなの
unsafeコードとかPInvokeはダメだろうけど
DBアクセスとか問題ないのか
431:デフォルトの名無しさん
15/12/30 10:03:27.85 2ZE2aRQN.net
>>426
最初からマルチプラットフォームを前提にして両方でテストしながら作っていれば一定の互換性はある
そうでないならまず無理
432:デフォルトの名無しさん
15/12/30 10:44:40.81 eaj6QvlR.net
JavaいいよJava
433:デフォルトの名無しさん
15/12/31 12:07:22.81 Qop6kv8X.net
XNAで書いたコードはMonoGameでもほぼそのまんま動く
434:デフォルトの名無しさん
16/01/02 00:38:05.29 09vKdiwO.net
3Dの勉強しているのですが、「9時の方向に30度傾ける」という計算式はどう表すのでしょうか?
435:デフォルトの名無しさん
16/01/02 00:58:39.00 1lIm0vu3.net
Windows使っているならDirectXでなんとかなるんじゃない
436:デフォルトの名無しさん
16/01/02 01:20:45.94 0SH4qGeB.net
時計の文字盤は2軸だろ
3Dは3軸だ
1軸の取り方が無数にあるのでは何とも表現できない
437:デフォルトの名無しさん
16/01/02 03:06:21.59 Bt0XQGx2.net
9時の方向に30度って要するに11時の方向ってことじゃないの?w
438:デフォルトの名無しさん
16/01/02 04:58:14.89 DiKFtfHd.net
zを9時に向けて、xを30度ってことだったりしてな
これでも432の言うとおりyはどうすんだよって話になるが
ともかくもう少し質問内容をしっかり書いてほしいわな
439:デフォルトの名無しさん
16/01/02 05:46:53.74 nejI+NKJ.net
エスパーすると、右回りに30度だな
でも確かに情報が曖昧だw
440:デフォルトの名無しさん
16/01/02 09:46:53.33 Lc/ZqWli.net
右手系で-Z方向を進行方向として
Z軸を回転軸としたロールだと解釈したがw
441:デフォルトの名無しさん
16/01/02 10:05:16.46 FffDLBdP.net
わかりにくくてすみません。
足元を固定して倒れる表現をしたいのですが、身体の中心から回転してしまいます。
442:デフォルトの名無しさん
16/01/02 10:10:10.13 FffDLBdP.net
その歳に撃たれた方向に倒れたいのです
443:デフォルトの名無しさん
16/01/02 11:39:44.08 3ogeHslP.net
3次元アフィン変換を覚えろ
基本だ基本
444:デフォルトの名無しさん
16/01/03 01:06:33.23 buM4hFpe.net
>>437
足を短くすればいいだろ
445:デフォルトの名無しさん
16/01/03 01:16:45.20 OtEZdr7j.net
>>437
足元を中心に回転しろよ
446:デフォルトの名無しさん
16/01/03 10:11:03.01 JnVxwVfS.net
足なんて飾りです
447:デフォルトの名無しさん
16/01/03 21:08:52.46 bLJMdtU7.net
飾りとコメントは重要だぞ
やくに立たないくせに糞なのは迷惑でしかない
448:デフォルトの名無しさん
16/01/04 03:04:56.99 tYWpcH6n.net
UnityのC#ってどうやってiOSで動いてるの?
UnityやXamarin使わず(高いんで)にiOSアプリを書きたいんだけど、応用が効くなら参考にしたいな
449:デフォルトの名無しさん
16/01/04 03:34:59.07 Wj5XV3E6.net
>>444
独自のC#コンパイラ実装してやってる
素人がやることじゃない
450:デフォルトの名無しさん
16/01/04 04:16:13.58 u97FRQbx.net
>>444
mono
451:デフォルトの名無しさん
16/01/04 10:58:17.57 JagLoUWq.net
pen1とpen2をpenに代入して使いたいです
Pen pen = new Pen(Color.Red, 1);
Pen pen1 = new Pen(Color.Red, 1);
Pen pen2 = new Pen(Color.Red, 2);
pen = pen1;
// ここでpenを使う
pen = pen2;
// ここでpenを使う
// 解放
pen.Dispose();
pen1.Dispose();
pen2.Dispose();
ここでpenはnewしなくても
Pen pen;
だけでもでエラーになりません
newしないで使うのが正解なのかnewするのが当然なのかが分からないです
newしない場合はDispoaseも不要になりますか
不要になるのが当たり前と思うけどDispoaseしてもエラーにならないので
452:デフォルトの名無しさん
16/01/04 11:04:28.65 CbDgu8L2.net
pen = pen1;
した時点で最初のpenはどっかいくだろ
そのうちガベコレで消えるだけ
そのDisposeはpen2に対して2回行ってるだけだな
453:デフォルトの名無しさん
16/01/04 11:23:53.54 F9X3XbcQ.net
上の言うとおりなんだけど、Dispose があるクラスなら
using を使って抜けなく解放されるようにして欲しい。
454:デフォルトの名無しさん
16/01/04 11:49:41.41 JagLoUWq.net
penのnewはいらないってことですね
> そのDisposeはpen2に対して2回行ってるだけだな
これはこれで問題ありですよね
> 上の言うとおりなんだけど、Dispose があるクラスなら
> using を使って抜けなく解放されるようにして欲しい。
参考にしてるdobonさんがそういう書き方なのでついつい
dobonさんの方はサンプルなのでそうしてることは理解してます
455:デフォルトの名無しさん
16/01/04 12:40:38.89 ggF79ROL.net
usingは例外などでもGCにマークさせたいものに使う
penならdisposeすらしなくてもGCされそうな気がする
456:デフォルトの名無しさん
16/01/04 14:11:16.31 fcRyHRgJ.net
>>450
using ディレクティブのことじゃなくてusingステートメントのことかと
457:デフォルトの名無しさん
16/01/04 17:31:35.34 ubfZpLLm.net
>>452
dobonはDisposeで書くんだよ
サンプルだからと書いてあるから勘違いするのはわかるけど
>>450
サンプルでもDisposeで書くメリットは一切ないからdobonがどうかしてるだけ
458:デフォルトの名無しさん
16/01/04 17:49:00.31 VyTgME1l.net
サンプルだから明示的にDisposeした方が親切だろうと考えたか、
VBにUsingがない時代のサンプルだからVBerに配慮してそう書いたか、まあそんなとこでしょ。
459:デフォルトの名無しさん
16/01/04 21:41:25.92 TKdGSRvj.net
dobonに限らず古いサイトはレガシーコードが多いので注意
PrintDialogのマージンではめられたことがある
460:デフォルトの名無しさん
16/01/05 10:29:56.73 7uneSmZj.net
非同期でファイル出力やるのってドキュメント通りに
using (StreamWriter outfile = new StreamWriter("hoge.txt"))
{
await outfile.WriteAsync(data);
}
ってやれば手軽に出来るのかと思ってたけど
書き込み中プロセス終了したら途中でぶつ切りのファイルになったり
再入時にはロックしないといけなかったり結構面倒なのね
461:デフォルトの名無しさん
16/01/05 11:32:45.05 9P9OP9TU.net
当たり前だろう。w
CancellationToken とかあるだろ。それで中断処理を入れて、どうしようもない時に仕方なくプロセスキルだろうに。
462:デフォルトの名無しさん
16/01/05 12:03:14.79 rShYuMI8.net
というか何のドキュメントにそう書いてあったんだろ
ムチャクチャな
463:デフォルトの名無しさん
16/01/05 15:51:13.74 6f6Kf2/K.net
unityなんですけど、
switch(chartype) //キャラタイプ
case 1:
画像Aを設定
case 2:
画像Bを設定
case 3:
画像Cを設定
みたいなのを複数箇所書いてるんですが、今後キャラが増えるとこの分岐箇所
全部に手を入れないといけないわけですが、何かいい方法ありますか?
ストラテジーパターンとか使うんでしょうか?
464:デフォルトの名無しさん
16/01/05 15:53:50.23 ENhoHMkE.net
lavelクラスとかテキストボックスクラスなどFontプロパティを
もってるクラスはたくさんあると思うのですが、このFontプロパティ
ってなんなんでしょうか?
例えばlabel1.Font.FontFamlyとか書けると思うのですが、FontFamly
ってFontクラスのプロパティですよね?
なんでFontプロパティがFontクラスのプロパティを持ってるのかよくわから
ないのですが・・・
465:デフォルトの名無しさん
16/01/05 17:28:10.71 rShYuMI8.net
クラスとインスタンスの区別をつけろ
466:デフォルトの名無しさん
16/01/05 18:09:00.62 ANFnPmDl.net
FontプロパティがFontクラスだからとしか言いようがない
467:デフォルトの名無しさん
16/01/05 18:20:51.00 YO0Pj5qh.net
>>459
状況がよくわからんけど、キャラにやらせたら
468:デフォルトの名無しさん
16/01/05 18:47:08.04 3DV+V0sT.net
>>459
インターフェース定義して
SetImageとか実装したら?
でも、ポリモーフィズム使うと予期せぬとこで問題出たりするから、
switchもシンプルでいい方法だとは思うよ。
あと、Unityにおいては継承を多用するよりは、パラメータで管理した方が幸せになれる。
469:デフォルトの名無しさん
16/01/05 19:11:04.82 mStzs5Tn.net
>>460
あるクラスを返すプロパティの名前は、そのクラス名と同じにする という作法
なのでFontプロパティはFontクラスを返す
Fontプロパティが返しているのはFontクラスだから、そこからはFontクラスとして使える
470:デフォルトの名無しさん
16/01/06 05:18:19.16 9EwLehji.net
>>463-464
レスありがとうございます
>>464
すみません、
>Unityにおいては継承を多用するよりは、パラメータで管理した方が幸せになれる
これもうちょっと具体的にお聞きしたいのですが、どういう意味でしょうか?
パラメータとはフィールドの事ですか?
471:デフォルトの名無しさん
16/01/06 11:09:52.27 wCEM/hYT.net
>>444
最新のXamarinはC#からLLVM経由でネイティブコード
472:デフォルトの名無しさん
16/01/06 11:37:27.21 TgTP81o4.net
>>465
ありがとうございます。
つまりクラスと同名のプロパティがあったらその
クラスと思っていいのですね。
473:デフォルトの名無しさん
16/01/06 13:11:37.93 /WM8ggC6.net
>>468
おたくも>>465も混乱して何か変な勘違いしてるだけw
そんな作法なんか聞いたことないよw
474:デフォルトの名無しさん
16/01/06 15:37:31.87 lmDMYYEi.net
>>469
URLリンク(msdn.microsoft.com)(v=vs.71).aspx
自分が聞いたことがない≠存在しない
肝に命じておけ
475:デフォルトの名無しさん
16/01/06 18:45:22.41 8BJ4gk1j.net
visualstudioでWebサイトの発行やろうとすると人によって出てくるダイアログ違うのなんで?
476:デフォルトの名無しさん
16/01/06 21:04:49.83 XWrepft2.net
>>470
肝に命じておけ、だとさ。
それは当たり前のことが書いてあるだけ。
FontはFontに決まってるし、ColorはColorに決まってる、特に理由がなければあえて別の名前を付ける必要はない、ただそう言ってるだけ。
なんでそんな当たり前のことが書いてあるのか意図がよく分からないが。
馬鹿じゃないの。
477:デフォルトの名無しさん
16/01/06 21:15:48.25 Ph2iCp2l.net
それもちょっと違うような
まあ面倒くさいのに巻き込まれたくないからどうでもいいや
478:デフォルトの名無しさん
16/01/06 21:19:25.05 XWrepft2.net
>>473
違わない。
具体的に言うなら、>>465が言ってるような作法があるなら、UIのコントロールの大半のTextプロパティは
Stringになってないとおかしい。
479:デフォルトの名無しさん
16/01/06 21:53:35.59 cUB9w8BS.net
Fontいじりたいから
Fontって命名されてるだけだろ。
よく使うなら例外的にfでもかまわんよ。
開発速度を上げるために命名規則を共有するんだぞ?
480:デフォルトの名無しさん
16/01/06 22:13:40.67 uPkU6fsw.net
入門サイト見てるけどつながりが見えない
まるで古文単語と英単語と数学の定理を読まされているような感覚
481:デフォルトの名無しさん
16/01/06 22:37:42.32 vYy0/gWp.net
コンソールアプリを作って思ったのですが、
staticのメソッドって、どのようなメリットがあって
存在しているのでしょうか?
インスタンス化しなくて済む以上の理由が
あるのではと思うのですが、よろしくお願いします
482:デフォルトの名無しさん
16/01/06 22:46:45.66 jdU7mFUq.net
基本はクラスメソッド
異論は認める
483:デフォルトの名無しさん
16/01/06 23:11:17.10 SEgF84gg.net
>>477
スッキリ分かるjava入門読んだらだいたい分かる
484:デフォルトの名無しさん
16/01/06 23:31:50.98 QGmDYJlm.net
そのクラスの名前空間を使っているから、
マーカー的な意味合いもある
クラス名が付くから、視認性もよくて、分類がよくわかる
485:デフォルトの名無しさん
16/01/07 00:14:36.90 h85vwdS0.net
++C++;// 未確認飛行
ufcpp.net
っていう一番分かりやすくそうな入門サイトを読んでるんですが、基礎の所からよく分かりません
プログラミング C#を知ってる人にしか分からない書き方のように思えるんですが、このサイトより分かりやすい、もっと「なぜこうなるのか、なぜこれじゃだめなのか」みたいなのを
説明してくれる本があれば教えてください
486:デフォルトの名無しさん
16/01/07 00:37:17.55 at5+d40J.net
だいぶ古いし好みが分かれるけど、
「なんでこうなるのか、なぜこれじゃだめなのか」についてはかなり詳しくてわかりやすい定番のやつ
URLリンク(www.atmarkit.co.jp)
487:デフォルトの名無しさん
16/01/07 02:15:55.76 zpJ8fCsq.net
>>471
人によってって
誰と誰?
488:デフォルトの名無しさん
16/01/07 02:18:29.07 zpJ8fCsq.net
>>481
例えばどこで引っかかるの?
489:デフォルトの名無しさん
16/01/07 03:07:38.42 AvUDPpyf.net
とりあえず棚上げして先に進める人でないと難しい
490:デフォルトの名無しさん
16/01/07 03:36:20.80 sBfaw+Jv.net
プログラム未経験からJava勉強するのに、まずなんで文字が画面に表示できるのか気になって、ディスプレイ回路とか調べてたわ・・・・・
491:デフォルトの名無しさん
16/01/07 08:20:12.50 WgDSnx84.net
>>483
端末によって、というべきか
同じ2012を使ってるのにダイアログが違うんだよね
なんかの設定が足りないのかな?
URLリンク(lh3.googleusercontent.com)
URLリンク(lh6.googleusercontent.com)
492:デフォルトの名無しさん
16/01/07 10:46:41.60 AmpDR1lN.net
マニフェスト
493:デフォルトの名無しさん
16/01/07 10:49:26.46 AmpDR1lN.net
ってVSそのものかいな
494:デフォルトの名無しさん
16/01/07 11:12:10.97 oYgL+fra.net
>>486
俺はそこまでしなかったけど、javaの文法でダイアログ表示したり、コンソール、ファイルI/Oが何故出来るのか気になってたわ
495:デフォルトの名無しさん
16/01/07 14:07:33.85 C9YZL6QX.net
大学でTTLやFETなどの素子の原理からNAND,NOA回路、そしてCPUの回路が来て
それからIPLのプログラムやマルチタスクモニタのプログラム追ったり石を直接制御したり
そういうのも結構楽しいものだよ
496:デフォルトの名無しさん
16/01/07 15:26:47.11 Tcm+Rgx7.net
ゲームのMODを改造したいのですがわからず質問します。
ゲーム内で特定のチャットコマンドを入力した際に別のMODを無効化するために
そのMODのパーミッションを消したいのです。
また、別のコマンドを入力した際に消したパーミッションを再度付与したいです。
どのように記述すればいいのかご教授願えませんでしょうか。
497:デフォルトの名無しさん
16/01/07 16:02:55.92 AmpDR1lN.net
誤爆?C#との接点書いてないが
498:デフォルトの名無しさん
16/01/07 16:09:52.50 Tcm+Rgx7.net
申し訳ありません。コードを貼ります。
URLリンク(ideone.com)
192行目のチャットコマンドの/arena joinを入力した時に、
別のMODを使用可能にするためのパーミッションであるteleportation.tprとteleportation.homeを削除し
/arena exitを入力した際に上記2つのパーミッションを再度付与したいのです。
499:デフォルトの名無しさん
16/01/07 16:17:13.29 oYgL+fra.net
そういえばVBとc#で作ったexeって全く同じ物が出来るの?それとも大体同じものが出来るの?
500:デフォルトの名無しさん
16/01/07 21:04:58.89 zpJ8fCsq.net
>>495
比較してみたらわかるだろ
501:デフォルトの名無しさん
16/01/07 21:06:53.74 nXbcU6mx.net
お前の手を動かしてやろうってのにその態度はなんだよゴミ
502:デフォルトの名無しさん
16/01/07 21:28:34.95 AvUDPpyf.net
横からつまらない煽りを入れるのは止めとけ、お前給料安いだろ
503:デフォルトの名無しさん
16/01/07 21:55:03.08 WqX4FtZ/.net
>>494
何のゲームのmodだよ。
504:デフォルトの名無しさん
16/01/07 23:17:51.93 aNa897Rt.net
すみません、わからないところがあるので教えていただけると嬉しいです。
visual studio 2013でアプリを作ってるところで、
flowrayoutpanelのスクロールバーとマウスホイールを同期させるため、
以下のコードを参考にしたら動くようになりました。
private void Panel_Click(object sender, EventArgs e)
{
var panel = (FlowLayoutPanel)sender;
panel.Focus();
}
けれども、コード中の
505:デフォルトの名無しさん
16/01/07 23:19:21.51 aNa897Rt.net
すみません、わからないところがあるので教えていただけると嬉しいです。
visual studio 2013でアプリを作ってるところで、flowrayoutpanelのスクロールバーとマウスホイールを同期させるため、
以下のコードを参考にしたら動くようになりました。
private void Panel_Click(object sender, EventArgs e)
{
var panel = (FlowLayoutPanel)sender;
panel.Focus();
}
けれども、コード中の
"var panel = (FlowLayoutPanel)sender;"の部分が
何をやっているのかわかりません。
flowrayoutpanelにフォーカスするための準備ということはわかりましたが、
わかる方がいたら教えてください。よろしくお願いします。
506:デフォルトの名無しさん
16/01/07 23:28:34.43 AvUDPpyf.net
varか、
507:デフォルトの名無しさん
16/01/07 23:30:19.83 aNa897Rt.net
すみません、わからないところがあるので教えていただけると嬉しいです。
visual studio 2013でアプリを作ってるところで、flowrayoutpanelのスクロールバーとマウスホイールを同期させるため、
以下のコードを参考にしたら動くようになりました。
private void Panel_Click(object sender, EventArgs e)
{
var panel = (FlowLayoutPanel)sender;
panel.Focus();
}
けれども、コード中の
"var panel = (FlowLayoutPanel)sender;"の部分が
何をやっているのかわかりません。
flowrayoutpanelにフォーカスするための準備ということはわかりましたが、
わかる方がいたら教えてください。よろしくお願いします。
508:デフォルトの名無しさん
16/01/07 23:31:21.59 aNa897Rt.net
何度も書き込んですみません…
リロードしたら再書き込みされたみたいです…ごめんなさい
509:デフォルトの名無しさん
16/01/07 23:35:53.96 WqX4FtZ/.net
>>501
objectの正体はlayoutですと指定している(キャスト)。
そうしないとlayoutとしてメンバーを扱えない。
基本的に同じインスタンスを扱うが、
float→intにキャストした場合とか値が変わるので注意が必要。
510:デフォルトの名無しさん
16/01/07 23:38:54.08 xReZbxBA.net
>>504
varを調べるつもりがなさそうだから軽く答えるけど
FlowLayoutPanel panel = (FlowLayoutPanel)sender
の意味よ
型をキャストしとるんよ
((FlowLayoutPanel)sender).Focus();
↑こう書いても同じ動作するけど
そうやってキャストしたのを一旦別の変数に持たせるのはよくあること
511:デフォルトの名無しさん
16/01/07 23:45:19.86 aNa897Rt.net
キャスト…!
ああ、そうか。senderを型変換してるんですね
型変換というよりは型指定ってニュアンスの…
初心者向けの本じゃvarとかキャストを使うことがほとんどなかったので、
頭から抜け落ちてました…
ありがとうございます、理解できました。
512:デフォルトの名無しさん
16/01/08 05:26:15.42 C0M820FV.net
今時なら
var panel = sender as FlowlayoutPanel
と書いた方が良い。
513:デフォルトの名無しさん
16/01/08 06:48:25.92 /YBx4YCU.net
そのコードならば型は限定されてる。
514:デフォルトの名無しさん
16/01/08 07:44:25.01 K8OImcU7.net
asの方が見た目が綺麗なのはわかるが、型が確定してる場合にas使うのは誤解とバグの元
515:デフォルトの名無しさん
16/01/08 09:37:44.82 z/W2hw6Z.net
一行でメンバ呼出のためのキャストしたいときとか
asのが括弧少なくなっていいのよね…
本能レベルで()キャスト書いちゃうけど
516:デフォルトの名無しさん
16/01/08 10:29:08.26 oGkbrhN8.net
asのほうが重い処理だと信じているが
両方を一度も比較してみたことはないw
517:デフォルトの名無しさん
16/01/08 11:33:49.87 Kn74uLBe.net
as 使ったほうが変換失敗した時のエラー処理が楽だから重宝しています
!=null と Try{}catch{}じゃ雲泥の差
518:デフォルトの名無しさん
16/01/08 11:53:31.18 UaTuFyFJ.net
as使うユースケースではないって指摘されてるのに
馬鹿かこいつら
519:デフォルトの名無しさん
16/01/08 13:29:56.26 SPwv8IXV.net
URLリンク(www7b.biglobe.ne.jp)
このコードでファイルの種類を取得すると
ファイルフォルダー が イルフォルダーとか
IrfanView JPG File が nView JPG Fileとか
文字が切れるのですが何処がおかしいのでしょうか?
520:デフォルトの名無しさん
16/01/08 14:51:42.41 EVmIpiZQ.net
>>508
何が良くなる?
521:デフォルトの名無しさん
16/01/08 14:52:36.86 EVmIpiZQ.net
>>510
俺は見た目が悪いと思う
522:デフォルトの名無しさん
16/01/08 14:53:35.45 EVmIpiZQ.net
>>513
変換失敗する事有るのか?
523:デフォルトの名無しさん
16/01/08 14:54:41.12 EVmIpiZQ.net
>>515
作った奴に聞けよ
524:デフォルトの名無しさん
16/01/08 14:55:21.36 jv1GyZfR.net
キャストとか配列のコピートゥーくらいでしか使わないし
as使ったことまだ無い
525:デフォルトの名無しさん
16/01/08 15:04:00.28 9v7QtVbF.net
>>515
SHFILEINFO構造体2番目のpublic IntPtr iIcon;の型は多分intが正解
MSのKB319350からして間違ってる
526:デフォルトの名無しさん
16/01/08 15:49:40.87 SPwv8IXV.net
>>521
intに変えたらちゃんと表示されました。本当に感謝致します。ありがとうございました。
527:デフォルトの名無しさん
16/01/09 01:11:44.49 eXTQYEr7.net
継承先にキャストしたい場合にasを使うな…あんまりないけど
528:デフォルトの名無しさん
16/01/09 01:18:17.70 fjSGmDWG.net
as使うと誤解やバグの元って、具体的にどんなバグが生まれるん?
529:デフォルトの名無しさん
16/01/09 01:44:07.56 /BDqjX/g.net
というより、バグがあった場合に分かりにくい。
xがHoge型であることを確信しているなら当然x as Hogeとした結果のnullチェックは行わないよな?
そのとき、もしバグでxがHoge型でなかったときには
xのメンバを使おうとした時点でヌルポが発生する。
これはキャストの瞬間InvalidCastExceptionで即死するのに比べると原因がわかりづらい。
(x as Hoge).Foo() のようにすぐ死亡してくれる場合はまだいいが、
結果を一旦フィールドに入れて後で使っていたりすると厄介。
530:525
16/01/09 01:47:16.65 /BDqjX/g.net
あと、知らない人がコードを読んだとき
(そいつもas厨仲間ならともかく)asでキャストしてたら
「これは失敗する可能性のあるキャストなんだな」と誤解する可能性が高い。
仕様の誤解はあらゆるバグの元だ。
531:デフォルトの名無しさん
16/01/09 01:55:26.70 d7OyTAQ0.net
x as Hogeの後にnullチェック行えばいいだけじゃね?
532:デフォルトの名無しさん
16/01/09 02:18:34.33 RXN434tL.net
なるほど、出来れば普通に()で括ってキャストすればいいのん?
C++を初めていじった時C#の型の少なさに感謝すべきだということに気がついた
533:デフォルトの名無しさん
16/01/09 02:42:58.16 fjSGmDWG.net
(失敗しない場合でも)asの方が若干早いし、Debug.Assert()でnullチェックしとけば誤解の生まれようもない。
534:デフォルトの名無しさん
16/01/09 06:53:51.72 ipKoJt7Z.net
>>527、>>529 に1票だ。
>型が確定してる場合にas使うのは誤解とバグの元
だなんて、ミスリードもいいとこ。
逆に InvalidCastでコケるようなコードの方が殺意沸く。
535:デフォルトの名無しさん
16/01/09 07:03:17.17 4yYuKqnI.net
なんで型が決まってて絶対に成功するのに失敗する場合を想定する必要があるの?
キャストが絶対に成功する場合を話してんのにキャスト失敗するコードが腹立つとかお門違いでしょ
536:デフォルトの名無しさん
16/01/09 07:15:36.45 1PcbP7SA.net
まともなC#プログラマなら全てのInvalidCastExceptionはバグであると認識してるはずだから、
>>529-530みたいな発想は出てこないと思うのだが
きっと彼らは最近までInvalidCastをキャッチするようなクソコードを書いていたか、
仕事でそういうクソコードに悩まされているんだろうな
537:デフォルトの名無しさん
16/01/09 09:42:44.41 RV595/l0.net
ループなのにbreakで抜けられるって意味あるんですか?
一回だけ処理を行うというのと違いがわかりません
538:デフォルトの名無しさん
16/01/09 09:53:25.50 KRieFRf7.net
>>533
人生に行き詰まって、失敗を永遠ループしていないかい?
視野を広げてごらん。
ほらすぐそこに抜け道があるんだよ。
539:デフォルトの名無しさん
16/01/09 09:54:45.10 8dWnCTXu.net
BitmapオブジェクトとGraphicsオブジェクトがよく分かりません
Bitmapオブジェクト自体画像を描けるものですよね
その中にGraphicsオブジェクトがあってそこにも画像を描ける?
概念が分かりません
540:デフォルトの名無しさん
16/01/09 10:30:38.60 rnbze7si.net
>>529
URLリンク(ufcpp.net)
によると、キャストのほうが僅かに早いみたいだけど変わったの?
まぁ、一割とか誤差レベルだけど
541:デフォルトの名無しさん
16/01/09 11:00:00.50 J5rs+efG.net
>>529
そういうのを手段と目的の逆転ってんだよ
死んどけトンチキ
542:デフォルトの名無しさん
16/01/09 11:11:36.62 d7OyTAQ0.net
>>536
この手の1割速いネタのせいで、未だにforeach使わずに頑なにfor使っている人が実在するから困る
543:デフォルトの名無しさん
16/01/09 11:24:22.86 /BDqjX/g.net
>>535
Bitmapは画像データ
Graphicsは描画命令を出すための操作パネル
Bitmapにつながっている操作パネルを使えば画像データへ描画できるし、
Formにつながっている操作パネルを使えば直接フォームへ描画できる
両方とも操作パネル自体は同じだから同じ操作で違うものへ描画できる
そういう意味ではGraphicsを独立したクラスにするんじゃなくてインターフェースとして
FormやBitmapに直接実装してもいいんだけど、それだと一つのクラスが大きくなりすぎるから分かれてるわけ
544:デフォルトの名無しさん
16/01/09 11:38:02.59 n8HSIjmO.net
C#選んだんならforeach使えばいいのにねw
for使いたいならCでも使えよとw
最大値設定しなくていいのに慣れちゃうとforは使う気しない
C#でfor使ってる奴は.NET分かってない奴
545:デフォルトの名無しさん
16/01/09 11:57:11.00 eXTQYEr7.net
インデックスが必要な場合のfor
Select通すのは微妙だし、ForEachは標準に入ってないし
Ixが標準に入ることはないんだろうか…
546:デフォルトの名無しさん
16/01/09 12:36:29.73 y2qOksGB.net
>> 539
ありがとうです
Graphicsが操作パネルだとすると
Bitmap bmp = new Bitmap(100, 100);
Graphics g = Graphics.FromImage(bmp);
とあった場合、
FromImage(bmp) というのは「bmpを読み込んで」じゃなくて
「bmpオブジェクトを操作するよ」ってことでしょうか
FromImage(bmp) を「bmpを読み込んで」と解釈してたので
BitmapオブジェクトにもGraphicsオブジェクトにも画像を
描けるという認識だったのですが
547:デフォルトの名無しさん
16/01/09 13:02:03.35 sj0zN9uO.net
>>540
まあ要素置き換える場合にはfor使うしかないけどね。
>>542
内部実装はどうなってるか知らないけど、画像だろうがWindowの表面だろうがプリンタだろうが
統一的に描画するためのラッパーだと思っておけばいいと思うよ。
548:デフォルトの名無しさん
16/01/09 14:03:23.09 FulZHjyK.net
>>536
10年前の記事を鵜呑みにするのは
烏賊がな物かと
549:デフォルトの名無しさん
16/01/09 14:24:55.99 UqTdOJvq.net
foreachって順不同だよね?
List<T>の場合は内部実装が配列だから実際はforeachでも昇順になるとしても
全走査か順次処理かの意図を伝えるために使い分けるわ。
>>533
while(true) {
処理A
if XXX break;
処理B
if XXX break;
処理C
break;
}
後続処理
みたいに1回しか通らないけど中断してGOTO的に使ってるコードはたまにあるね
550:デフォルトの名無しさん
16/01/09 14:42:42.32 6gDXs0JP.net
>>545
>foreachって順不同だよね?
何を馬鹿なこと言ってるんだお前は
551:デフォルトの名無しさん
16/01/09 14:47:49.69 +7ynE4D6.net
C#習いたてだけど、hash(dictionary?)の時は順不同、
配列の時は格納順ってイメージ
List型も格納順ってあるよね?
552:デフォルトの名無しさん
16/01/09 14:53:03.65 /zf3lzOM.net
>>542
漏れの推測で書くけど、
メモリ上に、画像を作る
Bitmap bmp = new Bitmap(100, 100);
画像を、抽象的なデバイスで、扱えるように変換する(ラッパー)
Graphics g = Graphics.FromImage(bmp);
その後、実際のビデオカードか、
ディスプレイの規格にあった、GPUへ送られる
553:デフォルトの名無しさん
16/01/09 15:20:58.09 ghZcmnXD.net
>>547
順不動もなにも辞書の順番て何だって話。
C#はどうかしらんが他の言語にはだいたsortedmapみたいな
何らかの並び順を保障した辞書がある
554:デフォルトの名無しさん
16/01/09 15:24:46.91 6gDXs0JP.net
辞書の順番と言ったら辞書の順序(lexicographical order)だろう
日本語が不自由な人?
555:デフォルトの名無しさん
16/01/09 15:26:40.04 ghZcmnXD.net
>>550
いや、書いた瞬間それ言われるのは覚悟したから優しくスルーしてほしい
556:デフォルトの名無しさん
16/01/09 15:34:19.37 +7ynE4D6.net
そっかhashじゃなくてdictionaryって意味ある名前だったんだな
勉強になった(´・ω・`)
557:デフォルトの名無しさん
16/01/09 15:39:32.75 YRzABCdf.net
>>552
それ勘違いしてる恐れあり
Hashtable ←いわゆるhash
Dictionary ←Hashtableのジェネリック版
SortedDictionary ←キーに基づいて並べ替えられたDictionary
いちおう
558:デフォルトの名無しさん
16/01/09 15:49:40.27 +7ynE4D6.net
>>553
別物なのね
じゃあやっぱりDictionaryをkeyでforeachしたら順不同か
559:デフォルトの名無しさん
16/01/09 15:58:41.79 aPlZ2XXY.net
上でも書いてる人いるけど(なぜか馬鹿が叩いてるが)foreachの列挙順はコレクションのインデックス順に
なってる保証はないはずだけど。
(現実にはインデックス順だろうけど、列挙子がそういう実装になってなくても文句は言えない)
それはコレクションの中で要素がどういう順番で並んでいるかとは別問題。
560:デフォルトの名無しさん
16/01/09 16:26:25.85 321rOZDz.net
IEnumerableインターフェイスの実装次第。
もっと言えば、IEnumeratorインターフェイス MoveNext()の実装による
というものだと思ってたんだけど。
認識合ってる?
561:デフォルトの名無しさん
16/01/09 16:44:34.30 +7ynE4D6.net
SortedDictionaryがなんで実装されてるかって考えると
sortするコストが必要かどうかって事だと思うから
ただのDictionaryの場合のイテレータの処理順序は保証されないってのが正解な気がする
562:デフォルトの名無しさん
16/01/09 17:06:55.86 eXTQYEr7.net
Dictionaryの取り出し順序は一応追加順、Removeしなければ
なんでLinkedDictionaryって無いんだろうな…
563:デフォルトの名無しさん
16/01/09 18:01:24.62 weJV1QM8.net
IEnumerableのGetEnumeratorは実装がないから順不同
配列とかのGetEnumeratorは実装によって順番が定義されるから順不同じゃない
C#じゃなく日本語の問題だろ
564:デフォルトの名無しさん
16/01/09 18:09:52.56 J5rs+efG.net
変な話
仕様に書いてあればそのように認識して良いし
書いてないなら変な前提を置くな
推測するのも止めろ
565:デフォルトの名無しさん
16/01/09 18:29:36.44 v8FL872J.net
上で質問した人じゃないですが、結局asとキャストの使い分けがよく分からないのですが
どっちでもいいって感じですか?
使い分ける目安みたいなのがあれば、教えて下さい
566:デフォルトの名無しさん
16/01/09 18:41:50.87 d7OyTAQ0.net
>>561
個人的には型とnull以外であることが保障されていてるオブジェクトならキャスト、それ以外はasとnullチェックや?? 演算子を1セットにしているわ
仕事なら上に聞けばいいし、個人の範疇なら好きにすればで
567:デフォルトの名無しさん
16/01/09 18:42:34.40 UqTdOJvq.net
>>561
基本キャストに統一。InvalidCastExceptonは完成までに根絶する。
変換できないパターンを自分でハンドリングしたい場合だけas使用
568:デフォルトの名無しさん
16/01/09 18:46:02.38 AZkh53jv.net
例外発生があり得ないか、
例外発生したら切腹しなければならないならキャスト
そうでないならas
目安じゃなくて
人に見せるコードなら守って
569:デフォルトの名無しさん
16/01/09 18:53:33.65 vv5IN0Y0.net
キャストは値型以外ではまず使わないな。
570:デフォルトの名無しさん
16/01/09 18:53:56.30 J5rs+efG.net
スマート脳もいいけど、コード読んだ人に適切に意味が伝わるように書いてね
as使いたいからasを使って、次の行にDebug.Assert置くみたいな、一般的でないことをすると
レビュー中に「何やってんだこいつ」と思わせるだけで時間の無駄だから
571:デフォルトの名無しさん
16/01/09 18:56:49.72 vv5IN0Y0.net
あとexplicitな変換もキャストじゃないとダメか
572:デフォルトの名無しさん
16/01/09 19:02:34.65 RV595/l0.net
もうダメだ
サンプルの少なさは俺にとって致命的だ
一旦諦めてCからやり直す
573:デフォルトの名無しさん
16/01/09 19:35:19.51 eXTQYEr7.net
キャストを as メインで使ってる奴いるの?
間違ったキャストだったら例外になるのが親切じゃね
型で処理を分ける場合のみ as
574:デフォルトの名無しさん
16/01/09 19:43:28.87 GQZs9W2l.net
>>569
無暗に例外投げられても面倒な場合が多いからTry○○系のメソッドが
好まれるようになってる訳で。
575:デフォルトの名無しさん
16/01/09 19:44:36.57 eXTQYEr7.net
それとは別だろ
キャスト間違いって明らかなバグじゃん
576:デフォルトの名無しさん
16/01/09 19:49:53.81 GQZs9W2l.net
>>571
何が言いたいのかよく分からん。
デバッグと例外処理は本来まったく次元の違う別個の問題。
577:デフォルトの名無しさん
16/01/09 19:58:41.34 eXTQYEr7.net
>>572
間違ったキャストなら、例外吐いてくれた方が親切
例えば>>503でButtonにキャストするコードを書いたらInvalidCastExceptonを期待するだろ
578:デフォルトの名無しさん
16/01/09 20:33:44.77 1IbXuGB2.net
>>570
> 無暗に例外投げられても面倒な場合が多いからTry○○系のメソッドが
だからそれは、
> 処理を分ける場合
でしょ
579:デフォルトの名無しさん
16/01/09 20:56:31.33 GQZs9W2l.net
>>573
それはただのバグ。
デバッグと例外処理の区別がつかないって何なの。
>>574
いや意味が分からない。
580:デフォルトの名無しさん
16/01/09 21:13:42.13 J5rs+efG.net
分からないなら喋るなよ
マヌケ
581:デフォルトの名無しさん
16/01/09 21:22:18.90 GQZs9W2l.net
>>566なんて例外処理とデバッグの区別のついてない典型例だな
582:デフォルトの名無しさん
16/01/09 21:25:09.61 FulZHjyK.net
>>568
サンプルなんて腐る程あるだろ
583:デフォルトの名無しさん
16/01/09 21:27:07.17 1IbXuGB2.net
>>575
> いや意味が分からない。
マジで言ってるなら、マをやめた方がいい
584:デフォルトの名無しさん
16/01/09 21:32:23.08 GiqjJrGR.net
>>575
Try○○系はキャストできたら処理A、できなければ処理Bを実行するというように処理を分けたい場合に使う。
>>573 が言っているのは、as を使ってコードを書いて
private void Panel_Click(object sender, EventArgs e)
{
var panel = sender as Button;
if (panel != null)
panel.Focus();
}
本来FlowLayoutPanelとすべきところを間違ってButtonと書いてしまった場合、
panel.Focus() が実行されていないことを見落とすかもしれないってこと。
as を使わずに
var panel = (Button)sender;
って書いてあればInvalidCastExceptonになるから間違いに気付ける。
585:デフォルトの名無しさん
16/01/09 21:33:13.42 GQZs9W2l.net
>>579
お前がな。
TryXXXパターンのようにboolを返すのでなく例外を投げる仕様のメソッドを使った場合も
(通常は)例外をキャッチする箇所で例外の有無で処理を分けるんだけど分かってるのかね。
586:デフォルトの名無しさん
16/01/09 21:37:33.42 GQZs9W2l.net
>>580
だから何度も言ってるように、デバッグと例外処理はまったく別問題。
バグが疑われる箇所は普通にAssertを使う。
バグを例外で検出できない恐れがあるからダメなんだ、なんて議論が通用するなら
TryXXXパターンも使うなという結論になる。
587:デフォルトの名無しさん
16/01/09 21:57:57.02 ElI3ItOe.net
相変わらず例外は馬鹿だな。
例外じゃなくお前の玉を握り潰すぞ。
588:デフォルトの名無しさん
16/01/09 22:32:08.15 N/cvH//+.net
例えば次のようなプログラムがあるとして、
class Date
{
public int Month { get; private set; }
public int Day { get; private set; }
public void SetDate(int month, int day) { Month = month; Day = day; }
}
class Person
{
public Date Birthday { get; private set; }
public Person() { Birthday = new Date(); Birthday.SetDate(1, 9); }
}
Personクラスでは、Birthdayは外部から変更されたくなくて、参照だけを許可したいとします(※)。
このため、Birthdayのsetプロパティをprivateにしています。
しかし、Birthdayのgetプロパティが内部データへの参照を返すため、クラスを利用する側が
Person man = new Person();
man.Birthday.SetDate(12, 31);
とすれば、Birthdayを変更できてしまいます。
このような場合、(※)のような制約をつけたければ、どう書くのが普通なのでしょうか?
Birthdayのgetプロパティで、新しいDateのインスタンスを作って、コピーを返すべきなのでしょうか?
C++だと、
const Date& Birthday() { 略 }
と、Get関数の戻り値に const をつければ、内容を変更できない参照を返せるのですが…。
589:デフォルトの名無しさん
16/01/09 22:33:33.29 eXTQYEr7.net
TryXXXパターンも失敗が想定されるところでのみ使う
例えばDictionaryの"hoge"キーがあるのが分かっててTryGetValue使うか?
590:デフォルトの名無しさん
16/01/09 22:40:50.88 eXTQYEr7.net
>>584
DateTimeじゃいかんのか?と思うけど、
Dateクラスのコンストラクタにmonthとday引数を用意する
591:デフォルトの名無しさん
16/01/09 22:41:56.27 y2qOksGB.net
>> 548
ありがとうです
操作パネルと考えてもラッパーと考えてもいいですよね
bmpに直接点を打つことはできるけど、線を描くのは無理
その為にGraphicsオブジェクトに線を描く命令があるよ
って思えばいいのかな
FromImageの意味を考えてしまうから駄目みたい
でも考えてしまう
592:デフォルトの名無しさん
16/01/09 22:49:21.28 eXTQYEr7.net
>>584
後、DateとPersonを、呼び出し元と別DLLにできるなら、SetDateメソッドをinternalにする手もある
593:デフォルトの名無しさん
16/01/09 23:06:48.44 N/cvH//+.net
レスありがとうございます。
例で言えば、Dateクラスのコンストラクタにmonthとday引数を用意して、そもそもSetDateなんて作らなければ
いいじゃないか、と言われるかもしれませんが…。
Dateクラスは質問のために書いただけで、日付を扱うプログラムを実際に書きたいわけではありません。
質問の内容としては、
入門書には、「内部データを直接公開せずに、set/getプロパティ等を使って内部データを隠蔽しよう」
みたいなことが書かれているけど、getプロパティをprivateにしても、参照型の場合は内部データの参照を
返してしまうから、内部データ側のクラスに設定メソッドが公開されていれば、取得だけではなくて設定も
されてしまう。こういう場合、一般的に、どう書くのが普通なのかな?
ということなのです。
594:デフォルトの名無しさん
16/01/09 23:11:27.27 N/cvH//+.net
あ、間違えました。
×) getプロパティをprivateにしても、
○) setプロパティをprivateにしても、
です。
595:デフォルトの名無しさん
16/01/09 23:37:02.57 eXTQYEr7.net
C++のconst相当のことはできないのでメソッドを公開するなら無理
せいぜいできるのはDLL分離してinternalで隠す >>588
596:デフォルトの名無しさん
16/01/09 23:50:16.69 N/cvH//+.net
了解しました。
フィールドがクラス型で、それを読み取り専用にしたいというのはよくあることのような気がするのですが、
単純にはできないんですね。
せっかくsetとかgetとかの仕組みがあるのに、意外と融通が利かないものなんですね。
どうもありがとうございました!
597:デフォルトの名無しさん
16/01/10 00:18:42.60 2fzuCWWo.net
>>581
もともとのお話は失敗する可能性のない物にTryXXXパターン使うな
失敗する可能性があるように見えるって話でしてね
小学校からやり直してきてね
あと、よく分かりもしないのに大人の話に口を挟まないように
598:デフォルトの名無しさん
16/01/10 00:23:52.70 4UItudR1.net
>>593
馬鹿だろお前。
どこにそんなことが書いてあるのか言ってみろ。
599:デフォルトの名無しさん
16/01/10 01:04:47.28 hZikTLMs.net
かならず成功するハズの処理で例外をスキップしたらあかんだろう。
それバグ隠蔽っていうんだぞ。
asはキャスト失敗を許容する時に使うもんなんだから、こっちの方がスマートとかそういう話じゃないんだが。
まず、例の箇所は必ずキャスト成功させる場面なんだから文句あるなら例文を変えろよ
600:デフォルトの名無しさん
16/01/10 01:08:07.66 7SYpesUH.net
asとキャスト論争まだやってんのかよw
601:デフォルトの名無しさん
16/01/10 01:40:47.71 G9FCRkLf.net
まあ、個人で使ってるだけならどっちでもいいかな。
602:デフォルトの名無しさん
16/01/10 01:58:46.07 ZmHi4ONW.net
>>543
要素置き換える場合でも、魔法の合言葉ToArray()を唱えれば大丈夫じゃん
forをつかうのは、処理にi自体を使う場合だけかな?
603:デフォルトの名無しさん
16/01/10 03:00:36.73 9aNZGNbQ.net
>>595
何を言ってるのか全然分からないけど、キャストよりas、例外を投げるメソッドよりTryXXXが好まれるのは、
処理の成否だけ分かれば十分でなケースの方が圧倒的に多く、例外を捕まえて詳細な情報が必用な
ケースなんかむしろあんまりないからだ。
>>598
ToArrayなんか使ってもforeachで要素の置き換えなんかできないと思うけど
604:ネットワークエンジニア(プロ)です
16/01/10 07:16:09.54 IGqj8XoF.net
>>599
例外の警告ってなんのために出すと思う?
例外だからだよwww
605:デフォルトの名無しさん
16/01/10 07:21:13.55 XSe/Cltb.net
>>599
あんまりないは全くないと非なるものだよ
自分で言ってて妙に感じないのww
606:デフォルトの名無しさん
16/01/10 07:57:59.45 3SBznyor.net
>>598
破壊的に変更したいって場合が結構あるからね
607:デフォルトの名無しさん
16/01/10 08:06:36.61 ZmHi4ONW.net
>>599
foreach(var x in hoge.ToArray())
{
608:デフォルトの名無しさん
16/01/10 08:08:31.73 ZmHi4ONW.net
ミスった
>>599
foreach(var x in hoge.ToArray())
hoge.Remove(x);
はエラー無く実行できますよ
609:デフォルトの名無しさん
16/01/10 09:07:42.53 mRELau7E.net
>>596
アホが1名ゴネてるだけ
610:デフォルトの名無しさん
16/01/10 10:29:56.90 5YyabK/9.net
関数の
611:デフォルトの名無しさん
16/01/10 12:21:10.40 HI8AxqBs.net
関数の、なんだよ?
>>604
んな簡単なことに気付かなかったんだと自覚させちまうと
マウント取るために清水亮並みに絡んでくるぞ
612:デフォルトの名無しさん
16/01/10 12:39:14.45 Cij84z8x.net
>>604
>>607
それは「置き換え」じゃなくて「削除」。
613:デフォルトの名無しさん
16/01/10 12:40:47.28 Cij84z8x.net
どうでもいいが、いつも思うけど、>>607みたいな「粘着ガー」と粘着してくる馬鹿の精神構造ってどうなってるのかね。
614:デフォルトの名無しさん
16/01/10 13:13:32.00 ZmHi4ONW.net
>>608
置き換えって削除と挿入だろ?順番変えるだけならLinqを使うのが常套手段だし一体どんなものを想定しているの?
615:デフォルトの名無しさん
16/01/10 13:25:20.59 JeKaLAZ3.net
多数から突っ込まれてる場合は大体自分がおかしいので考え直してみるのが吉
それでも正しいと確信できるなら納得させるだけの説明と根拠を示せないと
ただ単に言い負かせたいだけの自己中で自己満足したいという、程度の低い人物になってしまう
616:デフォルトの名無しさん
16/01/10 14:37:24.71 lZOXy80P.net
仮にみんながasだけしか使わないなら、それはそれで大した問題はないだろうね
しかし一方で、議論が盛り上がるほど「誤解される」という最大の問題の裏付けになっていることにas君は気付いてないのかな
正しい正しくないじゃなくて、これは作法の問題なんだよ
共通認識があることに意味があるの
617:デフォルトの名無しさん
16/01/10 14:56:43.57 HvvrKc9L.net
>>611-612
今日はこのぐらいで勘弁しといたるワ、と言ってるようにしか聞こえない。
しかし、こういう連中って自分の言葉を自分自身にまず適用するだけの知恵もないのか。
重症だな。
618:デフォルトの名無しさん
16/01/10 15:11:50.64 G9FCRkLf.net
衆愚肯定はいかがなものかと
619:デフォルトの名無しさん
16/01/10 15:16:09.85 HvvrKc9L.net
デバッグと例外処理の区別もつかない奴が偉そうに上から目線で
食って掛かってくるんだから泣けてくるよな。
620:デフォルトの名無しさん
16/01/10 15:49:44.82 vHEBiB0A.net
どちらにしろ、こうまで攻撃的な言動するヤツで、リアルで使えるヤツに当たったことがない。。
621:デフォルトの名無しさん
16/01/10 15:51:15.54 Q6iPmnC+.net
asとキャストのやつ、どっちの意見でもいいけどmsdnあたりにソース無いのかな
622:デフォルトの名無しさん
16/01/10 16:21:33.83 U57x58WF.net
>>610
置き換えってインデクサのセットじゃないの?
破壊的変更って奴
as君はこの辺りでも読んどけ
URLリンク(blogs.msdn.microsoft.com)
URLリンク(stackoverflow.com)
623:デフォルトの名無しさん
16/01/10 16:22:26.11 2fzuCWWo.net
例外の時もnull結合演算子の時もこんな感じだったな
624:デフォルトの名無しさん
16/01/10 16:47:26.66 FWhWg0iK.net
できればコテつけて欲しいんだが。
無駄話を連鎖あぼーんできれば便利だろ。
625: ◆QZaw55cn4c
16/01/10 16:49:04.35 VQDMXfno.net
ほい
626:デフォルトの名無しさん
16/01/10 17:12:48.82 FWhWg0iK.net
お前は呼んでねえ!話をややこしくするな。
627:デフォルトの名無しさん
16/01/10 17:20:15.29 sEmozDXF.net
>>618
結論を教えろよ
628:デフォルトの名無しさん
16/01/10 17:54:47.93 1UfP7RSB.net
結論:犯人はヤs
629:デフォルトの名無しさん
16/01/10 18:09:53.43 5YyabK/9.net
だれか教科書書いてくれ
本屋にもゴミしか無かった
630:デフォルトの名無しさん
16/01/10 18:20:49.80 ZmHi4ONW.net
>>618
上のやつ
例えばどんなケースで問題になるのですか?通常はToArrayやっちまった後なら、ループ内でコレクションをどう弄ろうがエラーにならないはずだが
気になるのでコード書いてくれませんか?
631:デフォルトの名無しさん
16/01/10 18:30:07.87 vO5UEyhN.net
>>625
ここの人たちにゴミじゃない教科書が書けると思っているのですか?
632:デフォルトの名無しさん
16/01/10 18:56:26.74 U57x58WF.net
>>626
>>543じゃないから正確なことは分からないけど
values[i] = value
が置き換えじゃないのってだけ
633:デフォルトの名無しさん
16/01/10 19:37:43.36 yMwz0uOc.net
visual C#でTabControlのTabPage1を複製するときに、
子コントロールのリネームを楽にする方法があれば教えてほしいです
Tabpage1
tabpage1_label1
tabpage1_label2
tabpage1_label3
をコピーすると
Tabpage2
label4
label5
label6
このlabel4,5,6をtab2_tabpage1_label1のような形で複製したいです
634:デフォルトの名無しさん
16/01/10 21:25:14.39 ZmHi4ONW.net
>>628
それだとシーケンスは壊さないからToArrayなしのforeachでもエラーにならんよね
635:デフォルトの名無しさん
16/01/10 21:50:29.99 lZOXy80P.net
>>629
考え方がおかしい
同じならユーザーコントロールにしたらリネームなんかいらない
636:デフォルトの名無しさん
16/01/10 23:45:47.54 srmp5NkD.net
>>618
まだ懲りずに「今日はこのぐらいで勘弁しといてやるワ」か。
637:デフォルトの名無しさん
16/01/10 23:54:41.01 5YyabK/9.net
猫でも分かる
は5章で詰んだ
死ね猫
638:デフォルトの名無しさん
16/01/10 23:56:51.45 5YyabK/9.net
つーか猿とか猫とか舐めてんのか?
639:629
16/01/10 23:59:26.28 2wOOq237.net
>>631
Windowsフォームである程度作ってしまったのですが、Tab以下のユーザーコントロール化ってできたりしませんか…
オブジェクト数が100超えてるので1から作り直すのは辛いです…
640:デフォルトの名無しさん
16/01/11 00:00:56.67 I2wHpsxZ.net
>>632
チェッカーズの歌詞みたいなやつだなお前。
その異常地味た攻撃性向って生まれつき?
641:デフォルトの名無しさん
16/01/11 00:07:15.15 gm1WMBnH.net
>>636
だからどういう自己中心性だよ。
お前の世界では他人に幼稚なレッテルを張って上から目線で命令を下すのは攻撃的じゃないのか馬鹿。>>618
ほんっと重症だな。
こっから先は完全に余談だけど、こういう馬鹿がマ板くんだりで自分の無能を棚上げして
ブラック企業被害妄想に浸ってるんだろうね。
ゆとり教育の成果なのか少子化で一人っ子が増えてるせいか知らんけど、
生まれながらに自分だけが特別扱いされる特権を持ってると勘違いしてる馬鹿が
今世紀に入って確実に増えてる。
642:デフォルトの名無しさん
16/01/11 00:13:00.17 gm1WMBnH.net
>>635
Tab以下っていうのが何のことを言ってるのか良く分からないけど、
単純に作ったユーザーコートロールをTabPageに貼るだけ。
そもそもユーザーコントロール化が可能かどうか要件が分からないから何ともいえないけど。
643:デフォルトの名無しさん
16/01/11 00:36:17.86 UeX+hyF3.net
>>637
お前ほんとに>>618読んだ?
それとも転載してあげた方がいい?
And finally, of course the use cases of the two operators are superficially similar, but semantically quite different.
A cast communicates to the reader “I am certain that this conversion is legal and I am willing to take a runtime exception if I’m wrong”.
The “as” operator communicates “I don’t know if this conversion is legal or not; we’re going to give it a try and see how it goes”.
644:デフォルトの名無しさん
16/01/11 00:48:06.28 gm1WMBnH.net
>>639
だから何?としか言いようがない。>>599
それで鬼の首でも取ったような気になれる感覚が理解に苦しむ。
645:デフォルトの名無しさん
16/01/11 00:52:53.12 50Ta3fhs.net
だからもうどうでもいいじゃん。
646:デフォルトの名無しさん
16/01/11 00:57:46.87 MPguxAcm.net
すげえな連休中asキャストで潰すとかw
うらやましいわ
647:デフォルトの名無しさん
16/01/11 00:59:31.22 FmNI4iA+.net
誰かが別の型渡してもエラー起きなくていいんだ。
馬鹿じゃねーの。
648:デフォルトの名無しさん
16/01/11 01:02:11.73 gm1WMBnH.net
というか、>>639の説明もあんまり適切とは思えんね。
キャストが使ったプログラマが必ずしも仕様上常に正しい変換が行われることを意図しているとは限らないし、
(不適切な変換が行われて例外が投げられる場合もありうる仕様かもしれない)
asを使ったからってその逆とも限らない。
649:デフォルトの名無しさん
16/01/11 01:11:48.08 JvrlUDJ8.net
夜中も元気ね
650:デフォルトの名無しさん
16/01/11 01:13:42.52 JvrlUDJ8.net
異常地味たじゃなくて十分異常だよこれはww
毛の壁に匹敵するわ
651:デフォルトの名無しさん
16/01/11 02:53:52.16 dvaW+Y9E.net
>>644
論理をすりかえるなよ
意図した型じゃなかった時に次の行に進んで良いかどうかだ
652:デフォルトの名無しさん
16/01/11 08:14:31.32 cVa7oOJ2.net
>>647
そんなこと書いてない。
馬鹿じゃないのか
653:デフォルトの名無しさん
16/01/11 08:15:27.33 cVa7oOJ2.net
ていうか書いてあろうがなかろうが、次の行に進むかどうかが何か意味を持つと
本気で思ってるなら酷い馬鹿だ。
654:デフォルトの名無しさん
16/01/11 08:21:44.29 cVa7oOJ2.net
っていうか、もう3回ぐらい書いたはずだけど>>647みたいなのは
デバッグと例外処理の区別がついてないからこういう頓珍漢なこと言うんだろうね。
「バグがあっても検出できないじゃないか!!!」ってそれは例外処理じゃなくてデバッグしろよって。
まあ恐らく言っても分からない。
655:デフォルトの名無しさん
16/01/11 08:32:48.19 gUndm2es.net
意味不明
バグを検出したからデバッグするんだろ
656:デフォルトの名無しさん
16/01/11 10:12:59.68 vXiBlDdD.net
議論がwhileループしているような気がします
657:デフォルトの名無しさん
16/01/11 10:48:12.65 D1R/kCSG.net
そういう芸風なの
658:デフォルトの名無しさん
16/01/11 10:56:55.03 D1R/kCSG.net
彼がキチガイだってのは連休中のやり取りで十分理解できたでしょ
すでに感染して流せなくなっちゃった奴はともかく
そうじゃない奴は迂闊に近寄っちゃ駄目
感染っちゃうよ
659:デフォルトの名無しさん
16/01/11 11:13:41.89 D1R/kCSG.net
この人は
・「馬鹿」もしくは「幼稚」をほとんどのレスに含む
・「>>>数字みたいな」の安価を含む
・句読点は入れる派だけど完璧じゃない
が特徴なので分かりやすいはずです
ちなみに222も同じ人です(4回連続で馬鹿って書いてますね)
660:デフォルトの名無しさん
16/01/11 14:00:12.87 LfDMv3TV.net
本人が見てる所で指摘してしまったら意味がないような?
661:デフォルトの名無しさん
16/01/11 18:46:35.40 U/eWhfN7.net
>>650
君はテスト実施しないのかなw?
テスト済みならデバッグコードを組み込む必要はないんだけとw?
662:デフォルトの名無しさん
16/01/11 18:52:52.19 U/eWhfN7.net
そうか常にデバッグモードなのか。
そういう状況なら納得ですね。
663:デフォルトの名無しさん
16/01/11 21:33:20.63 Dzm9rVm2.net
>>657
馬鹿もこもまでくるとすがすがしいね。
どこにデバッグコードを組み込めなんて書いてある。
むしろそんなことをするなと言ってるんだけど。
664:デフォルトの名無しさん
16/01/11 21:47:39.23 Dzm9rVm2.net
しかし、>>65-655
こんな幼稚なレスで勝ったつもりになれる奴って哀れだね。人間として終わってる。
こちらはちゃんとなぜasの方が使い勝手がよいか理由付きで書いてるのに、
噛みついてる奴は幼稚な人格攻撃かデバッグ段階で排除すべき可能性を例外で
検出しろとかいう類のよく分からない話しか出てこない。
あとは>>580ぐらいだけど、これもかなり無理がある。
665:デフォルトの名無しさん
16/01/11 21:48:16.78 Dzm9rVm2.net
>>654-655
666:デフォルトの名無しさん
16/01/11 22:03:09.58 Dzm9rVm2.net
しかし、自分で幼稚なこと書いておいてそれを指摘されると「あの人は幼稚って言葉を好むオカシな人です」って
凄い自己中心性だなw
ポジティブ思考と言えば聞こえが良いけどただの恥知らず。
667:デフォルトの名無しさん
16/01/11 23:39:23.51 EnmyN0sR.net
割と怒り心頭らしいな
でも完全に自分で蒔いた種だよね
668:デフォルトの名無しさん
16/01/12 00:24:36.31 8YRirrTO.net
asとか適当なことやったら、
今後間違ったコード追加したらエラー発生しないから、間違っていることにすら気づけないじゃん。
ところで、foreachにT[]の配列渡すとT型のitemを回せるけど、
T[].GetEnumrator()するとノンジェネリックのEnumratorが返るのはなぜ?
IEnumrable<T>が明示的宣言されているの?
669:デフォルトの名無しさん
16/01/12 01:14:45.93 7RSj72FG.net
最初に質問した者ですが、とりあえず初心者的にはキャスト使っておけばいいって事ですかね
荒れるような質問失礼しました
670:デフォルトの名無しさん
16/01/12 01:21:47.13 xcvGIOve.net
T[]にforeachの場合はGetEnumerator呼ぶんじゃなくて
もっと単純で効率的なILに展開されるようになっとるで
671:デフォルトの名無しさん
16/01/12 01:31:12.25 Cs06pQDp.net
> Starting with the .NET Framework 2.0, the Array class implements
> the System.Collections.Generic.IList<T>, System.Collections.Generic.ICollection<T>,
> and System.Collections.Generic.IEnumerable<T> generic interfaces.
> The implementations are provided to arrays at run time, and as a result,
> the generic interfaces do not appear in the declaration syntax for the Array class.
> In addition, there are no reference topics for interface members
> that are accessible only by casting an array to the generic interface type
> (explicit interface implementations).
672:デフォルトの名無しさん
16/01/12 01:32:50.51 8YRirrTO.net
そうなんだ。勉強になる。
だけど、疑問はGetEnumrator<T>が実装されてないのか。
パフォーマンス的な問題??
673:デフォルトの名無しさん
16/01/12 01:35:39.33 8YRirrTO.net
>>667
ありがとう。
なぜ明示的なんだろう・・・?
674:デフォルトの名無しさん
16/01/12 01:38:39.32 rxS/9o6U.net
>>664
その「配列とGetEnumratorとジェネリックの謎」はみんなが通る道と思う
んで調べまわった挙句
URLリンク(msdn.microsoft.com)
にコソーっと一文書いてあるだけという
俺も毎回これ忘れた頃に調べなおしてる
675:デフォルトの名無しさん
16/01/12 01:48:37.39 8rTTpObL.net
IEnumrable<T>の引数にすればOK
インデックスアクセスが必要ならIList<T>になるのが微妙だけど
676:デフォルトの名無しさん
16/01/12 02:00:27.12 iDDwmGx/.net
>>664
IEnumerator e = array.GetEnumerator();
使うときは、(型名)e とキャストすれば、
T型しか入っていないから安全
677:デフォルトの名無しさん
16/01/12 02:35:52.19 tu2jRtps.net
>>664
だからバグってのはデバッグ作業で洗い出すものであって例外で検出するものじゃない。
バグが残ってた場合でも安全側に倒せるとか言いたいのかもしれないが、普通asやキャストを使う目的は
変換後のオブジェクトを操作するためなんだから、asを使ったところでその段階で例外が起こるんだから同じこと。
678:デフォルトの名無しさん
16/01/12 04:03:23.28 vzKvvw6W.net
じゃあプログラムのスタートポイントにtry catch入れておけよ。
デバッグで潰すんだからいいよな。
679:デフォルトの名無しさん
16/01/12 08:00:08.31 8rTTpObL.net
as でキャスト失敗 → 操作すると NullReferenceException
() でキャスト失敗 → そこで InvalidCastExcepton
どっちがバグが分かり易い?
680:デフォルトの名無しさん
16/01/12 08:24:17.06 EEhodjTq.net
>>675
どっちも同じ。
どちらの例外もなぜその例外が発生したかの情報は何も与えてくれない。
バグは変換そのものではなく、返還対象の変数にオブジェクトが格納される箇所にあるのだから当たり前だ。
681:デフォルトの名無しさん
16/01/12 08:31:04.57 EEhodjTq.net
だから最初から言ってるように、例外を投げないからasを避けてキャストを使え、なんて理屈を認めるのなら
TryXXXパターンについても同様でなければならない。
例外投げるメソッドよりTryXXXを好んで使うけどasはダメ、なんて態度は頭の悪い論理矛盾でしかない。
682:デフォルトの名無しさん
16/01/12 09:02:58.57 8rTTpObL.net
>>676
InvalidCastExceptonてだけでキャスト失敗したんだって一目で分からない?
Dictionaryの値取得も全部TryGetValue使うの?
凄いソースになりそう…
683:デフォルトの名無しさん
16/01/12 09:39:04.39 8YRirrTO.net
デバッグ済んでる(バグない)から大丈夫だよw
バグ出さない人がなぜデバッグしてるのか不思議w
684:デフォルトの名無しさん
16/01/12 11:15:58.30 sWEOWf3Z.net
デバッグ段階はともかく、本番だとバグが有ってもそれなりに動くほうが大事じゃね?
まあ記録は残せるようにした方がいいけど放置でも問題ない場合も少なくない
685:デフォルトの名無しさん
16/01/12 16:50:04.88 4jtZl+9X.net
>>673
デバッグってのは、バグが出てから修正する作業の事を言うんじゃないのか?
バグが無いかチェックするのはテストだろ
686:デフォルトの名無しさん
16/01/12 19:58:37.10 KW/Xw3D4.net
>>680
ソフトによるとしか言えんわな
かね扱うソフトでテキトーな結果出されても困るし
>>681
言葉遊びしたいなら、チラシの裏にでも書いとけよ…