- 1 名前:デフォルトの名無しさん mailto:sageteoff [2015/03/18(水) 18:08:26.52 ID:irwZfv9C.net]
- 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 >>980を踏んだ人は新スレを建てて下さい。 >>980が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part114 peace.2ch.net/test/read.cgi/tech/1419512512/ ■関連スレ C#, C♯, C#相談室 Part86 peace.2ch.net/test/read.cgi/tech/1419608259/ ■コードを貼る場合は↓を使いましょう。 ideone.com/
- 913 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 02:36:45.32 ID:RyZIYf8u.net]
- between、、、
- 914 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 02:49:11.94 ID:9tUPOc+y.net]
- null許容型(int?とか)ってあまり?使わない方が良いって聞いたんですが、なぜですか?
- 915 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 03:25:56.90 ID:AoMT9Nrc.net]
- データベース以外でってこと?
- 916 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 03:58:23.92 ID:9tUPOc+y.net]
- すみません、あやふやなんですが何かの掲示板(多分2ch)で
結構前に「null許容型はやめろ(クソ)」的なレスが結構続いてたので、聞いてみました 逆にデータベースでは、例えばBooleanならtrueとfalse以外「値が未設定」を表現するために nullを使うと思いますが、そういう用途ではOK(問題ない)という事ですか? また、逆に問題が出る使用例があれば教えて下さい。
- 917 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 04:24:21.76 ID:AoMT9Nrc.net]
- >>885
ここ読んでさらに疑問があれば質問すれば https://code.msdn.microsoft.com/windowsdesktop/7-null-null-null-48ae7f82 むやみに使うのではなく使うことで可読性が良くなりバグも減るなら使えばって感じのこと書いてある
- 918 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 04:35:41.24 ID:AoMT9Nrc.net]
- データベースでNULLを排除したコードを書くのは非現実的だとも書いてある
- 919 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 04:55:25.65 ID:9tUPOc+y.net]
- >>886
ありがとうございます
- 920 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 08:39:43.88 ID:6xoEPUUH.net]
- >>881
convertでyymmにして拾うのとどっちが早いんでしょう C#じゃないけど
- 921 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 15:26:37.90 ID:Sta9LMr5.net]
- WebでSQLを使うときはSQLインジェクションが起こらないように注意して作らんとな
- 922 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 13:39:30.86 ID:kfPim06m.net]
- WPFでボタンをクリックするとウェブページを非同期で取得するプログラムを
書いたのですが 自作ライブラリ内でこのように記述するとtask.Wait();でGUIが応答しなくなります var task=GetWebPageAsync(webUri); task.Wait(); string htmlText = task.Result ; 処理を追ってみるとGetWebPageAsyncメソッド内の下記の部分のあと GUIが表示され処理が中断されるみたいです HttpResponseMessage res = await client.GetAsync(uri);
- 923 名前:理由がよくわからないまま
string htmlText= await GetWebPageAsync(webUri); と書き直すと処理が実行されました 何が問題なのでしょうか [] - [ここ壊れてます]
- 924 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 13:55:31.70 ID:lMyegDBc.net]
- >task.Wait();
>string htmlText = task.Result ; ここでバリバリ終了を待ってるじゃん。バリバリ。
- 925 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 13:59:45.12 ID:kfPim06m.net]
- もう一つわからないのが>>891で取得したデータを
HogeItemsに設定してListBoxにバインドしているのですが ListBoxに表示されません ページの取得とプロパティの値に設定は出来ています MVVMフレームワークとしてPrismを使用してます <ListBox ItemsSource="{Binding HogeItems}" Height="500"> <ListBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Title}"/> </DataTemplate> </ListBox.ItemTemplate> </ListBox> コンストラクタ内 SearchCommand = new DelegateCommand(() => {HogeSearch();}); private async void HogeSearch(){ var list = await Hoge.SearchAsync(); this.HogeItems = new ObservableCollection<HogeItem>(list);}
- 926 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 14:22:19.59 ID:kfPim06m.net]
- >>892
それが下記サイトを参考にコンソールアプリで作っていたときは 問題なくタスク完了したのですが WPFで利用するとGUIがフリーズしてタスクが完了しません フリーズするだけならわかりますが、タスクが完了しないのがなぜなのかわかりません .NET TIPS:Html Agility Packを使ってWebページをスクレイピングするには?[C#、VB] - @IT www.atmarkit.co.jp/ait/articles/1501/27/news140.html .NET TIPS:HttpClientクラスでWebページを取得するには?[C#、VB] - @IT www.atmarkit.co.jp/ait/articles/1501/06/news086.html 上のページから抜粋 webTask.Wait(); // Mainメソッドではawaitできないので、処理が完了するまで待機する
- 927 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 14:30:33.50 ID:LLinkmjy.net]
- HogeItemsプロパティの変更通知はちゃんとしてるのか?
- 928 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 15:38:30.48 ID:kfPim06m.net]
- HogeItemのプロパティに変更通知を設定しないとだめだったんですね
ObservableCollectionに入れれば必要ないと思ってました
- 929 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 19:48:54.41 ID:DTddCrxB.net]
- >>891
コンソールアプリとwpfみたいなguiアプリではTaskの実行コンテキストが違うからってのがあるかな。 メインでResultを受け取るには、awaitの後にConfigureAwait(false)が必要。 var ret = await Abc().ConfigureAwait(false); 別のやり方としては、WaitとかResultで受け取らず、ContinueWithで以降の処理を囲むという手もある。 まあ、この方法はイベントハンドラの中の改変量が多くなるけど c# Task 実行コンテキスト 辺りの言葉で探してみるといいよ
- 930 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:12:55.47 ID:cqLm13Og.net]
- 知ってると思うけどasync/awaitを使う関数はTaskもしくはTask<T>を返さないといかんよ
- 931 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:52:29.17 ID:+trI441A.net]
- >メインでResultを受け取るには、awaitの後にConfigureAwait(false)が必要。
何言ってるんだこのばかは
- 932 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 21:47:59.99 ID:lMyegDBc.net]
- つまりスレの総意としては、「初心者にasync/awaitを触らすな」でおkだな
- 933 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 21:55:16.01 ID:TcFd+yBB.net]
- >>898
正確には「イベント処理だけはvoidでそれ以外はTask/Task<T>を返すべき」って事だな neue.cc/2013/10/10_429.html ここに async void がまずい理由がうまくまとめられてる あと stackoverflow.com/questions/14177891/can-somebody-please-explain-async-await こういう所を読めばasync/awaitの意味が直感的に理解できるだろ 最初からUIせずにまずコンソール画面
- 934 名前:で遊んでみるといいと思う []
- [ここ壊れてます]
- 935 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:05:16.30 ID:8z426iG1.net]
- そもそも結果を返さない非同期処理は避けるべきだろ
Taskで副作用やると簡単にスパゲッティの出来上がり
- 936 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:10:43.83 ID:TcFd+yBB.net]
- だな
永久ループのTaskとか誰得
- 937 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:20:52.29 ID:/J4bS24z.net]
- 今までWeb系とかやったことなくてASP.NET MVC5実践プログラミングっての買って触ってみてるんだけど、
新しいWebサイト追加したらファイルがものすごい数できてワロタ・・・みんなこれをすいすい使えるとかすげえな・・・
- 938 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:34:28.57 ID:XZhIE+dJ.net]
- 大丈夫
ほとんどのドカタは理解せずに使ってるだけ
- 939 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:37:28.27 ID:jqzDD9Cy.net]
- 拡張子aspxで(特に速度面で)まともなサービスを見たことがない
理解せずにドカタが使ってるという指摘は恐らく正しいのだろう
- 940 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:40:59.12 ID:/J4bS24z.net]
- まじか。まあ自分も触って2日目だから諦めずに進めるよ。がんばって一流の土方になるよ
- 941 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:41:40.43 ID:8z426iG1.net]
- Webなんか所詮来たリクエストに文字列返すだけやで
- 942 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:43:07.86 ID:G2Z5fyBt.net]
- ASP.NET MVCは.aspxより体感で10倍ぐらい遅い。
ログインページとかのチンケなビューを表示させるだけで 相当な処理時間を要する。
- 943 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:50:54.07 ID:/J4bS24z.net]
- aspxっていうのはweb Formsっていう認識であってます?
ネットで調べたときはMVCが主流とあったので、先攻してMVCをやってるんだけど、 まだ結構業務とかでは使われてるものですかね? 一応赤間信幸さんのWebアプリケーション構築技法っていう本を 数百円でゲットしてあるので平行して進める予定です。
- 944 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:50:58.15 ID:fbUsRR4f.net]
- MVCってそんなに遅いの?
- 945 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:53:29.97 ID:8z426iG1.net]
- 使い方が間違ってるだけ
- 946 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 00:14:50.49 ID:6NbSjz3o.net]
- >>898
>>901 データバインディングと非同期 ? C# Advent Calendar 2014 | kekyoの丼 www.kekyo.net/2014/12/21/4638 ※一部抜粋 この例は本物(CLR)のイベントハンドラではありませんが、 ICommandによって間接的に呼び出されるコールバックとして、 広義において同じと見なしても良いと思います。 このように説明されていたのでasync voidを使用したのですが問題有りますか? そもそもAction型なので戻り値が設定できません コンストラクタ内 SearchCommand = new DelegateCommand(() => {HogeSearch();}); private async void HogeSearch(){ var list = await Hoge.SearchAsync(); this.HogeItems = new ObservableCollection<HogeItem>(list);}
- 947 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 00:59:43.49 ID:Eju8VvyX.net]
- >>913
そういうのは、イベントと同じで仕方なくasync voidを使うケースになるんじゃないかな。 それしか手段がないということで。
- 948 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 01:25:55.14 ID:izkJyB4/.net]
- 実行中の他のフォームに対してString^を渡したいんですけど、C#の超初心者なんで、
EnumWindowsでタイトルを探してHWND取得して、マーシャルした*TCHARでグローバルATOMを作成して SendMessageで渡すという方法くらいしか思いつきません なんかかっこいい方法ありませんか?
- 949 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 01:31:29.80 ID:tXGVZqg3.net]
- async/awaitの使い方に関してはこの辺り読んどけ <
- 950 名前:br>
http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html https://msdn.microsoft.com/ja-jp/magazine/jj991977.aspx [] - [ここ壊れてます]
- 951 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 01:47:17.82 ID:1taOWumU.net]
- >>913
値を返す必要がない非同期なんだからTask.Factory.CreateNewでWaitなしでも同じ事だね
- 952 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 01:52:04.59 ID:1taOWumU.net]
- おっと間違えてた
メソッドのなかでさらにawaitやってるんだからメソッドの中でTask.Factory.CreateNewやればいいな asyncを使う必要性はむしろ例外が投げられた時に適切に対処出来るかどうかに関係する
- 953 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 08:03:29.48 ID:XweApYF/.net]
- >>915
プロセス跨ぐならIPC 跨がないなら普通にメソッド呼べ
- 954 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 22:51:37.10 ID:4BNFPd6R.net]
- ポリモーフィックな処理を書きたいときって
インターフェースを使うのと仮想メソッドを使うので理論的にはどっちが速いの?
- 955 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 23:39:26.50 ID:AiijB2ck.net]
- 変わらないんじゃないの?実測するしかないけど
abstructとvirtualの違いだよね?abstructは全てvirtualであるためなのか virtualを付けるとコンパイルエラーになる それからインターフェースのBaseを呼び出す事が出来ない インターフェースは多重継承みたいな事をしたい時に使ってるけど
- 956 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 09:06:24.07 ID:t3F14P3X.net]
- デフォルトのawaitの外側でWaitしたらあかんよ。
- 957 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 09:08:41.27 ID:t3F14P3X.net]
- デッドロックするからね。
awaitは処理完了後UIスレッドに続きを実行させようとするが、Waitで完了待ちしてるからUIスレッドはいつまで待っても空かない。 双方待ちあってデッドロック。
- 958 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 09:10:44.89 ID:t3F14P3X.net]
- それを防ぐにはawaitのときにConfigureAwait(false)するなりが必要。
- 959 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 09:13:12.96 ID:t3F14P3X.net]
- つまり>>897は正しいわけだけどいきなりバカ言われて終わってるな。
- 960 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 09:17:28.88 ID:jZs8Gwbi.net]
- Twitterと勘違いして単文連投してんのか?ボケ
片山MZも似たような病気発症してるよな アスペに共通する病なのか?
- 961 名前:デフォルトの名無しさん [2015/07/03(金) 09:17:49.13 ID:aTUcbAAr.net]
- WPFでDataGridのItemSourceにObservableCollection<MyData>をBindingしているのですが、
ObservableCollection<MyData>の特定のデータを変更した際に、DataGridのスクロールを変更があったデータの位置(行)に移動したいです。 どのようにすればいいでしょうか?
- 962 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 09:42:07.68 ID:3rp9Mnby.net]
- >>925
ワロタ たしかにそうだな
- 963 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 09:43:40.63 ID:mX8fKKOT.net]
- VMの変更時にメッセンジャーとか使ってVに通知してScrollIntoViewすればいいんじゃない
- 964 名前:デフォルトの名無しさん [2015/07/03(金) 09:47:04.79 ID:aTUcbAAr.net]
- >>929
ありがとうございます、やってみます
- 965 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 09:55:39.32 ID:xTjRlvwx.net]
- >>930
ScrollIntoViewは仮想化切らないとマトモに動かないから中尉
- 966 名前:デフォルトの名無しさん [2015/07/03(金) 10:45:26.48 ID:JghQIuWO.net]
- asp.net mvc でdbにsqliteを使うことはできますか?
- 967 名前:デフォルトの名無しさん [2015/07/03(金) 10:54:35.26 ID:aTUcbAAr.net]
- >>931
ありがとうございます。 参考にさせて頂きます。
- 968 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 11:50:01.29 ID:7czX/gB0.net]
- >>932
使えるって実用に耐えるかってことなら無理だね。 素直にSQL Serverを使うべき。
- 969 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 12:11:33.74 ID:SPEM/1YO.net]
- >>920
インターフェイスは重い、仮想の方が速いってのが基本ではあるけど、最適化技術も進んでるので条件によってはほとんど変わらない。 まあでもやっぱり仮想の方が速いかな。
- 970 名前:デフォルトの名無しさん [2015/07/03(金) 12:23:00.35 ID:JghQIuWO.net]
- >>934
実用に耐えれなくても大丈夫です。 sql serverだと勝手に色々
- 971 名前:やってくれて便利すぎるのでsqliteとかで中身理解しながら勉強したいなと思って []
- [ここ壊れてます]
- 972 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 14:23:52.58 ID:rDeS7aaJ.net]
- それはDBMSじゃなくてORMの問題かと
SQLServerでいいからEF使わないで直接DbConnectionでSQL投げたらいい
- 973 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 15:42:42.38 ID:7czX/gB0.net]
- >>936
sqliteなんてサブセットだからちゃんとしたDBを学んだ人間が使うべきもの 勉強ならSQL ServerやPostgreSQLで学ぶべき
- 974 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 15:47:24.03 ID:uO8sjm4v.net]
- 別に何を使ったっていいだろ
sqliteはスタンドアローンで動くしユーザーやら何やらDBサーバー側の設定を気にせず使えるからとっかかりは楽だと思う
- 975 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 15:48:54.97 ID:lmzcW47C.net]
- >>923
そうそうそうなんです、UIスレッドに戻ろうとして Task.Waitで止まってます わかりやすい、ありがとうございます ってことは@ITのコードはコンソールアプリじゃないと機能しないようなものなんですね
- 976 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 15:51:50.93 ID:7czX/gB0.net]
- >>939
じゃあそれでいいです。
- 977 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 16:06:51.66 ID:jZs8Gwbi.net]
- だよな!
- 978 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 16:07:54.64 ID:lmzcW47C.net]
- qwerty2501.hatenablog.com/entry/2014/04/24/235849
ここがすごくわかりやすく説明してた 上記サイトの一文 ・基本的にはライブラリ内でawaitする場合はConfigureAwait(false)すること 自分の問題はここだった WebPageをダウンロードするライブラリを利用するメインで 例外をキャッチしたかった
- 979 名前:デフォルトの名無しさん [2015/07/03(金) 19:24:19.48 ID:JghQIuWO.net]
- >>937
まだ勉強不足なんですけと、dbcontextを継承してそれをいじくるんですかね? 来週色々試してみます!
- 980 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 19:58:43.81 ID:uMdddorU.net]
- DBの勉強したいならEFの再発明を1回やっとけばおk
- 981 名前:デフォルトの名無しさん [2015/07/04(土) 02:55:41.29 ID:A6eGrjpU.net]
- >>945
メンバ名とカラム名を自動で紐付けるような感じですよね
- 982 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 12:41:38.87 ID:u/y4FI+O.net]
- それだけじゃないけどな
クエリの動的生成やら更新の追跡やら自前でやると結構めんどくさいよ
- 983 名前:デフォルトの名無しさん [2015/07/04(土) 13:34:46.43 ID:YKtPOMLD.net]
- 更新の追跡ってなんですか??
- 984 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 15:34:35.19 ID:Yn2KkVMN.net]
- JavaのjBatchのようなバッチ処理のフレームワークありませんか?
- 985 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 16:55:53.12 ID:y9JP5enm.net]
- www40.atwiki.jp/spellbound/pages/1405.html
ここを見てストップウォッチを作っているのですが、うまくいきません 基本的な事が出来たのでテストすると、1時間までは正常表示されるのですが 1時間以上経過すると「分」を表示する部分が「2時間235分」とか表示されてしまいます // start押したら計測開始 time_A += Time.deltaTime; // Textコンポに表示 timer_A.text = Mathf.Floor(time_A / 3600f).ToString() + "時間 " + Mathf.Floor(time_A / 60f).ToString() + "分 " + Mathf.Floor(time_A % 60f).ToString(); やってる事はunityですが質問はC#だと思うので、こちらで質問させて頂きました 何かアドヴァイスを頂きたいのですが、どうしたらいいでしょうか?
- 986 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 16:58:18.01 ID:YYyieqqT.net]
- 例えば2時間30分のときにtime_Aにはどんな値が入ってて、それを60で割って表示したらどんな値が出力される?
- 987 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 17:08:41.01 ID:y9JP5enm.net]
- >>951
time_Aには9000・・・? 60で割ると150ですかね あまり自信ないです・・・
- 988 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 17:12:12.71 ID:YYyieqqT.net]
- >>952
150になるなら、2時間150分って表示されることになるだろ?だから150になるような計算じゃなくて30になるようにしないと駄目
- 989 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 17:15:47.28 ID:Rsiji3ml.net]
- ヒントは秒の所に
- 990 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 17:17:33.59 ID:y9JP5enm.net]
- >>953
あー・・・なるほど たぶん分かったと思うので、試してみます ありがとうございました。
- 991 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 17:25:47.09 ID:yvuAj/xu.net]
- >>950
まんまstopwatchクラスとかあるんだが
- 992 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 21:42:25.14 ID:aXZfp9EM.net]
- ま、誰もが一度は通る細道よ
もぞもぞっとしてああそうか、で終わりよ
- 993 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 08:30:09.15 ID:U6+aOXmn.net]
- C#もメソッドの複数戻り値欲しい
対応する他の言語も増えてるんだし あ、Tupleは論外です
- 994 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 08:41:53.84 ID:TS0XlDWE.net]
- 言語仕様にごちゃごちゃ言えるレベルかよ
コード書いてろよタコ
- 995 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 08:46:01.63 ID:ZxkWSQzJ.net]
- その複数の戻り値を格納したクラスのオブジェクトを返せばいいだけでは
- 996 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 09:23:42.50 ID:pk39sm1t.net]
- dynamicでむちゃくちゃシンプルに複数戻り値のメソッド記述できるだろ
- 997 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 09:53:13.21 ID:PjK/lpsq.net]
- 連想配列を使うのが流行ってる
- 998 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 11:46:55.79 ID:kBfZhVx2.net]
- >>958
なぜ論外なのか教えてください
- 999 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:12:07.88 ID:qt5SIPya.net]
- メソッドから複数の戻り値返せるような言語の例をあげて欲しいんだが
- 1000 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:15:50.25 ID:EDjn9D6L.net]
- Go、Scala、python、perl、ruby
- 1001 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:17:20.40 ID:IXTBYhaq.net]
- tuple返したらだめなん?
- 1002 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:18:44.80 ID:mRhwc0pv.net]
- >>961
どうやるん?
- 1003 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:19:07.82 ID:sTXZljFQ.net]
- >>960
それだと最大でメソッドごとにクラスが必要でクラスごとにプロパティを持つことになりますね これが陳腐、非生産的なので複数戻り値をサポートする言語が増えています >>961 dynamicは実行速度が低速なので論外です
- 1004 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:28:03.41 ID:WTwMH7IK.net]
- C#にも匿名型があるじゃん
- 1005 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:30:19.81 ID:sTXZljFQ.net]
- ほぅ、では匿名型で書いてみましょうか
どうなると思います?
- 1006 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:40:17.61 ID:qt5SIPya.net]
- >>965
Goは確かにできるみたいだな。これは面白そうではあるけど それ以外で直接、複数戻り値返せるのはなさそうだけど? あくまで戻してるのは配列やリストだろ。それを複数変数に一括代入できるだけで だったらC#でもオブジェクトの配列でも戻せば良いんじゃね オブジェクト指向としての設計方針がどうなのかはしらんが 匿名クラスが戻り値に指定出来れば面白いかもしれんのだがなぁ 出来ない事は無いような気がするんだが、やらない方針なのか
- 1007 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:43:35.50 ID:pk39sm1t.net]
- >>967
private void button1_Click(object sender, EventArgs e) { var packed = GetHoge (); if (packed.IsOK) { textBox1.Text = packed.Name; } } private dynamic GetHoge () { return new { Name = "ほげ", IsOK = true }; }
- 1008 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:48:04.38 ID:TS0XlDWE.net]
- うんこに触りまくりだなキミら
- 1009 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:49:18.70 ID:pk39sm1t.net]
- >>968
速度が必要なところではクラスを使って問題ないところでdynamic 使い分けがめんどくさいなら他の言語に行けば
- 1010 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:54:29.41 ID:EDjn9D6L.net]
- >>971
内部的にはどの言語も戻してるのは配列やリストだし、C#でも同じことはできるが 例えばperlなら下のように簡単にできるってのがメリットってだけだからな sub a { return (123, "abc"); } my ($aaa, $bbb) = a();
- 1011 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 13:00:51.91 ID:mRhwc0pv.net]
- >>972
ありがとー 名無しクラスで
- 1012 名前:返すのか []
- [ここ壊れてます]
- 1013 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 13:15:07.21 ID:qt5SIPya.net]
- 匿名型は型もってるけど、ダイナミックは結局Object型だからなぁ
結局のとこタイプセーフどうすのって話になるかと なんか構想はあるみたいだな https://ufcpp.wordpress.com/2015/02/11/c-7%E3%81%AB%E5%90%91%E3%81%91%E3%81%A68-tuples/
|

|