1 名前:デフォルトの名無しさん mailto:sage [2020/05/27(水) 20:28:41.27 ID:Pggemlyq0.net] !extend:checked:vvvvv:1000:512 次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為) 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください >>980 を踏んだ人は新スレを建てて下さい。>>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part147 mevius.5ch.net/test/read.cgi/tech/1582100741/ ■関連スレ C#, C♯, C#相談室 Part94 mevius.5ch.net/test/read.cgi/tech/1553075856/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■情報源 https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index https://docs.microsoft.com/en-us/dotnet/standard/class-libraries referencesource.microsoft.com/ ・Insider.NET > .NET TIPS - @IT https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html ・DOBON.NET .NET Tips https://dobon.net/vb/dotnet/index.html VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
88 名前:デフォルトの名無しさん (ワッチョイ 15f1-GwrY) [2020/06/06(土) 16:11:02 ID:9mdgv8nE0.net] C#をはじめたのですが この動画シリーズってどれくらい見る価値ありますか? https://m.youtube.com/user/VisualStudioJapan/videos
89 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 21:00:20.86 ID:ve9u+1kO0.net] グローバルフックでマウスイベントもキャプチャー
90 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 21:06:41.96 ID:xeyYLdg20.net] >>88 一切見なくていい そんなもんよりハーバード・シルトの独習C#か↓のサイト見るほうがはるかにいい https://ufcpp.net/study/csharp/
91 名前:デフォルトの名無しさん (ワッチョイ 4d01-Alfg) mailto:sage [2020/06/07(日) 23:13:19 ID:wGMDE0oz0.net] >>86 さんくす、それならごく普通につくられたアプリならUI Automation使えそう 便利で面白そうなのに、あまりメジャーじゃなさそうなのはなぜなんだろ
92 名前:デフォルトの名無しさん [2020/06/09(火) 06:21:44.92 ID:UwuOEQTZ0.net] https://docs.microsoft.com/ja-jp/dotnet/core/tools/dotnet ここを見てやってるんですが、最初の1ページ目のサンプルで失敗します。 A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found in 'C:\Program Files\dotnet'. 調べても英語の人の書いたブログしか出てこないのですが、 どうすれば解決できますか
93 名前:92 [2020/06/09(火) 06:40:31.85 ID:UwuOEQTZ0.net] VisualStudioをアップデートしたら動きました。。。orz
94 名前:デフォルトの名無しさん [2020/06/09(火) 09:37:00.46 ID:sE3YfRh/F.net] dotnet を get して最初にすることは dotnet の update
95 名前:デフォルトの名無しさん [2020/06/09(火) 13:06:57.31 ID:dFHXVz0lH.net] IT掲示板群 ttp://x0000.net/forum.aspx?id=15 学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net 数学 物理学 化学 生物学 天文学 地理地学 IT 電子 工学 言語学 国語 方言 など simulationライブラリで純粋な関数式プログラミングをする ttp://x0000.net/topic.aspx?id=3631-0 UIライブラリ (C#, 2D) を作ったよ ttp://x0000.net/topic.aspx?id=3688-0 連続と離散を統一した! ttp://x0000.net/topic.aspx?id=3709-0 4Dエンジン(画像有り) ttp://x0000.net/topic.aspx?id=3677-0 matrixのライブラリ ttp://x0000.net/topic.aspx?id=3711-0 ある強力なFor関数 ttp://x0000.net/topic.aspx?id=3630-0 SQLライブラリ ttp://x0000.net/topic.aspx?id=3675-0 PS malloc / free を実装してみた (C#) ttp://up.x0000.net/files/TMallocTest.zip
96 名前:デフォルトの名無しさん [2020/06/11(木) 11:07:24.07 ID:/xGObRM50.net] ウルフエディターはC++で作られているようです 2dなのにc++にするメリットはあるんでしょうか テクスチャの移動程度ならC#でできますよね
97 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 11:24:51.54 ID:FQtHxjiy0.net] 本人に聞けよ
98 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 12:11:06.04 ID:BgpDRRce0.net] そもそもC#でできるならC++である必要がないという理由がわからん
99 名前:デフォルトの名無しさん [2020/06/11(木) 12:40:59.96 ID:/xGObRM50.net] 3dならC+しか選択肢がないと思いますが、C#ならopenglは使わないと思います
100 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 12:55:24.94 ID:BgpDRRce0.net] C++しか選択肢がない? 例えばUnityならC#でOpenGL使ってるけど?
101 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 12:59:05.56 ID:BgpDRRce0.net] エンジンの話だというならたとえが悪かったかもしれんな 別にUnity上でウルフエディタと同じものも作れるから最終的には一緒だけど
102 名前:デフォルトの名無しさん [2020/06/11(木) 13:00:57.60 ID:JpYLw7MRF.net] WPF
103 名前:デフォルトの名無しさん [2020/06/11(木) 13:11:12.03 ID:/xGObRM50.net] >>101 へぇ UWPというやつですかね
104 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 14:06:50.15 ID:BgpDRRce0.net] 全然違う
105 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 17:27:54.49 ID:yAt1qMQq0.net] >>96 .>99 仕事のなら発注元の指定、趣味ならば好みなのでメリット/デメリットって気にする ことないと思うよ 複数の言語に堪能でそれぞれの言語特性に合わせてアプリケーション毎に言語を 選定してプログラムを組んだり発注したりするより、一番使い慣れた言語でやるのが 普通じゃないかな c#でdllimportsてWin32apiを使うなんてアンマネージなコードは邪道だとか 言われてもc#が良いんだって人は普通にいるので、簡単なGUIプログラムもC++が 手っ取り早いってことなんでしょう
106 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 20:35:54.13 ID:vRuHoTo/0.net] みなさんデータベース管理システムは何使ってますか? 普段よく使うとか、使いやすいってRDBMSを教えてください 小規模で自分一人で開発でってのを想定で
107 名前:デフォルトの名無しさん [2020/06/11(木) 20:49:36.46 ID:yGmpvECN0.net] oracle
108 名前:デフォルトの名無しさん (ワッチョイ ff6a-MAAn) mailto:sage [2020/06/11(木) 20:56:11 ID:Ab3iv8TC0.net] 小規模ならSQLiteでいいんじゃね
109 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 21:15:03.03 ID:Zjp+nhQg0.net] Access
110 名前: mailto:sage [2020/06/11(木) 21:21:44.50 ID:bLG5zewl0.net] >>106 postgresql
111 名前:デフォルトの名無しさん (ワッチョイ 3378-NjyN) mailto:sage [2020/06/11(木) 21:34:56 ID:5OqhWY9w0.net] .NET 使うんなら SQLServer 一択じゃね?
112 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 21:42:34.54 ID:qibdIRpR0.net] >>111 EF CoreチームにNpgsqlのメンテナーが入っていることもあって、PostgreSQL対応はかなり手厚い
113 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 22:17:10.79 ID:tnq3MU310.net] Postgresは大文字小文字問題なんとかしてくれ
114 名前:デフォルトの名無しさん (ワッチョイ ffad-E8/F) mailto:sage [2020/06/11(木) 22:27:34 ID:qibdIRpR0.net] >>113 ?
115 名前:デフォルトの名無しさん [2020/06/11(木) 22:49:15.03 ID:tnq3MU310.net] >>114 https://stackoverflow.com/questions/35914530/case-insensitive-name-of-tables-and-properties-in-entity-framework-7 こういうの
116 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 22:54:47.74 ID:Yd9qBDmj0.net] >>106 普通Redis
117 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 22:58:40.14 ID:vRuHoTo/0.net] みなさんさんくす >>107 oracle使ってるの?有償で本格的なイメージ >>108 SQLiteいいですよね、お手軽そうで >>109 AccessってC#で使えるんですね、Access使い慣れてる人ならよさげ >>110 Postgreも人気ですね、SQLiteよりもいいのかな
118 名前: 111 SQLServerが一番に名前出てくると思ってました 112 PostgreはC#と親和性高いのかな 見事に割れてるような感じがするのですが、C#.netと相性がいい悪いより 使い慣れてるものを使ってる感じですか [] [ここ壊れてます]
119 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 23:01:51.55 ID:vRuHoTo/0.net] >>116 さんくす、初めて聞きましたRedis,NoSQLサーバーですか これから主力になっていくのかな
120 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 23:09:04.11 ID:Yd9qBDmj0.net] 目的が違うからRDBとは共存するんじゃね? 永続化が出来るのが他のKVSと違う所。
121 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 23:21:42.50 ID:5eBlYw+xa.net] C#との親和性とか言われてもなあ いまどき大抵のDBMSでEFも使えるから、極端な話DBMSを途中で乗り換えても C#で書き換えるのはconfigファイルの接続文字列とNuGetするパッケージだけ EF使わないならSQLの方言を気にする必要はあるけどそれは組み立てるStringが変わるだけだし DBMSに応じてC#ソースコードの書き方が変わるようなことは一切ない
122 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 23:49:42.34 ID:tnq3MU310.net] EFみないなORM使ってないとOracle->SQL Serverの書き換えとか地獄よ
123 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 02:18:27.53 ID:opbb+AId0.net] >>115 それが問題になるケースってどんなん?ASP.NET Core Identityとかも別に普通に使えてるけど
124 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 02:21:54.36 ID:opbb+AId0.net] >>120 親和性は今でも問題になるケースがあるよ OracleはEF Coreが出てから対応するまでに3年かかったし、EF Core3.0はOracleが対応する前にサポート期間が終わっちゃった。3.1のbeta版が少し前にやっと出たとこで、RTMになるころにはもうEF Core5が出てるw
125 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 03:34:44.54 ID:ZwJzd5pPd.net] >>120 >C#で書き換えるのはconfigファイルの接続文字列とNuGetするパッケージだけ >DBMSに応じてC#ソースの書き方が変わるようなことは一切ない これは嘘。DbContextOptionsBuilderの拡張メソッドはDBMSごとに異なるし、そのオプションも変わってくる。当然Migration用のコードは再度生成する必要がある。まあその程度で済むんだけどね。
126 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 03:36:16.16 ID:ZwJzd5pPd.net] 「NuGetする」って表現は初めて見たな。言いたいことはわかるけどw
127 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 10:19:25.67 ID:LH1ywJSs0.net] >>119 これからNOSQLも勉強しないとダメなのかサンクス >>120 さんくすねDBMSはどれ選んでもだいたい同じですか >>123-124 なるほどね、細かなところ互換性問題あるけど、それほど困ることもないですか まあDBMSコロコロ変更したりしないだろし、さんくす 欲をゆえば、これは定番でみんな使ってるし、迷ったらコレみたいのがあったらよかた
128 名前:デフォルトの名無しさん (テテンテンテン MM7f-3sqf) mailto:sage [2020/06/12(金) 10:33:37 ID:67KMUSUMM.net] オンプレかクラウドかにも依るだろう オンプレならできればDBの運用保守はベンダーに丸投げしたいところだが、 そこまでするほどの規模ではないならSQL Serverが比較的楽だろう クラウドだったら自分でインフラを管理する必要のない完全マネージドなサービスを選ぶべきだ 例えばAWSならPostgresベースのAurora、AzureならSQL Database(SQL Serverベース)になるだろうな
129 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 11:11:40.32 ID:kFexpNJ30.net] >>106 Ruby on Rails の3大DB は、 PostgreSQL, MySQL/MariaDB, SQLite ただし、SQLite は開発用のみ
130 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 20:30:56.85 ID:LH1ywJSs0.net] >>127 なるほど、クラウドなら相手先でだいたい決まってるんですね 結局仕事でプログラマやってる人はSQL全部やってそうな、さんくす >>128 さんくす、Webアプリと連携したりするならPostgreとかMySQLは必須っぽいですね
131 名前:デフォルトの名無しさん [2020/06/13(土) 00:57:45.04 ID:bzHb5W4o0.net] >>122 アノテーション必須なところ
132 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 01:09:18.28 ID:8SrQpLbj0.net] >>130 アノテーション?Javaと勘違いしてない? もしかして、[Column("some_column")]みたいなAttributeを明示的にプロパティに付与しなきゃってことを言いたいの?
133 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 01:10:23.05 ID:8SrQpLbj0.net] 最近はそもそもAttributeはあまり推奨されてないと思うんだけど…
134 名前:デフォルトの名無しさん [2020/06/13(土) 01:13:19.59 ID:bzHb5W4o0.net] 間違えた、そう、アトリビュートね 推奨されてないならますます必須なのは困るだろ
135 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 01:33:01.52 ID:8SrQpLbj0.net] Fluent APIが主流だっていう意味でAttributeは推奨されてないって言ったんだけど通じてない??
136 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 01:41:17.85 ID:8SrQpLbj0.net] naming conventionはかなり自由度が高いんだし、PostgreSQLならこんなプラグインもあるでしょ? https://github.com/efcore/EFCore.NamingConventions
137 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 01:44:19.43 ID:8SrQpLbj0.net] このプラグイン書いてるのもEF Coreのメンテナーだし、PostgreSQL対応は相当手厚いと思うんだけど…Oracleとは大違いw
138 名前:デフォルトの名無しさん [2020/06/13(土) 02:34:08.73 ID:bzHb5W4o0.net] 手厚いなら標準でサポートしろ
139 名前:デフォルトの名無しさん (ワッチョイ ffad-E8/F) mailto:sage [2020/06/13(土) 03:17:01 ID:8SrQpLbj0.net] 標準でサポートしてるAPI使ってるでしょ?
140 名前:デフォルトの名無しさん (ワッチョイ ffad-E8/F) mailto:sage [2020/06/13(土) 03:17:49 ID:8SrQpLbj0.net] 会話にならない…
141 名前:デフォルトの名無しさん (スッップ Sd1f-E8/F) mailto:sage [2020/06/13(土) 03:28:12 ID:wwBJVROwd.net] >>130 なぜ必須だと思いこんでしまったのか…少しググれば↑のプラグインも出てくるというのに。 DBMSによって異なる仕様を全てコアのライブラリに取り込んでしまうのはアンチパターン。拡張可能なエンドポイントを用意して、適切な粒度で分けないと。
142 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 03:44:26.62 ID:8SrQpLbj0.net] そもそもなぜAttribute必須(だと思いこんでいる)かって理由もまだ一言も聞いてないしね Fluent APIすら知らないようだし…
143 名前:デフォルトの名無しさん (ワッチョイ 6fc7-Z00E) [2020/06/13(土) 13:23:26 ID:K/U+GWpl0.net] rpgツクールみたいなソフトはC#とC+どちらがいいんでしょうか electronではだめなのですか?
144 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 13:48:37.68 ID:KtzqJ+vF0.net] 勝手にしろ
145 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 14:08:02.51 ID:o48rgnPS0.net] >>142 好きなやつでいいよ
146 名前:デフォルトの名無しさん (ワッチョイ f3da-lWkb) mailto:sage [2020/06/13(土) 14:47:15 ID:YToltj6/0.net] 普通マシンコード直打
147 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 23:27:18.32 ID:V91HObFW0.net] ツクールは、Ruby じゃないの? スレ立てるまでもない
148 名前:質問はここで 153匹目 https://mevius.5ch.net/test/read.cgi/tech/1586142285/845 870 の投稿も見て [] [ここ壊れてます]
149 名前:デフォルトの名無しさん (ワッチョイ 3378-NjyN) mailto:sage [2020/06/13(土) 23:51:50 ID:KtzqJ+vF0.net] RGSSがRubyで書けるだけで本体はRuby製じゃないだろ 最近のやつは知らないけれどRPGツクール2000はDelphi製だよ つかこいついつものRubyガイジか
150 名前:デフォルトの名無しさん (ワッチョイ 1363-UKCU) mailto:sage [2020/06/14(日) 00:29:11 ID:d5or7MKc0.net] ちなみに最新のRPGツクールMVはHTML5&CSS&Javascript
151 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 01:26:19.14 ID:v+4IVp6H0.net] >>147 そう、いつものRubyバカだよ。 どこかで聞き齧った上辺だけの知識を、古いまま更新もせずあちこちで思うがままに垂れ流す、迷惑きわまりない存在。
152 名前:デフォルトの名無しさん [2020/06/14(日) 02:49:46.49 ID:elQ0/Qc7a.net] くだらない質問で申し訳ない static IEnumerable<char> AToZ() { for (char c = 'A'; c <= 'Z'; c++) yield return c; } static IEnumerable<string> AAAToZZZ(int n) { if (n < 0) throw new IndexOutOfRangeException(); if (n == 0) yield break; if (n == 1) foreach (var c in AToZ()) yield return c.ToString(); foreach (var c in AToZ()) foreach (var item in AAAToZZZ(n - 1)) yield return c + item; } こういうシーケンスもっと短く綺麗に書ける? nが負の時の処理はこだわらない。(例外投げずに空のシーケンスを返すのでも可) どうでもいいけど、yield returnとreturnは混在できなことを今日初めて知ったw
153 名前:デフォルトの名無しさん [2020/06/14(日) 03:07:11.97 ID:elQ0/Qc7a.net] こうじゃなきゃダメかw static IEnumerable<string> AAAToZZZ(int n) { if (n < 0) throw new IndexOutOfRangeException(); switch (n) { case 0: yield break; case 1: foreach (var c in AToZ()) yield return c.ToString(); break; default: foreach (var c in AToZ()) foreach (var item in AAAToZZZ(n - 1)) yield return c + item; break; } }
154 名前:デフォルトの名無しさん (アウアウカー Sac7-P9YK) mailto:sage [2020/06/14(日) 03:59:43 ID:Lj4n2emQa.net] よくわからないけどRPGのデータベースから 単なる所持品表示と 装備品表示でBoolean型を使うなら状況が変わるのかな?
155 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 05:02:05.56 ID:HJp96S060.net] >>151 再起なんかせずにEnumetable.Repeatで必要文字数作って返すのじゃ駄目なん?
156 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 13:47:32.96 ID:EPf5hgHv0.net] 再起嫌いだわ 難しいことせず素直に書くならこうかな static IEnumerable<string> AAAToZZZ(int n) { if (n < 0) throw new IndexOutOfRangeException(); IEnumerable<string> result = AToZ(); for(i = 1; i < n; i++) result = Hoge(result, AToZ()); return result; } static IEnumerable<string> Hoge(IEnumerable<string> items1, IEnumerable<string> items2) { // items1+items2の組み合わせ foreach (var item1 in items1) foreach (var item2 in items2)) yield return item1 + item2; }
157 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 17:59:06.56 ID:HWVPFncU0.net] 少し汎用化してみた https://dotnetfiddle.net/qFcJK0
158 名前:デフォルトの名無しさん (ワッチョイ 7361-TrMf) mailto:sage [2020/06/14(日) 22:16:24 ID:ZbFg49iQ0.net] >>154 n=0の動きがかわっちゃってない?
159 名前:150 [2020/06/14(日) 23:20:59.70 ID:FMtFwmQda.net] みなさんありがと やっぱり劇的に単純化できるような方法はないか >>154 俺は再帰使った方が簡単に感じるなあ この辺は人それぞれなんだろうか >>155 面白いけど可読的かなあ ビール飲みながら読んでたら頭が痛くなってきたw ところでこういう処理をCartesianと呼ぶのは一般的なの
160 名前:? 何でデカルト? n次元の直交座標をスキャンしていくイメージ...? [] [ここ壊れてます]
161 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 23:38:18.81 ID:gmXZN8yKa.net] 2次元配列の逐次処理は3Dの棒グラフだから どう見てもデカルト
162 名前:デフォルトの名無しさん (ワッチョイ 4359-lMPZ) mailto:sage [2020/06/15(月) 12:58:53 ID:G4ousd2n0.net] プログラムに日本語が使われた物って、日本語がインストールされていない環境でも動きますか? 変数名などに日本語を使って海外へのローカライズ時にはUIのみをその国の言語に差し替える感じで。
163 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 18:13:18.65 ID:yRL+7o6a0.net] >>159 作成したexeのUI(たとえばButtonコントロールのTextに「押しボタン」とか)が 日本語表示でも、文字化けが問題ないならば動くことは動く プログラム自体の変数名(たとえば「int 合計」みたいな)であればユニコードで 保存されているはずなのでコンパイルは通るらしいけど、日本語の表示が できない環境では読めないソースになる プログラム実行時の画面表示でローカライズってどうやるのっていう話ならば 言語ごとのリソースを作って対応するのが普通なので「c# 国際化対応」で ググると色々サンプルが出てるよ
164 名前:デフォルトの名無しさん (ワッチョイ 4359-lMPZ) mailto:sage [2020/06/15(月) 19:19:37 ID:G4ousd2n0.net] >>160 複数パターンの回答感謝です。 ありがとうございます。 回答いただいた2例目が自分のパターンになると思います。 ソースコードを読まれる事を想定していない場合はコンパイルが出来れば、実行ファイルは問題なく動くという事でしょうか? 今ゲームを作っていて、海外にも配布したいです。 enumで管理している状態異常の名前などが英語だと長くてわかりにくいので日本語にしたいです。 例えばapple.pngをりんご.pngにしたりするのも問題ないでしょうか?
165 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 19:37:58.08 ID:leNERqqha.net] 日本語ファイル名は文字化けしてたら ファイル読み込みでエラーになりそう ローマ字にしといたら良いんでないの
166 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 19:41:29.43 ID:MF7iklGs0.net] そっちはUnicodeだから恐らく大丈夫
167 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 13:51:06.28 ID:e85N0kXp0.net] エクスプローラーのようなファイラアプリを作っているのですが、DirectoryInfo等を利用してその都度ストレージからフォルダ構造やファイルなどを拾い上げると時間がかかってしまうためこちらでキャッシュしたいと考えています フォルダツリーやフォルダ下にあるファイルなどの情報をキャッシュするのに適したものってなんでしょうか? jsonでそのまま多次元配列としてシリアライズするのが最も簡単そうには思えますが、合計ファイル数が1万件近くあるとファイルサイズやパフォーマンス的にsqlite3などを利用したほうが良いのかなと色々迷ってます
168 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 13:57:54.70 ID:0xoIejs00.net] 根本的にアプローチが間違っている。 ローカルドライブならMFTを直接読んで処理すべき。
169 名前:デフォルトの名無しさん [2020/06/17(水) 15:25:29.42 ID:GES6ctGCF.net] エクスプローラーも1万件あるとあきらかに遅くなる
170 名前:デフォルトの名無しさん (ワッチョイ b602-vBZN) mailto:sage [2020/06/17(水) 15:38:18 ID:yVuIICiL0.net] 低レイヤのこと詳しくないけどそもそもGetDirectoriesとかGetFilesもMFTから読み込んでるんじゃないの? FindFirstFileのラッパーなはずだけどFindFirstFileの内部ではそうしてるもんだと思ってたが
171 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 15:46:17.14 ID:0xoIejs00.net] MFTはNTFSにしかないから、 SDカード(普通FAT系)とかネットワーク ドライブなら FindXXの高レベルAPIを使用する事に なるよ。 書籍ならWindows Internals (chap12 なのでpart2)に説明がある Qiitaで見かけた記憶があるのでこちらを 探すってのもありかと
172 名前:デフォルトの名無しさん (アウアウウー Sa47-7nK8) [2020/06/17(水) 15:56:57 ID:wCFe9G62a.net] >>164 そもそも本当に体感できるほど時間かかるかなあw 連番をプリフィクスしたファイル名でデータを保存する、なんて処理を結構書いてて、 その場合は当然ディクトリ内のファイル名を走査して開いてる番号を探すわけだけど、 少なくとも数千件程度のファイル数で体感できるような処理時間を感じたことはないが...
173 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 19:29:16.87 ID:TZB3F6Mj0.net] ファイルやフォルダを画面に描写する処理に時間がかかってたりするパターンでは?
174 名前:デフォルトの名無しさん (ワッチョイ 5fda-EdQi) mailto:sage [2020/06/18(木) 06:00:16 ID:/GutDtHv0.net] エスパー視点だと、切断されたネットワークドライブ探して時間がかかってる。
175 名前:デフォルトの名無しさん (ワッチョイ 0b01-oh81) mailto:sage [2020/06/18(木) 07:14:38 ID:tX12dTLd0.net] アドバイスでもなんでもないが俺も昔自分用のファイルDB作ってたんだが 起動時に対象フォルダ下のファイルをGetFilesやGetDirectoriesで収集 → DBからタグ等の細かい情報取ってきてくっ付けるってやるとき、sqliteから一つ一つwhere fullpathというように文字列で検索すると約5000件/3分くらいかかったんだよな そこでwhereを入れず全部取得 → while (reader.Read()) sqFiles.Add();と一旦こちらのリストに全部放り込んでから 愚直にforでリストからフルパスと一致するものを探すって方式に変えたら5000件/500msというアホみたいに高速化された思い出がある
176 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 07:24:19.57 ID:tX12dTLd0.net] ちなみにこれじゃsqlite使う意味ねえじゃんwって思われそうだが、その初回時の検索でlong型のPrimaryKeyであるUniqueIdも取得するんで2回目以降は一つ一つ検索する場合でも普通に早い タグ以外にもblob型の多少サイズ大きいバイナリとか色々DBには保持させてるんでな
177 名前:デフォルトの名無しさん (ワイーワ2 FF12-HKig) [2020/06/18(木) 11:07:27 ID:OoPd9bgDF.net] forで愚直に検索中にディレクトリの状態やDBの状態が変化していなければ良いねω
178 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 11:27:39.83 ID:8/3vTp6fa.net] SQLiteはトランザクション無いんだっけ? >>172 みたいな自分用のDBで500ms以内に変化するようなクエリって何だろう・・・
179 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 11:54:40.21 ID:ZcH1+5T10.net] トランザクションいるよな とってるときも書き込むときも
180 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 11:58:11.67 ID:JTgDDftK0.net] SQLiteにだってトランザクションあるでしょ
181 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 11:59:20.73 ID:ZcH1+5T10.net] >>177 あるある
182 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 12:01:47.66 ID:LpN/zpxZ0.net] SQLiteに限らずmatchならまだしも文字列の=って糞遅いでしょ、トランザクションが有効なのって書き込み時だしね SQLiteのクエリはutf16版を使ったところで結局はutf8への変換が生じるからC#から使うとオーバーヘッドは避けられない その上でPRAGMA encoding='UTF-16'とかしてたらまたまたキーワード部分を変換しないといけなくなったりともうめちゃくちゃ だから一回のクエリで全件持ってきてC#上で検索すればそれくらい早くなるというのはまぁ自然
183 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 12:03:22.57 ID:8/3vTp6fa.net] ごめんバージョン 2.0から導入されてたね
184 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 12:35:51.08 ID:u7MaeuvH0.net] ファイルのデータベース管理って言うとWinFSを思い起こすな
185 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 13:20:40.79 ID:h9R/TQ390.net] トランザクショなるNTFS=TxFとか沼ですな。 ※Vistaで導入7から8に変わった時に デグレした機能w TransactionalFileMgr .Net Transactional File Manager がこのスレ 的に正解かな?
186 名前:デフォルトの名無しさん (オッペケ Sr3b-CFTz) mailto:sage [2020/06/18(木) 14:45:37 ID:N068eYZUr.net] >>179 検索そのものが遅いんじゃなくて 5000回のクエリ発行と結果受け取りが遅いと予想したが
187 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 13:35:38.83 ID:jQi52PAy0.net] C#のGUIからパイソンを実行してデータ分析させたいんだけど、 すごく簡単に実現できる方法ってありませんか? 1 C#からテキストファイルでデータ出力 2 C#からPython起動し、テキストファイルのパスを渡す 3 Pythonでデータ分析しグラフ出力 みたいな感じです。 PythonからC#に受け渡すデータはありません。
188 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 13:42:47.45 ID:bTXo9Nr1M.net] アイロンパイソンでええんちゃう
189 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 15:46:22.00 ID:7MKh9Chd0.net] コマンドプロンプトのパイソン実行でええんちゃう?
190 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 22:13:03.58 ID:zuodZOih0.net] batファイルで、解決できそう
191 名前:デフォルトの名無しさん (ワッチョイ 0f01-5fXH) mailto:sage [2020/06/24(水) 15:59:14 ID:rxIn+gin0.net] SQL Server Express LocalDBのSQL文の質問なんですが CREATE DATABASE myDB; これはちゃんと成功するんですが CREATE DATABASE IF NOT EXISTS myDB; こう書くと失敗します System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near the keyword 'IF'. Incorrect syntax near 'myDB'. このSQL文は使えないんでしょか?かわりの方法はあるでしょか?おねがいします
192 名前:デフォルトの名無しさん (ワッチョイ 3f01-0Hhk) mailto:sage [2020/06/24(水) 16:14:51 ID:ZBvJ9IFx0.net] >>188 DROP DATABASE IF EXISTS myDB; CREATE DATABASE myDB;
193 名前:デフォルトの名無しさん (ワイーワ2 FFbf-qwRG) [2020/06/24(水) 16:27:10 ID:6+kkBVmVF.net] DROP すると等価ではないな
194 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 16:40:01.38 ID:rxIn+gin0.net] >>189 さんくすです、DROPすると以前のデータが消えてしまいそうで ドロップしたらうまく動くんですが
195 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 17:06:11.29 ID:ZBvJ9IFx0.net] >>190 おお、そうだね 文法しか気にしてなかった >>191 CREATE DATABASE文にはIF NOT EXISTSとかのオプションは無いから>>188 はエラーになる DROPはIF EXISTSのオプションが用意されてる 188と等価にしたいならT-SQLのIF-ELSE使って存在チェックして DBが無い場合にだけ作成すればいい (存在チェックはDB_IDかsys.databasesを読むか) IF EXISTS ( … ) … ELSE CREATE DATABASE …
196 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 17:13:36.03 ID:LZQGw3mN0.net] で、それらc#なの? SQLの話ならスレ違いだ
197 名前:デフォルトの名無しさん (ワッチョイ 8f01-2vNH) mailto:sage [2020/06/24(水) 19:42:09 ID:H9m4GMw80.net] DDL文
198 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 20:43:40.85 ID:rxIn+gin0.net] >>192 さんくすです > IF NOT EXISTSとかのオプションは無いから なんと、あったら便利なのにね IF-ELSEでがんばってみます >>193 SQL文なので若干すれ違いかなっと 似たようなことがLINQtoSQLでできればとおもったのですが
199 名前:デフォルトの名無しさん [2020/06/24(水) 22:59:21.23 ID:G18p0mGY0.net] Entity Frameworkでデータベースと連携したい場合 public class Book{ . public int Id { get;set;} . public string Title { get; set;} } モデルは↑みたいな感じになるけど 実際には↓みたいな感じに色んなデータとふるまいを持ちたいとする public class Book{ . public int Id { get;set;} . public string Title { get; set;} . public List<Picrture> Picture { get;set;} . . (以下振る舞い等) } この場合って下のデータモデルからから上のDTOに変換してデータベースに入れる(取り出す時は逆)って考え方でいいのかな? 多くのサイトがEntity Frameworkでのデータベースへの突っ込み方しか書いてなくて 実際に運用する場合のデータの持ち方の考え方がよう分からん この辺りまで詳しい本とかサイトとかあったら教えてください
200 名前:デフォルトの名無しさん [2020/06/24(水) 23:58:21.16 ID:KiDLqidP0.net] いいんじゃない?DTOは名前の通りデータをDAOと受け渡すためだけに使って、振る舞い持たせるのは違う気がする。
201 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 00:07:24.74 ID:pPMcnwWPa.net] 単純なアプリだとDomainModelも単純だからEntity、DomainModel、ViewModelを同じインスタンスで済ませられる場合が多い 真面目にやるならそれぞれ別のクラスにしてマッピングするんだけどめんどくさいんだよな
202 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 00:24:04.27 ID:GAspYPHa0.net] めんどくさいけど、アプリ自体を拡張する可能性があると分けといたほうが後々良いことがあったりなかったり
203 名前:デフォルトの名無しさん (ワッチョイ 0fa7-eW5c) mailto:sage [2020/06/25(木) 01:37:48 ID:Q34w5rfS0.net] >>199 やめた方が無難 拡張したい階層が2-3ズレるのはよくあること たったそれだけなのに拡張のために付けた処理が邪魔になって 本当にやりたい改修が大きな工数になってしまうことはよくあること
204 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 08:19:30.72 ID:+9vWEdNfr.net] >>200 「ズレる」ようなのは設計と言えないし、そんな設計したことないけどなあ
205 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 08:48:00.18 ID:Q34w5rfS0.net] >>201 あるやろ? 色んなリストの表示方法(文字着色、並び替え、フォントサイズ個別指定、背景色着色)を実装できるようにしたけど 客の欲しいのはページングのある印刷機能だけだったみたいな 改修にときノリで入れたフォントサイズの変更や文字や背景色がページング印刷時にうまく出ない →ああ、無いほうが簡単だったな っとか
206 名前:196 [2020/06/25(木) 20:33:53.95 ID:42cionTC0.net] ありがとうございます 勉強になりました
207 名前:デフォルトの名無しさん (ワッチョイ 0f87-plLw) mailto:sage [2020/06/26(金) 07:51:51 ID:a7mre53d0.net] c#でアクティブウィンドウがosよりも先にキーボード入力を受けとる方法はありますか? やりたいことはリモートデスクトップを全画面で繋げている場合、Alt+Tabキーの入力は呼び出し元のosではなく、リモートデスクトップ側が取得しているように見えます。 この挙動を自作のguiでもできればと考えています。 「アクティブウィンドウがosよりも先にキーボード入力を受けとる」の認識が間違っているかも知れませんが、リモートデスクトップのような挙動を実現する方法を教えてください。
208 名前:デフォルトの名無しさん (ワッチョイ 8f01-2vNH) mailto:sage [2020/06/26(金) 08:39:13 ID:EHOqkK/F0.net] グローバルフックしか無いと思うな SetWindowsHookEx を調べてみなされ
209 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 09:07:56.65 ID:wYfFflLL0.net] >>204 余計なお世話かもしれないけど、アプリの枠の外にあるOS側での共通の操作を、1アプリの都合で勝手にフックされて違う動作になるのは使う方からするとストレスになるから気を付けた方がいいかも。 リモートデスクトップはある意味OS内OSだし、そういう例外的なケースならばアリだと思うけど。
210 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 09:43:44.08 ID:an36r83ud.net] >205 ありがとうございます。調べてみます。 >206 今回は自分で使いたいものなんで。 将来的に業務で使う機会があれば考慮するようにします。ありがとうございます。
211 名前:デフォルトの名無しさん [2020/06/26(金) 13:15:51.31 ID:PjbtVFt+F.net] キーロガー禁止
212 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 20:47:00.03 ID:EHOqkK/F0.net] Tik Tokの完全再現をw
213 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 15:49:13.62 ID:BmoMMcjv0.net] 20年ぐらい前からプログラミングやりたいと思い続けてきた文系おじさんだけど 数年前から少しずつ勉強し始めて、 やっとのことでちょっとしたものをC#で作れるようになってきた おもしろいわぁ
214 名前:デフォルトの名無しさん [2020/07/02(木) 08:48:04.62 ID:+yIU1z+T0.net] https://freesoft-100.com/review/lightbulb.html 色温度をいじれる言語ってなんでしょうか? pythonを主に使用しているのですが、C#系でないと色温度はいじれませんか? 色温度にもモニタ側、gpu側があると思います。
215 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 09:03:57.94 ID:unw3xiWi0.net] >>211 詳しくないから間違ってるかもしれないが、そのアプリ単体ではなく他のアプリも含めて画面の色温度を変えるという機能なら、OSがそういうAPIを提供しているということかな。それならそのAPIを利用できる言語ならばC#に限らずなんでもいいと思うけど。
216 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 09:04:49.65 ID:iSJIUTiv0.net] >>211 スレ違いだからpythonのスレで聞くかそれのソース自分で理解してほしんだが C#でできるのはWINAPIをラップした.NETの機能を使うか直にDLLのAPIを呼び出すかくらいなんだから pythonでAPI使えるのなら同じことができるはず
217 名前:デフォルトの名無しさん [2020/07/02(木) 09:51:08.11 ID:+yIU1z+T0.net] ありがとう c#にはそういうクラスがあるみたい winのソフト作るにはc#が一番都合がいいよね
218 名前:デフォルトの名無しさん [2020/07/02(木) 11:09:32.81 ID:esHBKAii0.net] 質問です DateTime.Now.ToString(@"yyyy\MM\dd") => 2020\07\02 を期待したいのですが 2020M7d2 になります 今は \\ を別な文字に置換し変換後また置換ってやってますがよい方法あれば教えてください
219 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 11:15:16.64 ID:j3S5Aqle0.net] >>215 @"yyyy\\MM\\dd"
220 名前:デフォルトの名無しさん (ワッチョイ 8749-OmMV) mailto:sage [2020/07/02(木) 11:26:03 ID:SFSsBsHn0.net] そこに\マーク入れる文化ってどういうものなの
221 名前:デフォルトの名無しさん (ワッチョイ 638c-VQSO) mailto:sage [2020/07/02(木) 11:31:04 ID:xozoa+r10.net] 日付にバックスラッシュ…?
222 名前:215 [2020/07/02(木) 11:41:12.70 ID:esHBKAii0.net] >>216 なるほど、できました しかし元の文字列は \ 一文字で決まっているのでどのみち何か手を加えないとならないですね >>217-218 フォルダ名の生成で日付を含めた任意の書式を扱えるようにするためなのです
223 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 12:25:41.08 ID:frMfUtj7r.net] あー「ファイルパスを作成するとき、年月日ごとのフォルダ階層をつくるため」ってことね 年の中に月だけの名前のフォルダとかセンス的に俺はようやらんけど、理由は理解できたわ
224 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 12:43:20.68 ID:ZEZ39nL50.net] >>215 年月日をそれぞれ別に取得したほうがいいんじゃね 必要ならそれをPath.Combineで連結すれ
225 名前:デフォルトの名無しさん (エムゾネ FFaa-JCxG) [2020/07/02(木) 17:00:29 ID:ryu4JvV+F.net] /でも造れるやろ
226 名前:デフォルトの名無しさん [2020/08/01(土) 16:52:28.79 ID:aC56TYwwM.net] VisualStudioは糞です。 {}を使うとき public voidnicemethod { } となるのではなく public void nicemethod{ } と自動でなるようにするにはどうしたらいいですか?
227 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 16:54:09.31 ID:G+VYcIGl0.net] 糞
228 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 16:58:48.08 ID:GNM8CN2Y0.net] >>223 オプションから起動時の設定変更出来るよ 昔は後者のほうが行数少なくて済むから良いと思っていたけど、最近は前者でも別に良いわと
229 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 17:01:00.07 ID:8QGIO3XO0.net] 縦長ディスプレイなら良いんじゃね
230 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 17:57:59.23 ID:E5+XpSzKd.net] 整形はvsのデフォルトに任せるようにした 独自整形ルール作ってるプロジェクトに入るとめんどくせって思うようになってしまった
231 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 18:15:37.32 ID:8AkvqbAqa.net] 同じ構文木なら表示形式はなんでもいいはずだ 保存時の形式だけ標準化して、編集時はユーザーの好みに合わせてフォーマットするようにIDEが進化すべき
232 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 18:23:48.50 ID:dl6F83GvM.net] 簡単な住所録作ろうとしてます。 登録と削除と追加ができればいいだけのやつ。データ保存はデータベース側に。 これのシンプルなオープンソースプロジェクト知っている方いませんか?いたら嬉しい。
233 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 18:48:40.23 ID:Yannm6rz0.net] >>229 オープンソースプロジェクトの何を探してんの? データベース?
234 名前:デフォルトの名無しさん (ワッチョイ 4dde-akQC) mailto:sage [2020/08/01(土) 19:19:48 ID:1LAdFvqL0.net] >>230 住所録って書いてんじゃんメクラかよ
235 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 19:31:35.20 ID:Yannm6rz0.net] >>231 作るのにオープンソースプロジェクトが必要なの? って言ってるんだけど。 作るんじゃなくて流用する、の間違いなら、ああ、って思うけどさ。
236 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 19:43:37.72 ID:EiwM5rD/0.net] まあ、そのまんま使えねーだろーから改修して使おうってんじゃねーの? オープンソースの正しい使い方やん
237 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 20:12:27.90 ID:Yannm6rz0.net] 簡単な登録と削除ができるだけでいい住所録にそんなものが必要だとは思わんというか、 何かをカスタマイズしてその程度の住所録にするのは、ちょっとたいそうな気がする。
238 名前:デフォルトの名無しさん (ワッチョイ 7a6a-xE3T) [2020/08/01(土) 20:49:12 ID:oCALSNxU0.net] エスパーすると作りたいけど右も左も分からんからお手本が欲しいってことかな
239 名前:デフォルトの名無しさん (ワッチョイ b178-xE3T) mailto:sage [2020/08/01(土) 20:51:54 ID:xhSYh2050.net] >>229 https://www.google.com/search?q=c%23 Address book
240 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 21:48:16.20 ID:NKcPOHZ30.net] オープンソースってちょいっと触るには佇まいがでかすぎて流用には向かないことが多い 住所録のどこの部分の機能が必要か知らんけど 単にアドレス帳の登録、削除、編集の基本機能だけだったら1〜2日の内容だから どっか入門サイトで似たようなの見つけて実装したほうが早いと思う
241 名前:デフォルトの名無しさん [2020/08/01(土) 21:52:38.29 ID:+9Q20FKV0.net] スレ違いだったら申し訳ないです。 C言語をやろうととりあえずmacかったのですが、 どのソフトで開発環境作ったらいいでしょうか?
242 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 21:54:22.30 ID:G+VYcIGl0.net] >>238 ここCじゃなくてC#な
243 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 22:04:49.38 ID:8QGIO3XO0.net] >>238 もう一つ言っておくと、mac はobjective c (c++)でないと 画面作れないよ
244 名前:蟻人間 mailto:sage [2020/08/01(土) 22:06:32.74 ID:LLVAByzud.net] macは自由陣営じゃないから。。。
245 名前:デフォルトの名無しさん [2020/08/01(土) 22:11:32.98 ID:+9Q20FKV0.net] わかりました ありがとうございます
246 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 06:10:11.27 ID:T2MIboAU0.net] c#で作ったbotからandoroidスマホに通知を送る良い方法はありませんか? 履歴を確認できる方法で。 今まではline-notifyでlineに送っていたのですが、新しいルート証明書をインストールしなくてはならなくなって別の方法を探しています。
247 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 07:27:09.21 ID:EizALxAu0.net] >>243 相手が端末の電源オフのときはどうしたいの? サーバーの特定のデータを見に行く作りにしないと結局使えないじゃんってなることのが多かったよ
248 名前:デフォルトの名無しさん [2020/08/02(日) 12:52:22.51 ID:scrCUlqp0.net] データクラスって一時期C#にも付くんじゃないかって言われてたのに、一体どうなったの? https://try.kotlinlang.org/#/Kotlin%20Koans/Introduction/Data%20classes/Task.kt オートプロパティのおかげでJavaみたくはならないから要らないってこと?
249 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 13:54:59.45 ID:xaz7GC4v0.net] 9でrecordくるよ
250 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 14:51:37.50 ID:umITGI3r0.net] https://ufcpp.net/blog/2020/6/record0609/ https://ufcpp.net/blog/2020/6/cs9vs16_7p3/ recordsはこんな感じ
251 名前:デフォルトの名無しさん [2020/08/02(日) 16:20:00.33 ID:NsDY9jGSF.net] ここはプログラムを描きたい人造りたい人向けのスレ フリーソフトダウンロードして使いたい人は相応のスレへ逝くことをお薦めします
252 名前:デフォルトの名無しさん mailto:sage [2020/09/03(木) 22:01:35.41 ID:RMVHFRAl0.net] public interface Ixxxxx { int method1(int x); } インターフェイスについて質問です。 上ではメソッドの型を定義しているわけですが、 インターフェースの引数定義で、xのように変数を設定するのはどうしてなんでしょうか。 ここでは使われない変数なので、型のみで良いと思うのですが。 それから、publicを省略して、interfaceとだけ定義する理由はどうしてなのでしょうか。 classなら、publicを前置するのに。
253 名前:デフォルトの名無しさん mailto:sage [2020/09/03(木) 22:10:50.18 ID:RMVHFRAl0.net] ルート相対的URLを保存するクラスは何が適しているんでしょうか。 String型に、/root/abc/def を文字列として保存しているのですが、 適切な型があれば教えてください。
254 名前:デフォルトの名無しさん mailto:sage [2020/09/03(木) 23:38:56.88 ID:FEiIVBqsM.net] >>249 名前がないと何を意味する引数なのかが意味不明だから interfaceはpublicメンバしか持てないから
255 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 00:15:18.15 ID:yQcUkcYq0.net] 引数名ないとドキュメント化する時にも困るしね
256 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 11:28:01.48 ID:M8Oq5rfA0.net] >>249 引数や戻り値の型をしっかり定義しないといけない理由は、ILやアセンブリといった低レベル知識を学習すればよく分かるよ 機械語レベルだとint、long、float、double〜etcはそれぞれ命令文が違う だから引数や戻り値がバラバラな値型だとそれぞれの機械語を生成しなきゃならず共用化出来ない 逆に言うと参照型であればポインタだけで済むので実は共用化が出来る なので参照型であればobjectとして定義をすれば実際に共用化可能(値型もboxingしてobject型にすれば同様)
257 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 11:39:06.89 ID:krKESdlN0.net] 型のみで十分なのになん変数名まで書かなきゃならんの?って質問にその回答は適切ですか?
258 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 12:06:19.79 ID:yQcUkcYq0.net] >>253 その回答はズレてる
259 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 12:46:23.59 ID:YyY7xdI50.net] >>251 >>252 レスありがとうございます。 なるほど、 変数名に引数の役割について記録しておくということにとても納得しました。 ソースの自己ドキュメント化につながりますものね。 >>253-255 レスありがとうございます。(^-^)
260 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 13:31:45.96 ID:Cdgw0eXGM.net] インターフェイスメンバに引数名が必要なのは名前付き引数のためでもある 名前付き引数ってのはmethod1(x:123)みたいな書き方のこと 正確には名前付き引数がC#に導入されたのは比較的最近なので時系列が逆なんだけど、 .NETはC#に限らずいろんな言語を動かすことを想定して設計されてるので名前付き引数のための要請についても元々考慮されてたというわけ
261 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 14:23:19.04 ID:Utz5OTUqa.net] >>257 下のコードは合法なのでさすがにそれは意味不明 interface IHoge { void Fuga(int x); } class Hoge : IHoge { public void Fuga(int y) { } }
262 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 14:29:57.19 ID:G2vvVEFn0.net] 引数名を変更するのってどういったケースを想定してるん?
263 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 14:34:15.41 ID:Utz5OTUqa.net] 別に想定なんかしてないのでは? 単に違法にする理由がないだけかと
264 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 17:36:23.03 ID:nh9T8LFU0.net] >>258 IHoge hoge = new Hoge(); hoge.Fuga(x: 100); //<= OK hoge.Fuga(y: 100); //<= NG: compile error
265 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 18:29:28.50 ID:Utz5OTUqa.net] >>261 当たり前やんw
266 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 19:19:04.36 ID:Utz5OTUqa.net] あーインターフェイスのメソッドの仮引数が名無し定義を許す仕様になってたら 名前付きで呼び出せないよって言いたいわけか 確かにその通りだね。 だけど「名無し定義を許さない理由の一つは名前付き引数を想定していたから」は考えすぎじゃないのかな
267 名前:デフォルトの名無しさん (テテンテンテン MM8f-wKT+) mailto:sage [2020/09/04(金) 19:51:37 ID:Cdgw0eXGM.net] いや名前付き引数はVB.NETには昔からあったぞ 想定していないわけがない
268 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 20:31:43.96 ID:nqNO8CQ40.net] そもそもコンパイルしても変数名はILに残るわけだし C#1からたぶんそうだよね?reflectionあるんだし
269 名前:デフォルトの名無しさん (アウアウウー Sa8b-wKT+) mailto:sage [2020/09/05(土) 10:58:29 ID:JiWof8twa.net] >>265 それはもちろんその通りで、名前付き引数も当然そのメタ情報を見るわけだけど、 MSが仮に明確な意思をもってインターフェイスメンバに引数名は絶対要らないという設計判断をしたならCLIもインターフェイスメンバには例外的に引数名を持てない仕様にしただろう CLIの設計としてはわざわざそんな例外を設けるのは不自然だし、C#の言語仕様を考えてもインターフェイスメンバだけ例外的にメソッド宣言の文法が違うのは不自然だ もちろん、実装には追加コストを払って特別なケアが必要になるだろう そこまでして引数名を省略したいだろうか?ということだね
270 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 12:34:52.95 ID:Waja5Z+Na.net] 実行時に小さくないコストが発生するような方法なんて取るわけないと思うよw メタ情報なんて見てるわけないじゃんwww
271 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 13:22:53.11 ID:azagYl6mp.net] 家政婦はメタ
272 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 13:51:42.86 ID:6OTXYwA0M.net] >>267 誰が実行時に見てるなんて言ったんだ? 見てるのはコンパイル時
273 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 14:12:24.58 ID:RVsSclOOM.net] 2日連続して秒で論破されとるやつw
274 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 16:47:07.35 ID:aivXeFh8d.net] >>270 スレタイの通り初心者なんやろ
275 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 18:29:01.06 ID:Waja5Z+Na.net] >>266 は誤読したけど前日に論破(笑)なんかされた覚えはないよw 言い訳をさせてもらえばそもそも>>265-266 は話の意図が不明瞭。 どっからそんな話が出てくる
276 名前:のって話 [] [ここ壊れてます]
277 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 22:38:11.37 ID:VnlHSptc0.net] インターフェースの引数名を省略する戦略なんかないって結論出てるのにね
278 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 08:18:43.19 ID:gGwX7R3F0.net] >>273 そこの理由が示されていないんでは? 名前付き引数を使えるようにしたんで仮引数は省略できません、じゃ理由になってないでしょ?
279 名前:デフォルトの名無しさん [2020/09/06(日) 14:33:55.32 ID:pKWvrGW4F.net] 省略するとき hoge(hage,,,,,fuga,,,,kuzu,,,) みたいな言語あったなー
280 名前:デフォルトの名無しさん [2020/09/07(月) 02:57:30.38 ID:u0REhpNo0.net] using var task = Task.Run(() => Do(a, b, c)); このDoを途中で止めることできる? Doの処理に時間がかかるためキャンセルさせたい場合がある
281 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 03:10:56.80 ID:3uGG3SyO0.net] CancellationTokenを使う https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/how-to-cancel-a-task-and-its-children
282 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 03:25:16.17 ID:jjIciKyq0.net] Doがキャンセルできるように作られてればできる そうでなければ無理
283 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 09:29:51.53 ID:s6/MEWpq0.net] a,b,cってなによ?
284 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 10:42:48.10 ID:Mci5uexUM.net] 引数じゃないの?
285 名前:デフォルトの名無しさん [2020/09/07(月) 16:30:38.13 ID:u0REhpNo0.net] Doの改造も不可避みたいですね ありがとうございました
286 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 11:07:55.61 ID:zCzZAqaJv] C#歴1ヶ月の独学勉強中の者です。 pictureBoxに画像を表示させており、 ボタンを押下するとその画像が画像中心を支点に5度ずつ 反時計回りに回転するプログラムを作成しています。 環境:VScommunity2019 この際pictureBoxに表示させている画像が表示されたまま その上に回転した画像も表示されてしまいます。 元の画像を表示させないようにしたいのですが、 対応案が浮かびません。。ご教示いただけないでしょうか。
287 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 09:13:51.86 ID:rDZLwTxXa.net] VisualC#2019パーフェクトマスター 買ってみた 800ページ近くある 勉強しなおし Java有償化で、いろいろ特需だな Javaよサラバ Javaよサラバ Why なぜに生きているのか わからない
288 名前:デフォルトの名無しさん [2020/09/11(金) 10:05:52.91 ID:qxFjIo0zM.net] Java有償本当か?
289 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 16:12:44.77 ID:rDZLwTxXa.net] 優勝だ
290 名前:デフォルトの名無しさん [2020/09/23(水) 09:34:34.80 ID:hJkRvCZvF.net] >>1 Part 149
291 名前:デフォルトの名無しさん mailto:sage [2020/09/23(水) 19:49:30.91 ID:SeN5l4G8a.net] 需要ないと思うけど暇だったので別スレで質問が出てたキー操作のシーケンスで発動する キーボドショートカットを作ってみた https://ideone.com/FcOn5C 使い方: public partial class Form1 : Form { private KeyboardShortcutsDetector mKbsDetector = new KeyboardShortcutsDetector(); public Form1() { InitializeComponent(); mKbsDetector.AddKeyBinding(Keys.Control | Keys.K, Keys.Control | Keys.L, () => Console.WriteLine("Ctrl + K, L")); mKbsDetector.AddKeyBinding(Keys.Control | Keys.K, Keys.Control | Keys.M, () => Console.WriteLine("Ctrl + K, M")); mKbsDetector.AddKeyBinding(Keys.Control | Keys.J, Keys.Control | Keys.U, () => Console.WriteLine("Ctrl + J, U")); } protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { return mKbsDetector.ProcessKey(keyData) ? true : base.ProcessCmdKey(ref msg, keyData); } } 退屈なコードだからたぶん見るだけ時間の無駄だと思うw
292 名前:デフォルトの名無しさん mailto:sage [2020/09/24(木) 00:24:56.04 ID:GbsAQP4b0.net] MVCとかまだイマイチわからんからwinformで作ってからMVCに移行する感じで勉強してるけど一人開発だと有り難み感じないからちょっと空しい
293 名前:デフォルトの名無しさん [2020/09/24(木) 12:42:20.92 ID:gbWGo5W3M.net] ボタン押したあとに結果リストにフォーカス移動させるのは viewでやってええのか?
294 名前:デフォルトの名無しさん mailto:sage [2020/09/24(木) 16:36:22.54 ID:e+Ck+96a0.net] いいと思うよ
295 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 17:13:06.01 ID:xSRIB2Tf0.net] windowsフォームアプリでHttpClientを使ってhtmlを取得しようと思っていますがうまくいきません。ステップ実行すると※の部分で処理が終わってしまいます。エラーに関する表示が何もでないため行き詰まってます。非同期処理に関する理解が浅いからだと思っていますが、壁を乗り越えられません。 このようなコードではなぜうまくいかないのでしょうか? @ private void button1_Click(object sender, EventArgs e) { var url = "www.google.com"; var t = GetHtml(url); t.Wait(); this.textBox1.Text = t.Result; } async Task<string> GetHtml(string url) { var client = new HttpClient(); var html = await client.GetStringAsync(url);//←※ return html; } (続く)
296 名前:デフォルトの名無しさん [2020/09/26(土) 17:13:28.26 ID:xSRIB2Tf0.net] >>291 の続き ためしにコンソールアプリで似たコードを書いてみましたがうまくいきます。 A static void Main(string[] args) { var url = "www.google.com"; var t = GetHtml(url); t.Wait(); Console.WriteLine(t.Result); } static async Task<string> GetHtml(string url) { var client = new HttpClient(); var html = await client.GetStringAsync(url); return html; } フォームアプリでもハンドラに全て突っ込めばうまくいきます。 B private async void button1_Click(object sender, EventArgs e) { var url = "www.google.com"; var client = new HttpClient(); var html = await client.GetStringAsync(url); this.textBox1.Text = html; }
297 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 17:23:29.59 ID:RSACZQL60.net] >>291 private async void button1_Click( object sender, EventArgs e ) { var url = "www.google.com"; this.textBox1.Text = await GetHtml( url ); }
298 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 17:27:53.86 ID:9d7CJAWD0.net] asyncはwaitしちゃだめ 理由は async デッドロック あたりでググって
299 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 17:31:36.79 ID:+0bWtyAMM.net] >>291 どうしてもWait()使う場合はConfigureAwait(false)するかな
300 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 17:36:48.45 ID:xSRIB2Tf0.net] >>293 ,294,295 数日間悩んでたのですが、教えて下さったキーワードを手がかりに調べ直してみます 本当に助かりました。ありがとうございます。
301 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 04:46:18.27 ID:6sIZ9RBB0.net] Android, Electron などは、スレッドが2つある。 UI(描画)スレッドと、サーバー(バックグラウンド)スレッド だから、2つのコンテキスト・文脈をまたがって、非同期などはできない。 異なる文脈の処理を呼び出すには、文脈を切り替えるような、特別な書き方がある まあ、Windows のGUIアプリが、2つの文脈でやっているかどうかは知らないけど
302 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 07:46:38.96 ID:WpoxB1nK0.net] >>297 知らんのかよ。 やってるけど。
303 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 16:39:54.69 ID:BMd/NSoW0.net] >>291 多分非同期処理って調べるとasyncの例ばかりで自分で戻り制御する方法がよく 分からなくてTaskクラスでWaitすれば出来るとかって結論に達したんでないかと 思うのだけど・・・ まず、async指定されたメソッドは呼び出されるとメソッド全体を別スレッドとして 起動して処理を元のスレッド(この場合STAスレッド)に戻します asyncメソッドの中でawaitを指定すると、メソッドの内容に関係なく元のスレッドに 戻るのは変わらないですが、asyncメソッドの中でawaitで指定されたメソッドが 終了するまでasyncメソッドのスレッドだけが待ち状態になり、awaitから返って くるとawait以降を実行しasyncメソッドの最後まで行くとasyncメソッドのスレッド だけが終了されます 検証してないので予想なのですが、Taskクラスで管理するスレッドを起動して いない(Task.Run)状態でWaitをかけるとSTAスレッドを待つためにsleepして しまいますがSTAスレッドはループスレッドなので当然いつまで待っても終了 しません asyncスレッドではawaitの処理が終わって復帰しようとしても元になるSTA スレッドがsleep状態なので、こちらもawaitから返ってこないみたいなことが 起こっているのだと思います 2のコンソールアプリの場合にはループスレッドではないのでMainの処理が 終了した時点で続きが動くのではないかと 3は正しい使い方で、STAスレッドは動かしたままbutton1_Clickメソッドが別スレッドで 動作する際にclient.GetStringAsyncの処理を待っているので普通に動作します button1_Clickの中で待つのであればasyncメソッドを作る意味がないですし、async メソッドで裏で動かすのであればbutton1_Clickで待ってはいけないので3の様な 形で実装するか、asyncメソッドの返却値をただのstringにして、textBox1.Textに メソッドの返却値が入る形式に変える(こっちは試してないので嘘かも)のが正解じゃ ないかな
304 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 18:04:42.91 ID:co99WLAO0.net] つまり非同期すればハゲるということですね。
305 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 19:27:47.55 ID:0F2CG6otd.net] >>291 @でやるなら自分はcontinuewithするかなあ あとhttpclientは毎回使い回すのはあまり良くなかった気がする
306 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 19:28:51.84 ID:0F2CG6otd.net] >>301 x使い回す ○作り直す
307 名前:296 mailto:sage [2020/09/28(月) 02:24:40.60 ID:QIpyCS2B0.net] JavaScript が難しいのは、非同期が基本だから。 コンテキスト・文脈が異なる。 時間の進み方が異なる世界で、同期を取らないといけないから Ruby が簡単なのは、同期が基本だから。 非同期の方がオプション Android, Electron がややこしいのも、2つの文脈の同期を取る必要があるから。 1つのアプリ内に、GUI・非GUI の文脈がある 例えば、Electronなら、Main は、Node.js のCUI スレッドで、 Renderer は、GUI のChromium スレッド 双方は、決められた書き方をしないと、同期・通信できない
308 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 06:18:20.07 ID:ii9XSMYC0.net] >>291 です >>297 コンテキスト・文脈という概念がまだ把握できてないのでそこが課題だと思ってます >>299 自分は独習C#という本をテキストにして勉強しています。 その中で、>>292 のAと似たコードが記載されていて、 これを使ってasync/awaitの基礎が説明されています。 そこで、フォームアプリで真似してみたんです。 デッドロックについてはいろいろ調べてみて基本的な理屈は理解できました。 ただ、Aのコンソールアプリでデッドロックが起きない理由がわかりません。 コンソールアプリはループスレッドではないからとのご指摘が重要だと思っていますが まだ理解が浅くてモヤモヤしてます。 あと、 >まず、async指定されたメソッドは呼び出されるとメソッド全体を別スレッドとして 起動して・・・ の下りですが、スレッドが3つあると考えればいいのでしょうか? a.STAスレッド(2のスレッドを呼び出したスレッド) b.async指定されたメソッドを処理するスレッド c.client.GetStringAsync(url)を処理するスレッド これはAのコンソールアプリでも同じですか? bについては独習C#には書かれていなかったので aとbは同じスレッドだと思い込んでいました。 調べてみてよく分かったのですが、理解できていない概念が多すぎますね。 今の時点で安易に触ってしまうと変に誤った先入観を持ってしまいそうです この辺をわかりやすくしっかり説明している書籍等、ご存じないでしょうか? 結論としては 基本的にフォームアプリの中でWaitを使うな 使いたいならConfigureAwait(false)で回避しろ ということなのかなと思っています
309 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 07:01:50.95 ID:ii9XSMYC0.net] >>304 修正 a.STAスレッド(bのスレッドを呼び出したスレッド)
310 名前:デフォルトの名無しさん mailto:age [2020/09/28(月) 07:59:26.50 ID:nO4ceNb30.net] すいません入門書に以下のコードがあるんですが実行してもピクチャーが真っ白で変になってるんですが 何が間違ってるんでしょうか; https://gyazo.com/de388825132a1ac42b21b7cbb8a069fd 画像を置いてる場所はここです https://gyazo.com/93530ea51ef1e88cbcd097846d409ca4
311 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 08:35:58.50 ID:lkQsRi/q0.net] 表示したい画像はどんな内容なんですか?
312 名前:296 mailto:sage [2020/09/28(月) 08:52:18.25 ID:QIpyCS2B0.net] >>304 コンテキスト・文脈が異なるとは、全く別世界・異次元。 時間の進み方も異なるし、全く感知できない。 通信・同期もできない 未定義の動作と同じ。 あらゆる仮定・推測ができない だから、双方が連絡するには、特別な書き方をしないといけない 普通の言語では、例外も補足できない。 他方で例外を投げても、伝わらない だから、ストールするのは、文脈が異なる場所で、例外が起こっている可能性もある。
313 名前:起こっていても分からないから 本を買うよりも、検索して調べた方がよい。 こういう説明が載ってる本は、まずない。 余程、マニアックな本だけだろう [] [ここ壊れてます]
314 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 08:53:38.64 ID:phqY8Xtx0.net] FormのControlsに追加しなくてもいいんだっけ?
315 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 08:59:13.21 ID:Zg0P7tB00.net] >>304 C#による マルチコアのための非同期/並列処理プログラミング ttps://gihyo.jp/book/2013/978-4-7741-5828-0 C#によるWindowsシステムプログラミング 第2版 ttp://www.cutt.co.jp/book/978-4-87783-468-5.html この2冊しかしらん もっといいのを知ってる人いたらよろしく
316 名前:296 mailto:sage [2020/09/28(月) 09:04:53.56 ID:QIpyCS2B0.net] 確かに、GUI の根幹には、永久のイベント(メッセージ)ループがある。 イベントドリブン ずっと、ユーザーからのマウスイベントなどが、キューに入るのを待っている。 キューにイベントが入ると、それを処理する。 それを永久に続ける 一方、CUI では、そういうイベントドリブンは聞かない。 マウス操作で、何かをするというのも聞かない。 Ctrl + C を押して、割り込み処理を発生させることはできるが でも、こういうアプリの終了などのソフトウェア割り込みも、イベントループで拾うけど
317 名前:296 mailto:sage [2020/09/28(月) 09:08:06.54 ID:QIpyCS2B0.net] そんな難しい本を読んでも、理解できないから無駄だと思う 検索した方がよい
318 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 09:11:10.60 ID:Zg0P7tB00.net] >>306 用意した画像の一部だけが表示されている たとえば、 pb.SizeMode = PictureBoxSizeMode.StretchImage; といった感じでPictureBoxSizeModeを指定してみると何が起こってるのか何となくわかるんじゃね?
319 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 09:42:36.85 ID:Uql71HHWa.net] >>311 ctl+Cまで入力コマンドを待つCUIアプリはイベントドリブンと呼べるのでは?
320 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 09:50:37.80 ID:o994bwz+0.net] >>311 CUIでもターミナルベースの業務アプリなんかだとイベントループ書くぞ。
321 名前:296 mailto:sage [2020/09/28(月) 10:20:17.53 ID:QIpyCS2B0.net] 結局、GUI・CUI も、どちらもイベントドリブンなのか 大部分は同じなのかも
322 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 10:59:03.73 ID:o994bwz+0.net] >>316 お前Electronの内容もちょっと変な理解してるし、毎回思うけど知ったかぶりしないほうがいいぞ。 結局Rubyの事しかわかんないんでしょ。
323 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 11:27:34.04 ID:j++FlVxl0.net] Delphiに存在したメタクラス型(クラス型を代入、参照できる変数)は C#に無いの?
324 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 11:42:34.18 ID:ii9XSMYC0.net] >>310 ありがとうございます アマゾンレビューをチラ見したところ目的に合ってそうです >>312 とりあえず頑張ってみます
325 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 11:53:52.45 ID:phqY8Xtx0.net] >>318 Typeは?
326 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 13:53:50.99 ID:j++FlVxl0.net] Typeでもある程度事は足りるけど、 あらゆる型のtypeof()を代入できるので不確実だし、Activatorとか必要で面倒。 無いなら仕方ないが…まあ移植が大変
327 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 18:57:37.61 ID:nO4ceNb30.net] >>313 そのプロパティ?はまだ本内で教わってないですが使ったら表示されました。 ありがとうございます!!
328 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 22:54:29.00 ID:iemn9XLz0.net] >>311 CUIなRTOSなんて普通にあるけどなぁ
329 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 10:58:06.91 ID:RvE6O+PE0.net] .NET Coreでコンソール画面に 「こんにちは、WORLD!」と表示させようとすると なぜか「こんにちは、WORL!」のように表示されます コンソール画面のメニューからフォントを変更すると正しく表示されますが原因が分かりません
330 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 11:22:49.95 ID:OZkIKLkD0.net] コンソール画面とは?
331 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 12:42:00.94 ID:YPdRC9Oi0.net] >>324 コード貼れ
332 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 13:17:16.07 ID:RvE6O+PE0.net] static void Main(string[] args) { var str = "こんにちは、WORLD!"; Console.WriteLine("{0}", str); Console.ReadKey(); }
333 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 17:53:06.91 ID:wYCx593I0.net] >>327 これかな? https://aquasoftware.net/blog/?p=895
334 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 17:57:00.27 ID:wYCx593I0.net] >>327 これも https://csharp.clock-up.jp/contents/dotnetcore/codepage-encoding
335 名前:323 326 mailto:sage [2020/10/10(土) 19:40:42.12 ID:RvE6O+PE0.net] >>328 >> 328 試してみましたが改善しません 出力をコピーしてメモ帳にペーストしてみると正常なので どうも文字化けではないようです 文字の表示位置がずれて重なっているような感じです
336 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 20:03:24.77 ID:wYCx593I0.net] >>330 こちらでは正常なんでコンソール画面のプロパティの設定がおかしいんでは?
337 名前:蟻人間 mailto:sage [2020/10/10(土) 20:04:01.51 ID:c6WyhNHPd.net] 何てフォント?
338 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 20:23:39.28 ID:RvE6O+PE0.net] MSゴシックの18ポイント、Windows8.1です 来週会社のパソコンで試してみることにします
339 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 20:41:27.03 ID:wYCx593I0.net] >>333 8.1はプロパティでレガシーコンソールのチェックある?あったらそれチェックでいけるんでは?
340 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 20:52:24.98 ID:RvE6O+PE0.net] ないです
341 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 21:17:43.96 ID:RlZbVDXEa.net] 何にもアドバイスできないのに恐縮だけど、 >コンソール画面のメニューからフォントを変更すると正しく表示されますが だったら具体的にどのフォントで問題が発生してどのフォントで発生しないか 確認した範囲で書いた方がいいのでは あと、普通テキスト変えていろいろ試さないか?
342 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 21:50:46.82 ID:wYCx593I0.net] 他のアプリでMSゴシックの18ポイント使ってみ。フォントのファイルが正常かどうか 使えるなら8.1のコンソールウィンドウの問題でしょ
343 名前:デフォルトの名無しさん [2020/10/10(土) 23:23:35.42 ID:wgBcrtZd0.net] >>321 Typeで事足りそうなものだが… あるいは設計の問題かも。 どんな設計なのかも書き込んでみたら?
344 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 10:49:57.27 ID:N2Y7+9Dy0.net] ローカルでiTextSharpを利用して、 Json形式のデータからPDF帳票を作る・・てのつくったんだが、 (サーバ上で、APIコールとかファイル読込でPDFファイルを返したかった。 イメージ的にはページごとにTextとかLineを指定したJsonデータ) いざ業務に転用できるかなってフェーズにきて iTextSharpのライセンス(AGPL)がやだなあ、って思ってる。 PDFSharpは日本語がなんかうまくいかない。 今のC#で、PDFを作るの、皆さんはどうやってる?
345 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 10:55:16.27 ID:0/xBmjm30.net] >>339 業務だったらExcelCreator使ってる
346 名前:デフォルトの名無しさん [2020/10/20(火) 10:59:00.80 ID:pHiz9StDF.net] PDFSharp使ってるけど問題無し
347 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 11:10:22.94 ID:d69BLAaZa.net] React、Vueで帳票レンダリング ヘッドレスブラウザでPDF印刷
348 名前:デフォルトの名無しさん [2020/10/20(火) 11:13:59.21 ID:pHiz9StDF.net] 日本語不安ならグラフィック直接PDFに張り付けろ
349 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 12:28:25.89 ID:eHl8PxCr0.net] PDFSharpは日本語の折り返しに対応してなかったぞ。
350 名前:デフォルトの名無しさん [2020/10/20(火) 12:50:06.87 ID:pHiz9StDF.net] >Json形式のデータからPDF帳票を作る これが折り返しするかどうかだな
351 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 13:46:22.13 ID:N2Y7+9Dy0.net] 皆さんありがとうございました・・・ 方針としてはPDFSharpをもっかいいじくり倒して、他にもいろいろ試してみます・・・ プレプリント紙への印刷やめたい >>340 そんなソフトあるんですね!サーバ版たけぇ・・ >>342 クライアントサイドのレンダリングはちょっときついです、環境バラバラなんで >>343 自分にはグラフィックをちょうどよくテンプレにはめる設計力がなさげ >>345 折り返しするんですよね。。 まあそれ以前使うフォントが特殊でつまずいたっていうのがありましたが
352 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 13:50:07.09 ID:d69BLAaZa.net] >>346 クライアントサイドじゃないよ サーバーでヘッドレスブラウザ使ってPDF出力してレスポンス返すだけ
353 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 14:00:01.34 ID:0/xBmjm30.net] >>346 Excelで帳票のテンプレート作ってそれをPDFにできるんでめっちゃ楽 みんな慣れてるでしょExcel帳票w
354 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 15:28:40.52 ID:N2Y7+9Dy0.net] >>347 そうなんですね!ちょっと見てみます >>348 Excel帳票大好きです(大嫌いです)
355 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 16:09:37.19 ID:CqCKSidt0.net] C♯が現在最強言語らしいので勉強したいのですが マイクロソフトはVB6の開発を打ち切ってプログラマを裏切った過去があるそうで なかなか踏み切れずにいます。。。 C♯は20年後も開発が続いてると思いますか? 教えてエロい人
356 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 16:14:23.52 ID:Nb9oJ8Mwd.net] そんな先のことなんざわからん 確実に言えるのは今勉強している技術を20年後も変わらずに使い続ける前提でいるような技術者は居ない(と信じたい) 生き残ってるなら初期学習がない分少し楽かもしれないけど、新しいのが台頭してくりゃそちらを新たに学習するだけ
357 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 16:25:01.94 ID:CqCKSidt0.net] そうですか。先のことは誰にもわからないですよね。 逆に20年後も確実に主力な言語ってPythonくらいかな?
358 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 16:25:26.41 ID:cR623l/E0.net] >>350 開発が続いてる言語の新しい技術についていくような人はどんな言語でもすぐ学べる
359 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 16:31:38.91 ID:CqCKSidt0.net] >>353 新しい技術について行く用意はあるんですが 言語の基本的な記述などのルールが変わるのが面倒なんですよね。。。
360 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 16:45:13.07 ID:0/xBmjm30.net] C#ほど後方互換性を重要視している言語ってなかなかないと思うけどね
361 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 16:48:10.12 ID:CqCKSidt0.net] >>355 そうなんですか。ではC♯を勉強すれば基本記述まで変更なんて 事はしばらくはなさそう?ですね。。。 勉強してみます!!
362 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 17:16:01.37 ID:nipGGPAZa.net] >>354 勉強が1ヶ月続くかどうかも怪しい奴が20年後の心配をするのは馬鹿げているぞ。 そんなことじゃ、何かを勉強し始めたとしてもことあるごとに足踏みして前進できない未来しか見えない。
363 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 18:10:04.06 ID:kSL2D2eBa.net] OfficeのマクロはまだVBなんだっけ?
364 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 18:13:11.84 ID:Nb9oJ8Mwd.net] そだね python使えるようにするみたいな話はあったけど進行してるのかな?
365 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 18:15:13.55 ID:ATqqkPAW0.net] >python使えるようにするみたいな話 頓挫したぞ
366 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 19:53:46.10 ID:c2x7XoZLd.net] 贅沢言わないから.NETにpython入れてVisualStudio(codeじゃない方)でサポートしてくれるだけでいいのに
367 名前:デフォルトの名無しさん [2020/10/20(火) 21:29:38.81 ID:j1S9Ds0j0.net] それIronPythonと何が違うの?
368 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 21:48:49.93 ID:iUu5GsdY0.net] >>358 まだExcelのWeb版だけみたいだけどJavaScript/TypeScriptが使える マクロじゃなくアドインならC#やF#みたいなCLR言語ならなんでも可だったかと
369 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 22:16:42.30 ID:jgnvePEX0.net] ChromeベースのWebView2がやっとラウンチしたようだね。まだ.netじゃ使えないが Previewで確認したところマウスの戻るボタンが使えるのがいい所だな
370 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 22:51:38.52 ID:kSL2D2eBa.net] >>363 へーそれは知らんかったありがと。
371 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 23:36:15.59 ID:CqCKSidt0.net] >>362 IronPythonって2.7っしょ 使えないな。。。
372 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 00:36:52.32 ID:0KDGF23Y0.net] なんかうろ覚えなんだが こういう非同期処理の書き方ってちゃんと動いたっけ? if(!locked){ locked = true; await xxx.Task; locked = false; } async/awaitは同じスレッドに戻るからこんな単純なロックでも問題無いって昔判断したような記憶はある
373 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 09:14:18.23 ID:hl6LkBs90.net] ソースの一行単位でスキがうまれるので無理じゃね ifとlocked=trueの間に実行されてる
374 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 09:16:03.92 ID:hl6LkBs90.net] 1行単位どころじゃなかった 意味不明なところでも割り込みあるわw
375 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 09:43:40.30 ID:eNSg6QZpH.net] 四捨五入の結果がおかしいのって自分だけかな・・・ decimal v = -0.0195m; decimal rounded = Math.Round(v, 2, MidpointRounding.ToPositiveInfinity); Console.WriteLine(rounded); ってすると、小数点2桁までになるよう(小数点3桁目を)四捨五入するので -0.02になるはずなのに、結果が-0.01になっちゃうんですけど・・・
376 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 09:56:42.42 ID:lxmGvu010.net] >>367 Taskの中でlockする https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/lock-statement
377 名前:デフォルトの名無しさん [2020/10/21(水) 12:02:28.19 ID:sg7OOy0L0.net] >>367-369 awaitで同期取ってるから問題ない >>370 To Positive Infinityだから正数寄りになる ゼロを基準にしたければMidpointRounding.AwayFromZeroを指定する await(待つ)もそうだが、変な日本語のリファレンスよりも明快な解説が変数名に詰まってるんだからお前らはまずその単語をGoogle翻訳に掛けるべきだと思うわ
378 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 12:16:57.36 ID:hl6LkBs90.net] >>372 いや if(!locked){ 実行 別タスクlockedのfalseを見て処理開始 locked = true; 別タスク割り込まれたら困る処理開始 await xxx.Task;←別タスクと衝突 locked = false; } 起こるじゃん
379 名前:デフォルトの名無しさん [2020/10/21(水) 13:03:41.62 ID:eNSg6QZpH.net] >>372 -0.01と-0.02の中間(MidPoint)である-0.015のときの丸め方(Rounding)として 「MidpointRounding.ToPositiveInfinity」を指定したつもりだったのですが・・・ MidPointじゃないときにも「ToPositiveInfinity」が適用されちゃうんですね・・・ JavaScriptのMath.Round()とおなじような(四捨五入される桁の数字が5の場合に 正の無限大の方向で丸める)四捨五入をしたかっただけなのですが、 関数を自作しないとだめみたいなので自作します。 お騒がせしました。
380 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 13:30:40.39 ID:UaTtUbsy0.net] await絡みのときは、排他制御はSemaphoreSlim使うのが定番ですよ https://www.atmarkit.co.jp/ait/articles/1411/11/news117.html
381 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 13:44:12.17 ID:RtxzEAIBa.net] 四捨五入:わかる 銀行丸め:わかる 正の無限大の方向で丸める:何の意味があんのそれ?
382 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 13:52:03.73 ID:xBoANC0iM.net] 切り上げって知ってる?
383 名前:デフォルトの名無しさん [2020/10/21(水) 14:15:10.32 ID:sg7OOy0L0.net] >>374 それならこんな感じで簡単に作れるから頑張れ static decimal[] table = new decimal[]{1E0m, 1E1m, 1E2m, 1E3m, 1E4m}; static decimal Round(decimal num, int pow) => Decimal.Floor((num * table[pow]) + 0.5m) / table[pow]; decimal num = Round(-0.015m, 2); // -0.01 >>373 普通にメインスレッドから叩いていればこうなるからな if(!locked){ // thread 1 locked = true; // thread 1 await xxx.Task; // thread 2 locked = false; // thread 1 }
384 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 14:19:07.15 ID:lJjSrE40d.net] 正負どっち方向に動くかわかんない変換より確実に方向がわかっている変換が必要なことはあるよ
385 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 14:26:27.71 ID:RtxzEAIBa.net] -2.4 → -2 -2.5 → -2 -2.6 → -3 こういう丸めが意味を持つケースが一般的とは思えない >>377 知らないのは君だと思うよ
386 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 14:32:15.81 ID:lJjSrE40d.net] 5捨6入って特定に分野では一般的な計算方法では? 俺は使わないけど
387 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 14:33:15.98 ID:RtxzEAIBa.net] >>381 3.5 → 4 なんだよ
388 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 14:47:36.44 ID:8k52si4D0.net] それでもう.NET5使ってええの?
389 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 14:52:13.96 ID:v0oiVQF00.net] いいよ
390 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 15:00:31.64 ID:5E7rZ8hS0.net] >>378 それが問題になるのは、そのifブロックが複数スレッドで実行されたときだからな
391 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 16:37:46.89 ID:APVpE4AA0.net] >>378 はじめのlockedをみてるガードは別スレッドからのアクセスに対して無力だよ そこはおk? >>378 の番号で言ったらThread3以上のスレッドからの話ね
392 名前:デフォルトの名無しさん [2020/10/21(水) 17:36:18.89 ID:sg7OOy0L0.net] >>386 つまりこういうのを危惧してるのか? Task.Run(() => { if(!locked){ locked = true; await xxx.Task; locked = false; } }); だとしたらこんなのは仮定
393 名前:に持ち出すのがそもそも間違い それ言い出したらフィールド操作するあらゆるメソッドで「並列で呼び出される可能性がある」とlock()で括らなきゃいけなくなってしまう [] [ここ壊れてます]
394 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 17:53:44.86 ID:lxmGvu010.net] ifブロックがシングルスレッドでしか実行されない状況で lockが必要な状況ってどういうの?
395 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 17:55:56.87 ID:5E7rZ8hS0.net] 元の質問がマルチスレッドでのロックに関する質問だと思うのだがな このコードはスレッドセーフですか? いいえ危険です みんなが回答してるのはそういう事 このスレの趣旨や質問者のレベルを考えると妥当な仮定と回答だと思うぞ
396 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 17:58:26.66 ID:5E7rZ8hS0.net] >>388 再入すればやばい気がしないでもない
397 名前:デフォルトの名無しさん [2020/10/21(水) 18:02:52.19 ID:sg7OOy0L0.net] 元の質問って>>367 だろ? > async/awaitは同じスレッドに戻るからこんな単純なロックでも問題無い 「同じスレッドに戻る」を認識してるなら疑いなくtrueやん ここで「でも別スレッドで動かしたら危険」と言うのは質問の前提を崩してる
398 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 18:14:17.17 ID:MqdNiLmu0.net] 崩してないな。
399 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 18:19:06.78 ID:5E7rZ8hS0.net] そのawaitしてるのはasyncメソッドだから、メインスレッドからのみ呼ばれるとは限らん つまりもどるのがメインスレッドだとは限らん というの理解しているのならまあ大きなお世話だと言えなくもないが あとフォームアプリじゃなければ、もとのスレッドに戻るも保障されないけどな
400 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 19:06:44.50 ID:lxmGvu010.net] >>390 なるほど ロックって言葉でちょっと意図を勘違いしてた タスクが実行中ならもう1回呼ばれても実行しないようにしたいってことだったのか タスクの中には他のスレッドと競合する処理はなく ifブロックはUIスレッドでのみ実行されるという前提ならいいんじゃねって気がする
401 名前:デフォルトの名無しさん [2020/10/21(水) 19:15:16.66 ID:/GjtxlMb0.net] そもそも呼ばれないようにしろ
402 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 19:22:35.51 ID:sg7OOy0L0.net] >>393 何か必死で調べたくさいこと言ってるが asyncだから、って下りに無知が現れてるな
403 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 20:02:51.66 ID:GqMp+oa10.net] >>367 の質問自体は「問題ない」が回答だけど、 そもそも質問の前提に危うさがあるんじゃない? って感じではダメなんだろうか。
404 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 21:32:30.66 ID:38qDfhYJM.net] >>339 まだ帳票開発したことないけど、やる機会があればDocurainってサービス使ってみようかなって思ってる
405 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 21:17:36.19 ID:skFEsPcd0.net] for文で書き始めて、配列から要素を取り出すだけだからforeachに書き換えて、でもやっぱりiが必要になってfor文に戻すこと多くない?
406 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 21:32:32.75 ID://9fx+gF0.net] Index付きのSelect句で事足りる
407 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 21:50:33.27 ID:878uww5f0.net] MoreLinqのIndex()がKeyValuePair<int, TSource>を返してくれる 簡単だから自分で実装してもいいけどライブラリ使うほうが管理含めて楽 foreach (var (i, x) in foo.Index()) { Console.WriteLine($"{i}: {x}"); }
408 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 21:55:59.78 ID:skFEsPcd0.net] そうなんだ
409 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 22:19:40.87 ID:VOTutQQJ0.net] >>401 いや、これ書くぐらいならforで書くよな
410 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 23:15:08.92 ID:GpR1sqnP0.net] >>403 たしかに
411 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 23:52:47.91 ID:878uww5f0.net] またLinqバトル始まっちゃう感じ?
412 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 00:14:13.24 ID:AkfEJdVF0.net] (index, value)と(value, index)でバグを作ってしまったから Index拡張メソッドは控えることにした
413 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 00:16:36.51 ID:wq/6wJQN0.net] >>406 それあるわ 他人のプログラムが前者で、自分は後者派だったからお互いえ?え?となったわ
414 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 00:24:48.70 ID:lDlwJ32m0.net] そもそもforeachなんて作ったやつの脳みそ腐ってんだから仕方ない 何回回すのかもコードからわかんねーし どう回したいのか変わると一気に産廃 そもそもforeachなんて産廃コード使うなよ 変更に激弱だろ あ、インデックスN番目は処理したくない →産廃 あ、後から処理しないと →産廃 あ、奇数と偶数で処理変えないと →産廃 あ、こっちの配列もみながらいっしょに処理しないと →産廃 もうあれね コードレビューでforeachを見つけたら 修正させるぐらいでいい
415 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 07:44:18.56 ID:yVRP623B0.net] インデックスを考えるような用途でforeach使うほうが悪いだろ。 偶数と奇数で処理変えるのも意味わからんし、イテーレタを一つずつって変更に強いと思うけど。 全部Linqでなんとかなることだけどさ。
416 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 08:02:57.19 ID:bN5bdnqa0.net] 紅白に塗るとかあるよね
417 名前:デフォルトの名無しさん [2020/10/25(日) 09:10:32.90 ID:WAUUQolqM.net] 偶数の場合こう処理します! プログラム解説サイトとかでありがち。 実務でそういうのに出くわしたことほぼない。
418 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 09:22:04.05 ID:lDlwJ32m0.net] >>411 あるよ datagridviewとか見にくいから偶数と奇数で色変えてくれってありがちじゃん
419 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 09:24:16.14 ID:lDlwJ32m0.net] 2行でワンセットになるデータで 上側だけ、下側だけって処理するときもお世話になるじゃん どんだけ組んだことないんだよ
420 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 09:26:32.27 ID:XkKy2l3/0.net] WPFみたいな割と最近のライブラリなら、 自前で偶数判断なんてせず交互に色を変えてくれる。
421 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 09:36:22.60 ID:w//Xf3xfd.net] >>412 それはデータ行に対してやることじゃない。 行に対して表示非表示の制御加えるだけで破綻する。 表示中の画面の描画関数でやることであって、行をイテレートしてやることじゃない。 >>413 2行1セットなら、そのクラスを作って、1インスタンスごとに制御するのが王道でしょ。 どんだけ空想上の「組んだこと」で話してんの?それともボンクラなの?
422 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 09:37:37.76 ID:lDlwJ32m0.net] >>415 え?いやでも必要じゃん そんときforeach使わないよね
423 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 09:40:44.86 ID:w//Xf3xfd.net] >>416 必要じゃないし、パース時点ではパーサ使うし、中では極力foreach使うよ。 2行で1アイテムが3行で1アイテムになったときにModulo全部変えてくの? 頭悪すぎるコーディングでしょ。
424 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 09:47:07.55 ID:lDlwJ32m0.net] >>417 は? いや客は単に奇数と偶数行で色変えてくれって言ってるだけやで
425 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 10:01:32.46 ID:yVRP623B0.net] >>418 画面側でやること。 描画関数には何行目かそもそも渡ってくるからループなんぞする必要もないだろ。 それを客が言ってるからってデータでやるのは手早くて汚い方法取ってるか、それしか知らないって事じゃん?
426 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 10:29:58.35 ID:j2oMvxGH0.net] >>419 うーん、確かにdatagridviewで偶数と奇数だとそれだけだなw 俺が悪かった
427 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 10:32:46.22 ID:j2oMvxGH0.net] ループで奇数と偶数は別の描画ライブラリ使っててそっちの話だった すまん
428 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 10:35:11.15 ID:yVRP623B0.net] なんか俺も言い方悪かったな。すまん。
429 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 10:36:49.62 ID:MD0uz1BLa.net] 最近のC#ならTupleで書けるからindexつきSelectのほうが短く書けて楽かな foreach (var (item, index) in items.Select((x, i) => (x, i))) { Console.WriteLine($"{index}: {item}"); } for (var index = 0; index <= items.Length; i++) { var item = items[i]; Console.WriteLine($"{index}: {item}"); } 後者の書き方に仕込まれてるバグを目視だけで見つけるのはやっぱりしんどい ていうかDataGridViewなら奇数行・偶数行のスタイルをそれぞれ別に設定できたはず なんでそれ使わないでロジックで制御するんだろう
430 名前:デフォルトの名無しさん [2020/10/25(日) 10:46:49.59 ID:WAUUQolqM.net] >>412 そんな偶数奇数で色変えるとかはコントロール側で制御して、各機能では意識せずに作れるようにしてる。 有償のものは標準でそういう機能ついてる。 あなたのところは各機能でそんなことさせてるの? ほとんどのシーンでforeachは使えるしforより可読性も高い。 C上がりのひとは頑なにfor文つかうよね。
431 名前:デフォルトの名無しさん [2020/10/25(日) 10:48:09.55 ID:WAUUQolqM.net] とか書いてたら話終わってた…
432 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 10:57:42.82 ID:ad5S/9r+d.net] BASIC上がりの俺は頑なにforを使う
433 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 11:43:12.08 ID:6wSnm1o40.net] フォームアプリを作成していて、 作ったタブページを一時的に表示させないようにしたいのですが (開発者用なのでユーザーから隠したいタブページ) invisible設定とかないのでしょうか?
434 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 11:54:01.85 ID:bN5bdnqa0.net] visibleをfalseにしる
435 名前:デフォルトの名無しさん [2020/10/25(日) 13:16:25.56 ID:FzqccguI0.net] elisp上がりだとdolistか
436 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 13:18:15.58 ID:MD0uz1BLa.net] >>427 https://dobon.net/vb/dotnet/control/tabpagehide.html
437 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 13:20:19.02 ID:M7kzCKlu0.net] >>406 拡張メソッドの問題ではないような・・・ それはいいとして順番だけど map/reduce系のAPIはindexがオプショナルなので引数の順番は(value, index)が一般的で index付きのtuple的なもの返す場合は(index, value)で返すほうが一般的 自分の知ってる言語はどれもそうなってるよ
438 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 07:40:35.09 ID:qnSD+cEJ0.net] C#で作られた2つの実行中プログラムの間でデータの受け渡しをするならどういう方法が考えられますか? csvやデータベースくらいしか思いつかず
439 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 08:05:19.87 ID:68kYXJV6d.net] >>432 ポート開けて通信する。 プロセス間通信する。 のどっちかかな。 Core化するなら、ポート開けて通信したほうが良いかも。 embedIOとか使うとhttpサーバがびっくりするほど簡単に立てられるよ。既存アプリの上に。
440 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 08:10:45.70 ID:geAq98MI0.net] GUI同士ならSendMessageとかも
441 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 08:41:56.32 ID:cCglm1Caa.net] >>432 小さいデータならソケットやパイプ 大きいデータなら共有メモリ スピードを問われないならファイルやDBでもいい
442 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 09:08:45.24 ID:Nt7id6vD0.net] Web API
443 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 09:13:36.29 ID:DyAY2wG10.net] WCFの後継とかどうすりゃいんだ
444 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 09:22:47.39 ID:Nt7id6vD0.net] >>437 https://github.com/CoreWCF/CoreWCF
445 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 09:28:12.57 ID:3bmwn6Ba0.net] WCF 開発者に gRPC を推奨する理由 https://docs.microsoft.com/ja-jp/dotnet/architecture/grpc-for-wcf-developers/why-grpc
446 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 22:35:34.95 ID:bWE1nSHc0.net] うちにはRemoting使ってて詰んでるレガシーがある
447 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 08:48:31.11 ID:GkpRv4Lwa.net] MSMQという手も
448 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:27:01.55 ID:VHRGFK1gM.net] MQTT
449 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:28:53.48 ID:obW6sm8G0.net] >>435 共有メモリというのは知らなかったです 勉強してみます ありがとうございます
450 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 20:32:35.12 ID:ytciXGtBp.net] お前が好きだと今日言うメモリー 気持ちを交換共有メモリー
451 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 21:27:35.00 ID:fAmed0Klr.net] 動的なJsonを作成したいのですが、いい方法ありませんか? 今考えてるのは 1. Jsonシリアライズ用クラスを用意(複数) 2. 処理部で使用するタイミングで1.クラスnew 3. 2.でnewしたクラスのみ匿名型オブジェクトに突っ込む 4. 3.をシリアライズ これで一応は出来るんですが、3.で分岐多くなるのが非常に汚くて。
452 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 21:28:58.34 ID:fAmed0Klr.net] できれば使用したタイミングで、都度匿名型に追加できればいいんですが、実装方法わからず…
453 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 21:32:20.78 ID:fAmed0Klr.net] 都度匿名型に追加ってのはあくまでイメージですはい。
454 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 21:37:54.98 ID:w+K6PrrE0.net] DynamicObjectとか使えばよかったような
455 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 21:45:46.98 ID:HAxtGf170.net] いまいちよく分からんが、Dictionary<string, object>だとダメなの?
456 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 22:08:26.61 ID:fAmed0Klr.net] >>448 あ、何かできそうな予感。試してみます。 >>449 使用の度にAddすればって事ですね。 …何かこれもできそうな予感…試してみます。
457 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 22:56:17.00 ID:28O5aXgi0.net] >>426 Python が最初だとどうなるんだろうな
458 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 05:36:06.93 ID:Of4L3rez0.net] スタティックライブラリーを使うためDLLにしているのだが、関数ポインタを引数にする関数があって困っています。 C#の関数をその関数ポインタに結びつける方法ありますか?
459 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 07:28:47.86 ID:NoXL5vik0.net] >>452 関数ポインタ引数に対してはdelegateをそのまま渡せばいいよ LPCTSTR引数に対してstringをそのまま放り込んでも成立するのと同様にdelegateもPVOIDとして解釈される つまりそのDLLで使う関数の型のdelegate型を作って渡せば良いだけ
460 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 07:32:51.69 ID:NoXL5vik0.net] ちなみにC#9だか10からは生の関数ポインタも扱えるって聞いた
461 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 09:43:54.51 ID:Of4L3rez0.net] >>453 ありがとうございます。
462 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 09:48:27.53 ID:+BFmFpNo0.net] 関数ポインタをDLL側が保持する(寿命が関数から返ってくるまでより長い)場合は マネージ側もその間そのdelegateインスタンスを保持しとかないとだめだぞ
463 名前:デフォルトの名無しさん [2020/10/30(金) 12:16:19.25 ID:7MkyV1CpF.net] >>445 msgpack
464 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 23:02:16.07 ID:YXzIJ61G0.net] >>454 どどど、どう書くの?
465 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 12:17:23.59 ID:8cswqFVg0.net] >>458 https://ufcpp.net/blog/2020/6/cs9vs16_7p3/
466 名前:デフォルトの名無しさん [2020/10/31(土) 12:27:36.76 ID:fxcwqRC2F.net] >>459 https://www.youtube.com/watch?v=aDXHl3S8oik
467 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 20:35:43.78 ID:jPO/JqMva.net] 最近最新版がプレリリースされたwebView2って、C#ではまだ使えないんでしょうか? https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/gettingstarted/winforms 上記サイトに習ってnugetからインストールし、1日いろいろ試して全く動作しませんでした。 ソリューションエクスプローラーの参照の、webView2をダブルクリックすると、「このプロジェクトは利用不可能き、またはビルドされていないため、オブジェクトブラウザで表示できません」と表示されます。 webView2もVisualStudioもMicrosoft Edgeも最新版をインストールしてもダメでした。
468 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 20:37:54.93 ID:jPO/JqMva.net] 間違えました。 「このプロジェクトは利用不可能か、またはビルドされていないため、オブジェクトブラウザでは表示できません。」の間違いです。
469 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 20:40:31.48 ID:4IwElBvx0.net] WindowsFormsを勉強しはじめたんだけど テキストボックスに処理の状況を逐一表示させたい場合ってどうやるのが正しいやり方? とりあえずこんな感じで作ってみたら動くけどなんか違う気がする https://ideone.com/o3Agp4
470 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 20:55:29.78 ID:Pj54f0iv0.net] ログ的な事をやりたいんだったらListBox使う方が良いよ 一定行数に達したら先頭(最終)行を削除とかも簡単に実装できる
471 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 21:00:31.63 ID:+32PkI4zM.net] >>463 allocconsole してconsole に出力するの吉
472 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 21:00:33.78 ID:1joLaKYt0.net] >>463 それでも良いと思うけどConsole.WriteLineみたいに強制改行関数作っといたら? あとC#自体のアドバイスになるけど、"処理しています……" + "\r\n"は+いらないから"処理しています……\r\n"で良いし 変数挟むときは$を付けて{}で囲む$"あと{i}秒\r\n"って書き方は各プログラミング言語の中でもトップクラスに便利だから覚えておいた方が良い
473 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 21:34:45.65 ID:2P+i0kOV0.net] >>463 >>466 の言うように文字列とか送るだけで表示するメソッド作っておくといろいろ後付けで改変しやすくなる RichTextBox使えば状況に応じて文字列ごとに色やフォントを変えることもできるし あとAppendTextは自動でTextBoxをスクロールしてくれる便利なものだけどメソッドの先頭で念のためFocus()かSelect()しておくと確実 フォーカス当たってないと自動スクロールしてくれないので
474 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 21:59:39.41 ID:b+5qg5vxa.net] >>463 何に不満や違和感を感じてるのか具体的に言わないと誰も答えようがないよw プログラミングの分野に限らず他人に自分の意図を正確に伝えることってほんと大事
475 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 22:07:28.55 ID:1TbrihkJ0.net] >>463 その方法が正攻法だと思って良い あとは他の人のアドバイスのように便利なメソッド作って使いやすくすればいいと思う
476 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 22:21:19.47 ID:4IwElBvx0.net] >>464 ありがとう。使ってみる >>465 今回やりたい事は違うけどこれはこれで知りたかった事だ。ありがとう >>466 改行用の関数をForm1の方で作っといてdelegateかfuncで処理用クラスに渡す感じかな? $マークのやつそういう使い方だったんかサンクス あと改行だけ分けたのは元のコードで「str + “¥r¥n”」の形だったのを直した名残だわ >>467 フォーカス当たってないとスクロールしてくれないのか なんか動いてくれないと思ってたんだよな
477 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 22:39:35.75 ID:syXSgGXN0.net] >>470 積極的にコンソールを使う意図が無いのであれば、AllocConsoleよりも System.Diagnostics名前空間のDebug.WriteLine()やTrace.WriteLine()を勧める VSのデバッグ出力画面やDebugView++等のアプリで見れる
478 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:14:04.52 ID:+32PkI4zM.net] コンソールにはコンソールのメリットが あるからなぁw
479 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 00:44:45.18 ID:TS2lQNKS0.net] >>461 本当に書かれている通りにやったの? ・WebView2はプレリリース版でなければならない(今だと1.0.674-prereleaseかな?) ・EdgeはCanary版でなければならない なんとなく、WebView2のプレリリース版でなく安定版の方を入れてそうな予感
480 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 08:45:28.58 ID:R1ZyiuLQa.net] >>473 ありがとうございます! 通常版のedgeをアンインストールして、edgeのcanary版をインストールして、再度通常版のedgeをインストールしたらできました! 2種類のedgeがインストールしてないと動作しないんですね。 webview2を使う場合は、全ユーザーも、canary版のedgeをインストールしていないと使用できないんでしょうか?
481 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 16:17:54.64 ID:hv15RbEG0.net] まあまだ.NET版はpereleaseだからな
482 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 18:01:16.91 ID:CXNCiFbu0.net] WinUI版のWebView2使ってみたが、マウスの戻るボタンが効いたのに感動したわ コレをどうにかするためにどんだけ苦労したことか
483 名前:デフォルトの名無しさん [2020/11/02(月) 07:35:20.34 ID:kZXAdCJzM.net] クラスの自動プロパティについて質問 自動プロパティがない頃は、頭にアンダースコア(_hogeHoge)をつけたprivate変数を用意しておいて、 コンストラクタやメソッドではそちらを読み書きしていた。 でも自動プロパティができたら、アンダースコアのprivate変数は不要になった。 これまで何も考えずに、コンストラクタやメソッドではプロパティそのもの(HogeHoge)に対して読み書きしているんだが、これでいいんだろうか… それともクラス内部で読み書きが発生する場合は自動プロパティ使わないほうがいい?
484 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 08:40:37.73 ID:J1SwCvmZ0.net] getterに副作用持たせてるの?
485 名前:デフォルトの名無しさん [2020/11/02(月) 08:54:07.90 ID:kZXAdCJzM.net] >>478 何も考えずにpublic string HogeHoge{get;set;}しか書いてない
486 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 12:37:17.75 ID:NZsZuJ1ia.net] >>477 何を悩んでるのか分からない。 同じ機能なら簡潔に書けるほうがいいに決まってるので 自動実装プロパティーで必要な機能が過不足なく実現できるなら 自動実装プロパティーを使わない理由はないんじゃないの? 別にpublicやinternalなメンバーにクラス内からアクセスしてはいけないなんて変なルールはないよw
487 名前:デフォルトの名無しさん [2020/11/02(月) 12:39:05.37 ID:kZXAdCJzM.net] >>480 そのそんなルールはないよというのが聞きたかった。 ありがとう。
488 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 13:48:19.73 ID:iMasp6IMD.net] c#にも、cでいうプログラミング言語Cみたいなバイブルと言える本はありますか?
489 名前:デフォルトの名無しさん [2020/11/02(月) 17:57:45.09 ID:9N3uvmex0.net] どんどん言語がアップデートされていってるからなあ
490 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 18:02:08.07 ID:kfCt0hOOd.net] googleかmsか ufcppでもいいと思うけど
491 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 18:19:04.77 ID:8cdEIkcV0.net] K&Rみたいな読んでるとドヤれる(気がする)ようなのはC#ではないよね
492 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 19:33:36.63 ID:QcicrBn8M.net] ちょっと前までrtfでインストールされてたじゃん
493 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 21:55:02.37 ID:KMJSmLX80.net] >>482 「プログラミング.NET Framework 第4版」Jeffrey Richter 著、藤原 雄介 訳
494 名前:デフォルトの名無しさん [2020/11/02(月) 22:06:56.80 ID:8/l8UOwbr.net] ガチの素人で趣味でプログラミングを始めました フォントファミリー名を取得してフォントファミリー名一覧コンボボックスを作成、そのあとコンボボックスで選んだフォントファミリーの名前で横においてるテキストブロックのフォントを変えるプログラムを作ってるんですけど、選択したコンボボックスからフォントファミリー名の取得はできてると思うんですがテキストブロックのフォントが変わりません どうすればうまくいきますか?
495 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 22:27:22.35 ID:onwGyibB0.net] pictureBox1.Image = @"パス"; PictureBoxで画像を表示している時、別の画像に切り替えるときはDisposeしてからパスを変更したほうがいいでしょうか?
496 名前:デフォルトの名無しさん [2020/11/02(月) 22:31:57.70 ID:8/l8UOwbr.net] もしかしてフォントファミリーは文字型変数じゃ指定できないの?
497 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 22:51:52.41 ID:IceSdPzo0.net] >>490 たぶんFontFamilyの名前が間違っている >>489 メモリが一時的に積みあがっていくけど適当なところでガーベージコレクタが動くはずだから問題ない それはDispose()というかGC.Collect()で解決する
498 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 22:54:08.63 ID:NZsZuJ1ia.net] >>488 適当にやってみた public Form1() { InitializeComponent(); cboFont.DropDownStyle = ComboBoxStyle.DropDownList; cboFont.DisplayMember = "Name"; cboFont.Items.AddRange(FontFamily.Families); cboFont.SelectedIndex = 0; cboSize.DropDownStyle = ComboBoxStyle.DropDownList; for (int i = 6; i < 81; i++) cboSize.Items.Add(i); cboSize.SelectedIndex = 0; EventHandler eh = (sender, e) => textBox1.Font = TextFont; Load += eh; cboFont.SelectedIndexChanged += eh; cboSize.SelectedIndexChanged += eh; }
499 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 22:54:27.55 ID:NZsZuJ1ia.net] private int TextSize { get { return (int)cboSize.SelectedItem; } } private Font TextFont { get { return new Font((FontFamily)cboFont.SelectedItem, TextSize); } }
500 名前:デフォルトの名無しさん [2020/11/02(月) 23:36:41.20 ID:8/l8UOwbr.net] ありがとうございます 今日はもう遅いので明日やってみます
501 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 23:49:15.55 ID:onwGyibB0.net] >>491 そうなのですね そのままパスを変更するだけに留めます 先輩ありがとうございます!
502 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 01:34:50.34 ID:qmbI+CcG0.net] >>495 こいつVBAで荒らしていた馬鹿じゃないか?
503 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 01:58:10.34 ID:jzL8Touo0.net] >>496 VBAスレは見てないので人違いですね
504 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 08:28:33.94 ID:dsOM4bkh0.net] MahApps.MetroってC#はどうってことないがxamlがヤベえのね
505 名前:デフォルトの名無しさん [2020/11/04(水) 13:54:59.77 ID:MUmomvCg0.net] GUIはXAMLが基本です
506 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 10:45:15.58 ID:t7w6OMp4a.net] プログラムの実行を優先して、ユーザーのマウスやキーボード操作をパソコンが受け付けないようにしたいんですが可能ですか?
507 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 10:51:39.94 ID:nZ+0GoS70.net] それをするとプログラムに(応答無し)って表示されるけど可能は可能
508 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 12:17:39.90 ID:39mGoKKv0.net] メッセージポンプして全部removeしてしまえばよろし あかよろし
509 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 12:59:34.40 ID:t7w6OMp4a.net] >>501 応答なしと表示されても問題ありません。ボタンを押した後、プログラムの一部区間だけユーザーの操作を無効化したいです。 理由は、ダイアログボックスが表示されてからSendKeysで文字を入力する際に、他の操作によりプログラムが正常動作しない時があるためです。SendKeysしか方法がなかったのでそうしています。
510 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 13:48:23.82 ID:GpP1ZiKDa.net] >>503 SendKeysじゃなくてWin32のPostMessageかSendMessageを使うことを 考えるべきじゃないの? SendKeysの仕様に合わせるためにそんな大鉈を振るうとかまともな考
511 名前:ヲとは思えんよw [] [ここ壊れてます]
512 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 14:59:35.50 ID:6IQ4ek2K0.net] >>500 マウスイベントとキーボードイベントをグローバルフックして、イベントをチェーンせずに握り潰す
513 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 16:41:34.70 ID:cxYX5+z2p.net] >>504 アドバイスありがとうございます。SendMessageを使ってみます。ウインドウハンドルを掴むのが難しそうですが…がんばります。 >>502 >>505 すみません。初心者には難しそうです。諦めます。
514 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 22:57:41.32 ID:39mGoKKv0.net] sendを理解出来るならpeekも出来るでしょ?
515 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 13:06:44.87 ID:YQs0Gheb0.net] .NetCore3.1のWPFアプリってエントリポイント変えられないの? WPFのエントリポイント変更でググるとApp.xamlのビルドアクションを「アプリケーション定義」から「ページ」に変更してMainメソッド作ればいいって書かれてるけど .NET Coreだとまずそのビルドアクションを変えられない
516 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 13:27:48.21 ID:9M/x9jqfd.net] >>508 こんなん? https://blog.magnusmontin.net/2020/01/31/custom-entry-point-wpf-net-core/
517 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 14:29:20.29 ID:YQs0Gheb0.net] >>509 ありがとう 出来た
518 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 12:46:09.92 ID:Wkf+3jxV0.net] .net5が今日発表される予定らしい https://www.dotnetconf.net/
519 名前:デフォルトの名無しさん [2020/11/10(火) 14:36:59.32 ID:gS6kMlPu0.net] .NET5でVisual Studioはどう変わるの? 我々はこれまで通り「プロジェクトのプロパティ」から「対象のフレームワーク」で3.5を選んどけばいいんでしょ?
520 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 20:55:17.07 ID:PRedF3Ga0.net] 3.5?
521 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 21:45:01.26 ID:ZFV7gHPc0.net] 3.5は流石に草生える
522 名前:デフォルトの名無しさん [2020/11/10(火) 21:54:25.94 ID:whduyV8l0.net] 4.0だろ当然
523 名前:デフォルトの名無しさん [2020/11/10(火) 22:16:39.16 ID:HXXQLae8M.net] 4.0はサポートされていないの? 3.5のほうがいいわけ?
524 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 00:11:32.86 ID:9mAhI+SY0.net] 混乱しておりますねえ
525 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 00:42:32.57 ID:BDEAVR3x0.net] サポート切れの4.0使うよりは3.5縛りのほうが健全に思えてきたわ 4.5.2に揃えたいけど、古いサーバー多いのよね
526 名前:デフォルトの名無しさん [2020/11/11(水) 01:37:56.99 ID:foWqNnZI0.net] >>512 我々は先(.NET 5)に行く、君は3.5を頼む!
527 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 02:30:08.95 ID:szx2KMpX0.net] >>518 すまないこのファイルZIPでくれ。 なぉ外部DLLの読み込みはダメ
528 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 04:26:49.73 ID:zN1eFwAm0.net] 元ネタがわかんねえw うち3.5どころか2.0や1.1の化石あるぜ……嘘みたいだろ?
529 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 07:13:29.31 ID:A0Zt6oTk0.net] C++部がVC6でしかビルドできない
530 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 07:32:57.28 ID:szx2KMpX0.net] zip関係は4.xから標準実装
531 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 07:48:32.66 ID:DyE7m0HI0.net] configファイルを作らないまたは削除する連中が嫌いだわ
532 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 10:40:12.91 ID:96Q/I0na0.net] VS16.8.0に更新したら.NET Coreのプロジェクトは1クリックで.NET5に移行出来たな .NET Frameworkのプロジェクトも簡単に移行できるのかな?
533 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 10:44:10.46 ID:QZePbwpJM.net] できるわけないでしょ WebFormsとWCF廃止の時点で半数くらいのアプリは事実上移行不可能 そうでなくても変なサードのライブラリ使ってたりして移行できないケースも多いだろうね
534 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 12:47:24.27 ID:5X85No/50.net] 16.8でuwpのリリースビルドが実行不能になったわ
535 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 19:44:06.91 ID:96Q/I0na0.net] あれ、.NET5ってWindowsアプリからコンソールアプリに変更できないの? プロジェクトプロパティから出力の種類をコンソールアプリに変えてもコンソール出てこないんだが プロパティ開きなおすとWindowsアプリに戻ってるし
536 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 20:49:57.45 ID:WaPRIfZP0.net] WCFって代わりに何使えって言ってる?
537 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 21:00:29.49 ID:szx2KMpX0.net] >>529 MQTT
538 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 00:35:56.66 ID:qoiJF5zI0.net] C#実践しながら効率良く覚えたいんだけど良い教材ないかな とりあえずWinアプリ作りたい 頑張って独習C#を9割読んだのにもうほとんど内容覚えてない
539 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 00:56:44.98 ID:nVOC+il80.net] そりゃ手を動かさんと覚えんよ
540 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 00:59:41.35 ID:+Hg40DyF0.net] 何でも良いから作りゃいいんだよ ベタなのは電卓 少機能なものをガンガン作る
541 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 02:56:18.65 ID:XDpnN8VW0.net] 仕事してるならいつもやってるちょっとした作業を代替させるようなアプリがモチベになるきっと
542 名前:デフォルトの名無しさん [2020/11/12(木) 05:54:42.02 ID:6+k25fjF0.net] WinUIとMAUIの区別が曖昧にしか認識できてないんですが、 具体的な違いを説明してくれてる情報源があれば教えてください。
543 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 06:11:12.88 ID:xNvOr4tgd.net] 日頃やってる単純作業をなんでもいいから自動化 エロ動画収集とかエロ画像整理とかあるだろ
544 名前:デフォルトの名無しさん [2020/11/12(木) 12:00:28.21 ID:f5BAQJxFF.net] >>534 めっちゃ判ります 画面キャプチャしてpdfに製本するアプリ造ったら捗った
545 名前:デフォルトの名無しさん [2020/11/12(木) 14:31:20.02 ID:s2LM5erN0.net] C#で小数点の倍精度演算をするには自分で作るしか無いの? 整数はBigIntegerで出来るのに
546 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 14:41:04.78 ID:pnQCXdZla.net] Double 構造体 https://docs.microsoft.com/ja-jp/dotnet/api/system.double > 倍精度浮動小数点数を表します。
547 名前:デフォルトの名無しさん [2020/11/12(木) 15:01:22.45 ID:s2LM5erN0.net] 倍精度じゃ無くて多倍長だった めんご
548 名前:デフォルトの名無しさん [2020/11/12(木) 15:16:14.73 ID:f5BAQJxFF.net] BigInteger
549 名前:デフォルトの名無しさん [2020/11/12(木) 15:21:45.07 ID:f5BAQJxFF.net] https://archive.codeplex.com/?p=Sine https://web.archive.org/web/20130225114124/www.emilstefanov.net/Projects/GnuMpDotNet/
550 名前:デフォルトの名無しさん [2020/11/12(木) 15:30:12.32 ID:f5BAQJxFF.net] こっちか https://www.nuget.org/packages/Math.Gmp.Native.NET/ https://ja.wikipedia.org/wiki/GNU_Multi-Precision_Library
551 名前:デフォルトの名無しさん [2020/11/12(木) 17:45:20.41 ID:s2LM5erN0.net] >>543 Math.Gmp.Native.NET 有効桁数20桁じゃん メモリが許す限りの桁数の小数点数を扱いたいときはどうするの?
552 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 17:46:57.77 ID:6nU3MdtG0.net] >>544 それを標準機能や標準関数で実装してる言語ってあるの?
553 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 17:49:22.72 ID:yAJG0kR/0.net] >>544 メモリが許す限りの何かを扱いたいのなら数値に限らず自作しないと、そんな都合のいいものはない
554 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 18:50:06.12 ID:n9rTzoEP0.net] >>546 馬鹿は黙っていれば良い例
555 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 19:03:16.89 ID:eGo0h3N+0.net] Pandasに相当するライブラリないの?
556 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 19:03:45.07 ID:eGo0h3N+0.net] まあC#でやる必要ないかw
557 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 19:52:59.46 ID:OqW4/kLba.net] ググってみたらdoubleの仮数部は52ビットらしけど、52ビットの分解能じゃ 不足する分野って何なんだろうねw 地球の赤道に1ミクロン単位で目盛りを振っても余裕でおつりがくる分解能みたいだけど
558 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 20:42:07.53 ID:aPogCkhJ0.net] >>550 円周率じゃん?
559 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 20:42:17.55 ID:/VjS/nppM.net] >>550 オーダーの異なる多数の数値を何も考えずに前から順に足し合わせたりすれば簡単に狂うよ
560 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 21:28:06.03 ID:+Hg40DyF0.net] めんどくさいから整数で演算して結果の小数点を動かすわ ってかみんなそうやってやんないの? そりゃ高パフォーマンスで多倍長浮動小数扱えるならそれが一番だろうけど
561 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 21:30:18.59 ID:mp0oTovH0.net] 一番面倒臭いのはケチ付けたいだけのID:s2LM5erN0
562 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 21:32:48.72 ID:WhH2oDBM0.net] GMP使うからC#ではせんな。 CUGにmiracle ってライブラリーがあったけど これも当然C#用では無いなぁ
563 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 21:51:54.26 ID:OqW4/kLba.net] >>553 誤差が累積しないような演算方法を工夫するのが普通だろうね
564 名前:デフォルトの名無しさん [2020/11/12(木) 21:59:49.04 ID:4tCV4GAu0.net] すまんが、↓こう言う時の「=>」ってどう言う意味なの? string asdf => $"jkl"; この画面の11行目でそんな感じのが出てきたんだけど・・・・ https://youtu.be/wTmZCu16LNU?t=1094
565 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 22:15:18.46 ID:QnwokErS0.net] 読み取り専用プロパティの簡単な書き方 string asdf { get { $"jkl"; } } string asdf { get => $"jkl"; } string asdf => $"jkl"; string asdf { get; } = $"jkl"; // これだけ意味が違う
566 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 00:55:38.66 ID:eU7TEgK20.net] >>565 private string _asdf = $"jkl"; string asdf { get { return this._asdf; } } を1行で書いたもの
567 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 05:21:57.56 ID:quhoX/Ovr.net] >>544 何の計算したいの?
568 名前:デフォルトの名無しさん [2020/11/13(金) 11:17:32.36 ID:d7Iu7DLU0.net] >>560 単なる道楽なんだけどね 昔の放送大学でUBASICを使った自然対数の底と円周率の演算をやってたから 同じことをC#でやろうと思ったけどIEEE754の倍精度実数では桁が足りなかった BigIntegerがあるならBigFloatも欲しかったなと
569 名前:デフォルトの名無しさん [2020/11/13(金) 11:21:41.58 ID:RWm0omqa0.net] 放送大学アーカイブズ 懐かしの名講義 再放送中毒
570 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 11:32:20.13 ID:ehJZ/AtC0.net] https://bangumi.ouj.ac.jp/bslife/detail/01625005.html
571 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 12:37:29.01 ID:907SkV9V0.net] >>561 結局欲しいのは多倍長整数なのか倍精度浮動小数なのか 道楽なら自作ライブラリでも作れば良い
572 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 14:16:13.05 ID:WOWtwvuFd.net] >>564 なんでずれた回答するの? 「作るしかない」 なら良い回答なのに。 新しい人どんどん減っちゃうよ
573 名前:デフォルトの名無しさん [2020/11/13(金) 14:18:25.76 ID:RWm0omqa0.net] 「作るしかない」 の方が最近の新しい人は逃げる傾向にあるからな
574 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 15:13:21.55 ID:od/5f45td.net] 作るしか無いってことはほぼ世の中にはそんなものは求められていないってこと そんなものを要求するのは根本が間違ってるか何でも周りに頼り過ぎか 真に有益なものならむしろ作って公開すりゃ良い実績になる
575 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 15:22:11.67 ID:WOWtwvuFd.net] >>567 なんかそれがもうずれてんだよね。 「作るしかないの?いいのないの?」って聞かれてるんだから 「ないよ。作るしかないよ」って答えればいいのに。 世の中で求められてないとか質問に関係なくない? 有益云々も今ないから作ったら公開してくれって言えば利益にもなんのに。 残念
576 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 15:25:44.29 ID:fnhS2xNE0.net] 20年位前のうbyの時代はそれが通ったけど 若い人にそういう文化はもう無い
577 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 15:29:35.13 ID:od/5f45td.net] >>568 質問への回答じゃないのにズレてるとかいうレスがそもそもズレてるって思わないの? というか悪魔の証明はできないんだから無いよ、なんて軽々しく言えないという前提がわかってる? ついでに誰にも求められていないものを公開して利益になるロジックを教えて
578 名前:デフォルトの名無しさん [2020/11/13(金) 16:12:04.51 ID:/kJTTxU10.net] >>558 >>559 ありがとう! 記号系はググりづらくて、本当助かったぜ!
579 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 16:31:13.21 ID:WOWtwvuFd.net] >>570 そうなの。質問への回答じゃないの。 悪魔の証明とかかたっ苦しく考えなくていいのに。 知らないなら知らないで、「俺はしらんなぁ、作るしかないんじゃない?」で答えるか黙ってればいいじゃない。知ってる人がいれば答えればいいし。 >ついでに誰にも求められていないものを公開して利益になるロジックを教えて これは >真に有益なものならむしろ作って公開すりゃ良い実績になる ここからね。 ないものができるんだから利益でしょ。使う使わないは人それぞれ。少なくとも質問者には必要なんだから。 なんかすまんね
580 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 16:42:13.42 ID:907SkV9V0.net] >>565 欲しいものの要件をハッキリ言わないからだよ >>540 で多倍長って言いながら、>>544 では小数って言ってる 小数求めてるのに>>561 ではBigFloat求めてる Bigは大数の接頭辞 自分で欲しいものを理解してないのに人に探してもらうことは難しいよ
581 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 16:47:50.11 ID:907SkV9V0.net] 精度の高い計算をするためのツールがUBASICなわけ あえてそれを使わずにC#でやるのは本人の自由だけど、 要件をハッキリさせずにいながら出てきた案はダメ出し そりゃ顰蹙も買うさ
582 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 17:05:08.44 ID:od/5f45td.net] >>572 だから答えようがないから質問を見た感想を述べているだけなんでしょ? それをなんで、その回答はズレている!なんて突っ込むの? 質問者が求めてるなら 誰にも求められていない に該当しないじゃんw 質問者は世の中含まれていないの?
583 名前:デフォルトの名無しさん [2020/11/13(金) 17:39:01.74 ID:j87fJt3YM.net] >>573 多倍長と小数は相反する概念じゃ無いぞ BigFloatも普通にJuliaとかである型だし このスレ理系がいなさすぎだろ 多倍長浮動小数点演算求められてんのに 「そんなものは誰にも必要じゃ無いから存在しない!自分で作れ!」とか 普通にGMPとかあるし普通はそれを奨める
584 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 17:41:05.56 ID:WOWtwvuFd.net] >>575 前半はこっちがはやとちったね。ごめんね。 後半はなんか文脈から言葉遊び以上の君が言ってること理解できないから俺の頭がおかしいんだな。 君が正しいよ。 >>573 >要件をハッキリさせずにいながら出てきた案はダメ出し >そりゃ顰蹙も買うさ そりゃそうだな。すまんね
585 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 18:28:33.10 ID:qE0lneeB0.net] ワッチョイ dd9b-Y0tO ワッチョイ 459b-Y0tO ワンミングク MMa3-Y0tO 質問の仕方も使う言葉も不正確で調べた回答者にダメ出しの上にワッチョイコロコロ NGでいいよ
586 名前:デフォルトの名無しさん [2020/11/13(金) 18:33:46.11 ID:lrdHTx5AM.net] BigFloatって 10÷3 するとメモリ喰らい尽くしてくれるの?
587 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 18:44:41.25 ID:UDp7AbcK0.net] >>579 扱う桁数を設定しておくんでしょ juliaだとsetprecisionというのを使うらしい
588 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 18:45:15.53 ID:907SkV9V0.net] >>576 >>544
589 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 18:46:10.29 ID:od/5f45td.net] え?普通にgmp勧めてそれじゃ精度が足りん!ってなったんじゃないの? 中身の詳細までわからんが… C++に有効桁数100桁の演算とかあるみたいだけど要求はメモリたくさん使うレベルなんだから兆オーダーレベルの桁数なんでしょ?
590 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 18:47:51.67 ID:iD09dkB6M.net] >>576 554で勧めたんだがスルーされたんだよ
591 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 18:59:56.02 ID:WXkqFeV00.net] やろうとしたこと無いから知らんのだけど例えば円周率を何兆も計算するのあると思うけど、そういう演算ってその桁数の小数点演算必要になるの? 普通にdouble程度で十分だと勝手に思ってたけど
592 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 22:02:04.34 ID:qUM0ZuKL0.net] wikipediaに依ると円周率の計算は π/4 =1- 1/3 + 1/5 - 1/7...らしい BigIntegerで1を必要な桁数だけ大きくすれば良いような
593 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 22:07:03.28 ID:KPuGe7Gc0.net] >>584 整数演算だけで出来るぞ というかすべての小数点演算は整数演算の組み合わせで出来る >>582 GMPのデフォルト精度は64ビットだから20桁くらいしかいけない precに大きなビット数設定してやれば何万桁でもいける
594 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 22:26:47.07 ID:A6rK79tx0.net] だから言語に分数型が必要だって言っただろアホが
595 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 23:04:03.67 ID:V7nqUCXH0.net] いや、も
596 名前:っとストレートに円周率型が必要 [] [ここ壊れてます]
597 名前:デフォルトの名無しさん [2020/11/14(土) 00:22:57.13 ID:XJ24TZhC0.net] >>585 https://www.youtube.com/watch?v=NaL_Cb42WyY
598 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 05:05:39.51 ID:hLsGLi/C0.net] 分数型があったところで無理数は表現できなくね? アレば便利なことには間違いないが
599 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 09:03:12.56 ID:cYQm19/50.net] >>590 三分の一が表現できるってだけで結構便利なんだな 自分でクラス作ってもいいけど
600 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 15:27:05.74 ID:HtCqr6h30.net] >>538 www.dotsakura.com/?mode=blog;id=115
601 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 09:17:33.20 ID:TE31pbc70.net] 日本でC#使うのは殆どUnityかWindowsデスクトップアプリだからな 数値計算とかしたいならPython使うしかない
602 名前:デフォルトの名無しさん [2020/11/15(日) 09:55:21.46 ID:zLhs1absM.net] 業務アプリで1/3することってあるよ
603 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 12:40:40.11 ID:wWBHTATOd.net] C#ってCやVC++と比べるとかなり遅い ですか? 遅いなら、時間の掛かる処理だけは速い言語で作るべきか悩みます マーシャリングすれば使えるみたいなので
604 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 12:45:13.00 ID:MP+vmq9O0.net] >>595 処理の内容と書き方による
605 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 12:45:47.16 ID:4zqmLj42M.net] 物にもよるが3割減ぐらいに思っておけば
606 名前:デフォルトの名無しさん [2020/11/15(日) 12:58:30.49 ID:TbjZIaKaM.net] 分数型を作るのは面白そうやん。約分や通分の機能を持たせておけば素敵。てかMS考えてくれ。
607 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 13:20:31.23 ID:ttHD4odoa.net] >>595 ファイル読み書きやネットワークアクセスが一切なくて100%CPUパワーを使うだけのプログラムなら差が出るかもしれないけど そうでなければ処理時間の差などI/Oにかかる時間に比べればごくわずかで塵にも等しい ので気にするだけ無駄 というかCPUパワーを極限まで使い倒すなら、C#でマルチコア並列実行できるよう処理を書いたほうが C/C++のシングルスレッド処理よりよっぽど早いかもしれない よほど低性能なマシンで実行するならともかく、今どきの環境なら全部C#で書くほうが無難だと思うけどね
608 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 13:23:38.35 ID:y3jy+ngDM.net] >>598 すでに有理数クラスがNugetにあるで https://www.nuget.org/packages/Rationals/ Example usage: Rational left = (Rational) 1 / 2; Rational right = (Rational) 1 / 4; Rational sum = left + right; // equals to: 3 / 4
609 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 16:21:09.71 ID:d0/9SCdg0.net] >>595 どうしてもC++のライブラリをC#で使いたいとかじゃないかぎり そのマーシャリングの処理が何気に重い気がするので 関数を何度も呼び出すみたいな使い方するなら ベンチマーク取ってみるとC#のみの方が速いかも知れないぐらいの差じゃないかな
610 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 16:38:42.28 ID:alkL58xG0.net] >>601 マーシャリングが重いって言うと例えば extern IntPtr GetProcAddress(IntPtr hModule, [MarshalAs(UnmanagedType.LPStr)] string procName); とする場合、のprocNameをAnsiに変換するときってヒープ使われるの? ヒープ使われるんだとしたら自前でstackallocしてbyte*として渡そうと思うけど
611 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 08:44:05.44 ID:dMCYT8Lea.net] >>595 C#とC/C++の処理速度はほとんど変わらないよ ただ、C#はどうしてもGCの影響を受けるから、数msでも遅れたら困る用途には使えない まあ、そんな要求は滅多に無いけどね
612 名前:デフォルトの名無しさん [2020/11/16(月) 10:53:58.92 ID:sF1WJXNTF.net] GCは何時発動するか判らんのが欠点だけど C#のGCはタイミングは常に判ってるのかな
613 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 11:05:41.67 ID:qYJ3Dm/90.net] タイミングがわかるわけじゃないけど引き起こす可能性のある手続きはわかっている コーディングでそれを避けられる余地があるからUnityとかでまだ採用されてるんじゃない?
614 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 11:27:25.87 ID:jhzDiMvL0.net] 本当にクリティカルな区間はGCを(出来るだけ)禁止する等ある程度は制御できる
615 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 11:30:54.33 ID:Ixi420Wb0.net] GC禁止する前に、あらかじめ明示的にGCって出来る?
616 名前:デフォルトの名無しさん [2020/11/16(月) 12:05:22.31 ID:g+EUxdXIr.net] GC連打しまくればいいよ
617 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 13:22:47.27 ID:jhzDiMvL0.net] GC.Collect()で強制実行出来るけど 世代上昇の問題もあるし使いこなすのは難しい
618 名前:デフォルトの名無しさん [2020/11/16(月) 13:24:47.04 ID:sF1WJXNTF.net] 生き残りは強毒化するのか
619 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 14:26:09.78 ID:vD+2eRn00.net] 強制GC連打派 30秒に一回とかやってる それでもなんか1秒ぐらい止まるときあるよ
620 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 15:09:58.28 ID:dMCYT8Lea.net] ストップザワールドしないGCを実装してくれたらもうアプリケーションでC/C++を使うことはないかも
621 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 15:48:59.14 ID:eppT6X190.net] むしろVC++に絶対的なGUI決定版が出たら個人開発のデスクトップアプリでC#使う事なくなるだろうな 個人開発程度の規模だとマクロのあるC++の方が返って開発速度早くなることも多いし
622 名前:デフォルトの名無しさん [2020/11/16(月) 17:13:00.16 ID:VrPIfzyD0.net] GCSettings.LatencyModeで選べるよ
623 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 18:58:34.38 ID:ZSbSJvSB0.net] フォーム上に設置したボタンを表示したいのですが、 フォームだけ非表示もしくは透過0%にする方法を教えてください フォームのopacityいじるとボタンも非表示になってしまいます
624 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 19:19:54.16 ID:Le2Iq+UD0.net] フォームの背景を単一色で塗り潰してTransparencyKeyで透明にしたい色を指定
625 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 22:13:31.62 ID:G4eaPjr50.net] c#とvsがなかったら一生プログラムやろうなんて思わなかった
626 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 23:04:37.19 ID:cHmpQkkDM.net] C#っていい言語だよね 飾らず、気取らず、それでいて力強い。
627 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 23:25:26.59 ID:LWdxEv1Gd.net] >>596 ,599,601,603 ありがとうございます!
628 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 23:34:54.33 ID:LWdxEv1Gd.net] >>597 ありがとうございます!
629 名前:デフォルトの名無しさん [2020/11/17(火) 01:43:59.23 ID:lN0UCm9Ya.net] ファイルの日付時刻を比較したいんですがどうしたら良いですか?
630 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 01:44:52.21 ID:qgtrLMb80.net] datetime型を比較すれば?
631 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 10:32:21.22 ID:sO+4iEeI0.net] >>621 datediffや
632 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 13:16:45.53 ID:GB1Hm8K4a.net] >>615 WPFなら普通にできたはずだけどFormでは簡単にはいかないと思うよ。 不完全だけど一番簡単にそれっぽいのを作る方法はButtonを乗せるためだけの別のform2を作って form1をそれの親にすること。 public Form1() { InitializeComponent(); var loc = new Point(100, 100); var form2 = new Form2(); Action a = () => form2.Location = PointToScreen(loc); form2.Show(this); Load += (s, e) => a(); Move += (s, e) => a(); }
633 名前:デフォルトの名無しさん [2020/11/17(火) 15:43:12.61 ID:WBCoLdBR0.net] WPFで作る利点ってのはクロスプラットフォームに出来るってこと? Formしか作ったことないんやけど
634 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 16:31:37.70 ID:EuUrSlgt0.net] >>625 WPFはWinFormsと同じくWindowsのみ
635 名前:デフォルトの名無しさん [2020/11/17(火) 16:58:38.50 ID:RncVdZGd0.net] 利点というか世界的に見たらWPFのほうが主流だから むしろ今なぜFormなのかという感じだな
636 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 17:15:11.29 ID:ogxxYnEyH.net] Formsの方が簡単だから……
637 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 18:04:37.48 ID:YcEiD0LrM.net] グラフィック関係が壊滅的なので skiaとかで支援しないと使い物にならないWPF を勧めるとはお主も悪よのう
638 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 18:39:12.50 ID:Hw9PIOp10.net] WPFなんて死産みたいなもんじゃね・・・ 出て結構経つけどWPFの仕事とかの話全然聞かないわ
639 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 18:46:22.75 ID:PM1Apx6y0.net] Visual Studioの皮ってWPFなんでしょ
640 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 19:20:07.15 ID:cGx3KuHJ0.net] >>630 仕事はいくつかあった 建物の入り口にあるディスプレイに飾っとくようなアプリ 3D空間にオブジェクトを配置するアプリ
641 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 19:24:53.52 ID:FpFQah7Cd.net] そういうタイプはunityとかのほうが楽そう
642 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 19:26:16.29 ID:iD8vjuLm0.net] うちは数年前から新製品で使い始めたよ。 特定業界向け会計ソフトだから一般の目に触れる事は殆どないと思うけど。
643 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 19:34:04.55 ID:cGx3KuHJ0.net] >>633 全くその通りで結局開発が進んで行くうちに帯に短し襷に長しみたいな中途半端力凄い >>634 そういうのは絶対Webアプリのが使い勝手いいんだよなぁ ログインしたらどこでもどのPCでも同じって強過ぎるよね
644 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 19:37:52.56 ID:cGx3KuHJ0.net] あと何気に困ったのが音 後ろで音楽かけてボタンとか押したら音鳴らしてってのが わりかしできんかったっていうかなんかあやしいライブラリ使う羽目になったっていうか まあ、色々動く画面作りたいときはいっそunity考えた方がいいと思う
645 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 19:42:43.18 ID:qgtrLMb80.net] unity 只け?
646 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 20:40:45.04 ID:Tiv5/dm/0.net] いまだに新規開発案件でforms使うところあるの?
647 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 20:44:36.18 ID:ooCV67uO0.net] あるよ
648 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 20:56:30.30 ID:Fq1hGO400.net] FAだとformで十分でウマーです。
649 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 21:02:12.76 ID:Qs8QfDsD0.net] windowsなのにformsを使わない理由を逆に知りたい
650 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 21:04:02.66 ID:qYg8UIQi0.net] >>641 高DPI対応が面倒 バインディングが使い物にならない
651 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 22:28:01.75 ID:Rs8mNRLj0.net] そして来年からはWinUIというWPF紛いのものが登場する、と Win10ぽいルックスとx:Bindでコンパイル時にバインドエラー発見ってのはかなり大きい そのうちAOTコンパイルもサポートされるそうだ
652 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 22:33:32.13 ID:GB1Hm8K4a.net] WPFは(既に実質的にはそうだったけど)いよいよディスコンになるの?
653 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 22:39:07.63 ID:qYg8UIQi0.net] >>644 現状維持 これからはWinUI推しでWinFormsとWPFは放置だろ
654 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 22:40:03.59 ID:GB1Hm8K4a.net] そうか無くなるわけじゃないよねw メンテモードか
655 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 22:48:31.36 ID:60XguBAo0.net] .NET MAUI 楽しみ
656 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 00:03:39.25 ID:MO86P+zt0.net] maui期待しないほうがいい ただの名前変更レベルの予感 Microsoftはなぜxamarinが失敗したか総括したのか? 表面上何もかわってないように見える 技術的にはSlimRenderアーキテクチャだかようしらんが
657 名前:デフォルトの名無しさん [2020/11/18(水) 15:05:11.31 ID:7Ekft4aVr.net] VScodeで成功してるんだがElectronでいいじゃん Electron.Netを正式サポートしろよ
658 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 15:10:25.22 ID:870PPpSlr.net] >>648 だね。
659 名前:デフォルトの名無しさん [2020/11/18(水) 15:39:37.23 ID:P3jn+KK20.net] Electronは失敗だよな VSCodeだけだし
660 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 15:46:24.24 ID:UaAov2o20.net] >>76 C#というのは前身がDelphiという言語なんだ そのDelphiはVBとの死闘の末敗れてしまった だからC#(Delphi残党)がVBを憎んでいるのは当然なんだ ガンダムで例えるとC#はネオジオンでVBは連邦軍なんだよ
661 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 15:54:18.16 ID:IPbBahkD0.net] >>652 笑
662 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 15:54:52.11 ID:IPbBahkD0.net] >>651 笑
663 名前:デフォルトの名無しさん [2020/11/18(水) 16:11:46.00 ID:YM9VgCd+0.net] >>638 わたしは中国人あるよ
664 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 16:58:13.83 ID:gt3SSD7y0.net] >>651 SlackやDiscordもElectronだよ
665 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 16:59:19.38 ID:oW5F7Byc0.net] Azure Data Studio
666 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 19:57:00.23 ID:hzlSiPtIM.net] >>657 ゴミは引っ込んでろ
667 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 20:11:49.12 ID:oW5F7Byc0.net] >>658 え?
668 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 21:07:17.11 ID:RhWccaic0.net] こいつら質問スレでテンプレ無視して雑談しなきゃならない使命でもあるのか?
669 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 10:08:06.32 ID:fvT6uEqW0.net] StringBuilderのパフォーマンス目的で使う割には最終的なToString()で再Allocが発生するという矛盾に嫌気がさして アンセーフなstringラッパー作って public Length => { fixed (char* p = str) *(int*)(p - 2) = value; }みたいなことしてマニュアルで長さ変えたりしてるんだけど、こういうことしてるとGCに影響あったりする? 初期バッファとしてstr = new string('\0', 0x1000);として0x1000文字分のメモリを頂戴したのに、上記の動作で長さを5に変えたりしてると、GCによる解放時に5文字分しか解放されずに残りがリークするって事にはならないんだろうか?
670 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 11:07:34.05 ID:xT43LVbE0.net] > StringBuilderのパフォーマンス目的で使う割には最終的なToString()で再Allocが発生するという矛盾 そもそもそこは別に矛盾じゃないだろ 「結合のたびにアロケーションが発生する」のを防ぐもんなんだから
671 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 11:21:03.45 ID:RERzCypk0.net] >>661 ZStringを使いなよ 色々な悩みから解放されるよ
672 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 11:31:10.28 ID:fvT6uEqW0.net] >>663 良く知らないけどそれもその都度string生成してるんじゃないの? スレッドアンセーフで良いから生成は初回かキャパ更新程度に留めて使いまわしたいんだよね そのキャパ更新の際に捨てるときにstring.Lengthを弄ってるとメモリリークの原因になるのではないかと
673 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 11:37:15.19 ID:fvT6uEqW0.net] さすがに内部でcalloc(sizeof(char), 0x1000)とかしたときの確保サイズメモっておいてくれてるのかね GC内部の細かい挙動はMS社員でもない限り知りようないか
674 名前:デフォルトの名無しさん [2020/11/19(木) 13:58:51.49 ID:5X7qze6C0.net] NameValueCollectionをコピペすると自動整形がうまくいかなくてかっこの位置がおかしくなるので 各行ごとにDelete→Enter→Endを繰り返して手動で整形しなおしてるのですが、ちゃんと整形してくれる方法ってあるんですか? ↓みたいになったりする。 NameValueCollection vals = new NameValueCollection { { "hoge","hage"}, { "fuge","hage"}, };
675 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 15:16:47.51 ID:wGypJVfq0.net] 1行にする 予期しないところにある改行が原因でフォーマッターが動かない
676 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 15:26:56.05 ID:3nmF1AP8M.net] >>661 いやそもそもStringBuilder.ToString()は再アロケーションしないぞ 内部のバッファをそのまま引き継ぐ実装だ その後StringBuilderの方に追加の変更が加えられた時点で再アロケーションが発生する
677 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 15:52:44.75 ID:5X7qze6C0.net] >>667 1行というのはこういうことですか? NameValueCollection vals = new NameValueCollection{{ "hoge","hage"},{ "fuge","hage"},}; 実際には{ "hoge","hage"},が50行とかあったりするので↑では視認性やエラーチェックが面倒になります。
678 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 16:13:28.80 ID:XTntku/z0.net] >>668 StringBuilderはchar[]であってstringではない たとえStringBuilderのCapacityがLengthと丁度良く=であったとしてもToStringで別途string用にアロケーションされる StringBuilderはLengthを自由に変更出来て任意のインデックスからappendできるので、内部バッファがそのまま返されるようならstringは不変という法則が簡単に崩れ去れることになり>>661 がやってるunsafeと何ら変わらなくなる
679 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 16:33:47.05 ID:wGypJVfq0.net] >>669 そういう長いものに自動整形を期待しない そういう長いものを人間が視認する必要性を排除する この手の自動整形をしようとすると負荷が半端ないことになって実用性に欠けるのですっぱり切っているのだと思う
680 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 16:48:49.64 ID:k15rqtpOa.net] >>670 そんな馬鹿な実装するはずがないと思うよw そもそもイミュータブルとは状態を変更する方法を外部に提供しない、という意味以上でも以下でもない。 そこのところを勘違いしている気がする
681 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 16:50:55.24 ID:EbSX4tjh0.net] >>672 ソース見れば普通にわかるやろ https://referencesource.microsoft.com/#mscorlib/system/text/stringbuilder.cs,338 string ret = string.FastAllocateString(Length);
682 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 17:07:14.79 ID:9igY/Fs20.net] りふぁれんすそーすw
683 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 17:26:57.34 ID:k15rqtpOa.net] .NETのStringが機械語レベルでどう実装されてるか勉強したことはないが、 普通に考えればパスカルストリングとCストリングのあいの子みたいな単純な構造でしょたぶん。 ごにょごにょした後のバイト列を普通にstringと「みなす」だけにするよね。 わざわざ別のメモリ確保してベタコピーする馬鹿な実装をする人がいるだろうか。 その必要性ができてからで遅くないと思うんだけど。
684 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 18:08:19.31 ID:fvT6uEqW0.net] >>675 C#のstringはBStrというoffset0にlength、offset4からcharの配列、そのoffset4へのポインタがstringとなる 末尾がnull文字じゃなくても問題ないが基本は末尾にnull文字が入ってるためconst wchar_t*としても扱える そんなことはどうでもよくてマネージド内で上記の内部バイナリを書き換える方法は一切無いからわざわざアンセーフstringラッパーを作ったんだよ 一見書き換えられてるように見えるstring操作は全て新stringとして生成されてるだけだからな +連結は長さが変わるから想像できるだろうけど、Substringすらも切り取り参照をしている訳ではなく新たにstringを生成してる(それを解決しうるマネージドな手段としてReadOnlySpanというのも一応あるが)
685 名前:デフォルトの名無しさん [2020/11/19(木) 19:50:48.14 ID:nKYhLbF50.net] 細かいことを気にしてまでC#を使う矛盾をどう解決してるのか気になるわ
686 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 20:59:45.17 ID:fvT6uEqW0.net] >>677 だからプライベートリポの8割はC/C++って程度には普段はC使ってるけど でもその理論言っちゃうと本家StringBuilderも要らんってことになるしな 全部+とか$"{}"でええやん
687 名前:デフォルトの名無しさん [2020/11/19(木) 21:03:40.41 ID:nKYhLbF50.net] StringBuilderを使えというのは学ぶでしょ そこまででいい それ以上やるならもうC#使う意味ない
688 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 21:04:23.57 ID:fvT6uEqW0.net] >>679 それじゃSpanとか実装したMSがバカみたいじゃん
689 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 21:28:29.15 ID:A4wcMVuA0.net] >>663 が挙げてたZStringの解説記事 個人的にはそこまでパフォーマンス気にするような物作ってないから「へー」って感じで読んだだけだけど ZString – Unity/.NET CoreにおけるゼロアロケーションのC#文字列生成 ttps://tech.cygames.co.jp/archives/3383/
690 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 21:32:12.66 ID:s0VdR5fOd.net] 国内C#erで有名どころだしstringはパフォーマンス絡みでよく上がるから割と有名な方じゃないかな? あんなにパフォーマンス気にする人が知らないのには驚きだけどw
691 名前:デフォルトの名無しさん mailto:sage [2020/11/20(金) 01:24:52.99 ID:ViPIBq0U0.net] パフォーマンスは気にしてないんじゃないの? アロケーション気にしてただけで
692 名前:デフォルトの名無しさん mailto:sage [2020/11/20(金) 07:19:27.10 ID:ShozvaYJ0.net] C++は基本がスタック、C#は基本がヒープ この二者の最大の差はこれなのでC#のパフォーマンス改善=アロケーション回避に終始する
693 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 03:48:47.56 ID:zIAbzPq60.net] 俺バカだから何万回の処理で何ms差が出るのか教えてほしい
694 名前:デフォルトの名無しさん [2020/11/21(土) 08:27:18.63 ID:WoKZFdST0.net] 手段が目的と化している人達にそんなこと聞いても無駄だよ
695 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 11:57:08.18 ID:6fJp/BaL0.net] 初心者スレらしい馬鹿がいて嬉しい
696 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 11:59:54.22 ID:zQZxJMDr0.net] >>681 のブログ主みたいな人の方が結局生産性も高いのだから、パフォーマンス厨を馬鹿にするのは知への嫉妬にしか見えない 尤も初心者用スレで話す内容ではないが
697 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 13:04:44.65 ID:Ny+zGkjNa.net] まあちょっと前の数値演算の話と同じだよ。 純粋な学問として円周率の桁数を追求することを否定する人はいないけど、 実用上必要ないのにそれを追求するのはただの馬鹿なフェティシズム
698 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 13:16:59.22 ID:QfF2kXL70.net] こだわっている当人が>>663 を提案されているのに >良く知らないけどそれもその都度string生成してるんじゃないの って見もせずに切り捨てているのがわけわからない。自分の作ったunsafeメソッド誉めてほしかったの?
699 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 15:32:05.57 ID:TFceIuuT0.net] 誰も>>661 の質問自体には答えてあげてないんだからスレチとしてスルーで良いのでは
700 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 16:59:03.08 ID:ZU3qCVhf0.net] ASP.NET Coreを勉強してみようと思うんだけど レンタルサーバの「使えるプログラム」のところに PHP, Ruby, PyThon, Sh としか書かれてないところはダメですよね?
701 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 18:32:27.77 ID:+zQLxjm30.net] 勉強ならローカルで動かせばよろし。
702 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 19:15:26.59 ID:pEQG3awY0.net] >>690 ライブラリ教えてなんてレスは一度もしてないし主題とは違う返信に対して検索や外部リンクまでチェックする義務が発生する理屈の方が訳わからない 提案してくれた>>663 には感謝するけど、あくまで自分の質問は660のレス内容 C#の質問をしたつもりだけど言語の質問とは違うということであればスレチと言われても仕方ないが
703 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 20:16:31.79 ID:WQW9Bpg70.net] >>669 編集してるXXX.csファイルを読み込んで NameValueCollection vals = new NameValueCollection行の次の {行からそのあとの};行の間の行に先頭スペースを揃えて挿入して ファイルを上書き保存するミニアプリを作って実行すればいい テキストの平文ファイルだから編集は簡単 VSで編集中にそのような外部エディタで編集がされると 編集を反映しますかって即座に聞いてくるからはいすれば位置がそろう
704 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 23:02:14.09 ID:eXf0RCq40.net] >>689 全世界で行われてる円周率演算がすべて世界記録出すために動いてると思ってる馬鹿
705 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 02:05:01.90 ID:eyJ/0uPg0.net] >>694 @マジレスするとメモリリークはしない。こんなのはGC.Collectしてメモリ使用量を見比べるだけで分かる Aでも>>661 の使い方ではインターンプールで潜在的なバグを抱えるからやめた方が良い Bやりたいこと汲み取るなら先人が同じ悩みから到達したソースを使うべき CZStringいいよ 余計な遠回りをしないようにこの結論から言ってくれてるんだよ >>663 は優しい奴だよ、まったく
706 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 02:09:21.16 ID:r7dn6Jzr0.net] >>696 何のためにやってるの?自己満オナニー?
707 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 02:37:39.25 ID:XfbnXwSba.net] >>696 どっから世界記録とか出てくるの?w 読解力大丈夫かこの人
708 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 08:48:28.54 ID:VTf/cbNB0.net] >>697 マジレスすると今のところはヘッダオンリーならぬ単ソースオンリーで済ませたいのであんまり外部ライブラリには乗り気じゃないというのもあるが とは言えZStringを拝見したところu8stringをC#で実装出来てる凄いライブラリであるようなのでtext系ファイルやらwebやらdbのクエリやらで利用したい構想立ちまくったのでありがたくスターポチって記憶させていただく 確かにただのバッファとして作ったものの実態はstringに違いないので何かの拍子にstring.Internしてしまうと結構不味いことになるね とりあえずGCに影響ないと教えてくれて大分スッキリしたのでありがとう
709 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 09:03:29.09 ID:0zyBqMyr0.net] >>699 「円周率の桁数を追求する」ってのは結局そういうこと
710 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 09:27:31.41 ID:7FLAKb9y0.net] 一番じゃないと駄目なんですか?
711 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 13:34:50.51 ID:vJ51qgrt0.net] superPIじゃ駄目なんですか?
712 名前:デフォルトの名無しさん mailto:sage [2020/11/25(水) 08:28:57.90 ID:5XzEVJhy0.net] COMインターフェイスをstructに付けてboxing発生させずに使用する方法って皆無でしょうか?
713 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 16:25:59.35 ID:Msb6oswN0.net] c# プログラマは goto でコロナを拡散してるから、ウィルス作成罪とかで刑務所にぶちこむべき。 もちろん、実質的に goto と同じ if文 、swich case とか使ってるc# プログラマも有罪。 swift や Pythonプログラマは goto 使ってないから無罪。
714 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:07:38.54 ID:goyIH8CW0.net] 面白いと思って書いたの?
715 名前:デフォルトの名無しさん [2020/11/28(土) 17:18:49.30 ID:qYAW4hVUM.net] 705は死刑
716 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:53:33.87 ID:yGy7muY00.net] >>705 Go To Hell
717 名前:デフォルトの名無しさん [2020/11/28(土) 17:57:32.34 ID:qYAW4hVUM.net] >>708 このハゲェ!
718 名前:デフォルトの名無しさん [2020/11/28(土) 18:38:36.41 ID:pMGwV9fR0.net] Windowsの ini ファイルの内容を Section, Key, Value の順で List<Dictionary<string, List<Dictionary<string, string>>>> ini; ini = new List<Dictionary<string, List<Dictionary<string, string>>>>(); として取り込んだものから Section の一覧(Delphi の ReadSections 相当)を 得たいのですが方法がわかりません。 教えていただけませんでしょうか。
719 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 18:43:14.08 ID:YkgqIE2E0.net] それのどこが分からないのか分からん あとListはいらなくない?
720 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 18:54:47.55 ID:v3rIW/CF0.net] >>705 よくわかりません。 C#はgotoを使わずとも実質gotoできるが、 swiftやPythonが実質gotoもできない根拠を示して下さい。
721 名前:デフォルトの名無しさん mailto:<
[] [ここ壊れてます]
722 名前:>2020/11/28(土) 19:14:35.24 ID:pMGwV9fR0.net mailto: >>711 説明が下手ですいません。 セクション名の一覧が下記のような考え方で取得できないかと考えていました。 public void ReadSections(ref string[] sections) { Array.Resize(ref sections, ini.Count); var i = 0; foreach (var dic1 in ini) { sections[i] = セクション名 i++; } } 書き込んだ後、下記のようにしたら希望の動作をしました。 public void ReadSections(ref string[] sections) { Array.Resize(ref sections, ini.Count); var i = 0; foreach (var dic1 in ini) { dic1.Keys.CopyTo(sections, i); i++; } } [] [ここ壊れてます]
723 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 19:41:10.86 ID:7NcH7NyO0.net] >>710 自分もList使う意味が見いだせない var ini = Dictionary<string, Dictionary<string, string>>とかで良いんじゃないの? これならvar value = ini["セクション名"]["キー名"]で取り出せる if (ini.TryGetValue("セクション名", out var keys) && keys.TryGetValue("キー名", out var value)) とやったほうが良いと思うが 代入はini["セクション名"]["キー名"] = value;
724 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 20:02:20.04 ID:M3lV8yHm0.net] Sectionの配列を得たいなら>>714 にLinqのini.Keys.ToArray()
725 名前:デフォルトの名無しさん [2020/11/28(土) 20:33:03.95 ID:pMGwV9fR0.net] >>714 ,715 .NET 5 が出たのを機に c# を始めたところなのでよくわかっていません。 勉強がてら自作の Delphi7(Lazarus) の自作ライブラリと同じ物の作成に挑戦中です。 ini ファイルの読み込みもネットからダウンロードしたものをベースに 改造して動きを勉強しているところです。 ですので List になっている理由もまだ理解できていませんし、Dictionary も 今日初めて見た状態です。一応 List を外してみると foreach (var dic1 in ini) { if (dic1.ContainsKey(section)) { foreach (var dic2 in dic1[section]) { if (dic2.ContainsKey(key)) { return dic2[key]; } } } } のような場面で ContainsKey がエラーとなりました。 とりあえず Delphi の TMemIniFile と同じ程度までできました。
726 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 21:13:18.17 ID:M3lV8yHm0.net] >>716 Listを外してforeachする場合はこう変える必要がある foreach (var dic1 in ini) { if (dic1.Key == section) { foreach (var dic2 in dic1.Value) { if (dic2.Key == key) { return dic2.Value; } } } } もっと簡単な方法は>>714 に書かれてる通り if (ini.TryGetValue(section, out var keys) && keys.TryGetValue(key, out var value)) return value;
727 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 21:20:41.11 ID:M3lV8yHm0.net] pascalのiniなんてもう遥か昔に使ったきりだからあんまり覚えてないがそれっぽいの作るとしたらこんな感じか Dictionary<string, Dictionary<string, string>> ini = Dictionary<string, Dictionary<string, string>>(); string ReadString(string section, string key) { if (ini.TryGetValue(section, out var keys) && keys.TryGetValue(key, out var value)) return value; else return null; } これだとnullチェックが必要になるから、Tryメソッドの方が便利だったりする bool TryReadString(string section, string key, out string value) { value = null; return ini.TryGetValue(section, out var keys) && keys.TryGetValue(key, out value); }
728 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 21:27:31.90 ID:M3lV8yHm0.net] そういえばiniは無かった場合の規定値を第3引数に入れておけばいいだけか それならTryメソッドいらんね
729 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 23:40:53.47 ID:xlHMBUaz0.net] sectionの一覧が欲しいって言ってるのに、valueを取り出す説明を延々してる奴何なの?
730 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 00:02:00.65 ID:agHPEKHb0.net] string GetValue(Dictionary<string, Dictionary<string, string >> ini, string section, string key){ if(! ini.ContainsKey(section)) return null; if(! ini[section].ContainsKey(key)) return null; return ini[section][key]; } c#に限った事ではないが、何をしたいのか分かりやすいコードを目指そうな。
731 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 00:10:23.95 ID:eEpZgXkU0.net] だから質問者が欲しいのはvalueじゃなくてsection一覧だっての
732 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 06:31:38.45 ID:kNuJF9Ar0.net] datagridviewにユーザーコントロールを埋め込みたいんですけどどうすればいいですか? windowsformアプリです ていうかdatagridviewじゃなくてもユーザーコントロールをリストで表示できれば何でもいいです どなたか教えて下さい
733 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 08:16:40.50 ID:+pk7xniq0.net] >>723 TableLayoutPanel とか FlowLayoutPanel はどう?
734 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 08:16:40.50 ID:+pk7xniq0.net] >>723 TableLayoutPanel とか FlowLayoutPanel はどう?
735 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 09:35:53.03 ID:yrxBBFH+0.net] >>720 それは一番上に書いたんだが
736 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 09:40:01.71 ID:yrxBBFH+0.net] >>721 section取り出す説明は昨日一番最初のレスで書いたからもう脱線して話すけどなんでここまでTryGet使わない奴って多いんだろうな どうせ後々インデクサアクセスするならTryGetValueの方がよっぽど分かりやすいと思うんだが
737 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 12:22:24.94 ID:kNuJF9Ar0.net] >>724 ありがとうございます 試してみます
738 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 17:19:06.82 ID:b9LXd7l70.net] >>723 DataGridViewCellとDataGridViewColumnを継承して自作
739 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 17:32:18.08 ID:MpNpLm4W0.net] >>721 >>727 ConstainsKey → []は、まずContainsKeyの内部でFindEntry走らせて存在確認し、存在したらインデクサアクセスして再度内部でFindEntry走らせて取り出すという2度手間してるIQ低いコード TryGetValueは存在確認時にFindEntryしたついでに値も取り出すというスマートな関数 そもそも前者で済むならTryGetValueは存在意義ないから、上記の仕組みを想像できずとも「なんでTryGetValueってあるんだろう?」と疑問に思わなければいけない ま、C#は多様性受け入れてる言語だから個人開発なら好きに書いたらいいが
740 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 18:14:07.88 ID:o/YPVzQP0.net] そういう値をローカル変数に代入するのを無駄と言い張って勝手にワンライナーに書き直すような地雷プログラマの振りをするのはやめろよ……初心者が本気にしたらどうするんだよ
741 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 18:23:09.50 ID:MpNpLm4W0.net] >>731 今の話でローカル変数やワンライナーが出てくる余地あるか?
742 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 18:52:20.22 ID:o/YPVzQP0.net] >>732 明確にガード節で判定が切り分けられているのに、 「TryGetValueなら判定と取得を同時に行える」と言い出すのはまさしくワンライナー君の物言いだぞ ifをあえて二つ用意してContainsKeyを使ってる時点で 「ははーん、論理重視のコーディングスタイルか」と察してやるのが有能なプログラマってもんだ
743 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 18:58:47.11 ID:MpNpLm4W0.net] >>733 ??? 2連続で全く不必要に同じ処理を挟むような奴がとても論理重視とは思えないんだが、ContainsKey + []とTryGetValueじゃ2倍以上パフォーマンス変わってくるって知ってる? さっきも言ったけどContainsKeyでも内部的にFindEntryが走り、インデクサアクセスでも再度FindEntryが走るという無駄がある 再度言うがMSがなんでTryGetValueというメソッドを公式でわざわざ用意したかって疑問に思わない? 簡潔さ全振りならそもそもLinq使えばいい話
744 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 19:01:28.82 ID:tRrXGfded.net] メソッドの戻り値を一回判定するだけなら 一行で書かないほうが変じゃね? それをわざわざ一旦保存とか逆になんの意図があるのかと たまにはデバッグやらログで出したいからと言うのはあるがそれは2回利用に当たるから入れて当然やしな
745 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 19:41:11.64 ID:o/YPVzQP0.net] >>734 久々にふふってなった まるで昨日の俺を見ているようだ……お前にもいつか悟れる日が来ると良いな
746 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 20:16:26.39 ID:EVjNfLc/0.net] 判定と取得を行いたいんじゃなくて取得を行いたい なのに判定しないとプログラム上まずいことになるので判定機能付きの取得メソッドを使う 読む上でわざわざ判定と取得を別に書いてるならそこにあえての理由があるんだろうな、と推測しないといけない 今回のケースならあえてのケースなど無いので可読性を下げる要因でしか無い
747 名前:デフォルトの名無しさん mailto:hage [2020/11/29(日) 20:17:12.32 ID:3Ka2HmX40.net] >>736 きみ中学生? 男?女?どこ住み?
748 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 20:28:09.84 ID:HJnVnweF0.net] >>736 それは廓然大悟かね?
749 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 20:31:48.44 ID:yrxBBFH+0.net] >>737 これのどっちが可読性良いかなんて個人の感想レベルだろ 実際俺は100%下のほうで書いてるけど一度もコードレビューで指摘されたことないしな そして>>734 が言うように実行効率は下の方が2倍近く良いので下を選択すべき理由はある 一方で上を選択すべき理由は見当たらない if(! ini.ContainsKey(section)) return null; if(! ini[section].ContainsKey(key)) return null; return ini[section][key]; if (!ini.TryGetValue(section, out var keys)) return null; if (!keys.TryGetValue(key, out var value)) return null; return value;
750 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 20:43:57.67 ID:yrxBBFH+0.net] 一応言っておくけどここでは713や720に合わせて書いてるだけで実際には1行で書いたりこんなに複数retは使わない returnは一つにしろというレビューは受けたことあるんでな
751 名前:デフォルトの名無しさん mailto:hage [2020/11/29(日) 20:51:31.28 ID:3Ka2HmX40.net] >>740 普通に英語として下の方が直感的に分かる 上だと今ですら非直感的な上に変数名によっては更に分かりづらくなる可能性をはらんでる
752 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 20:54:18.24 ID:YUoXGIHl0.net] >>720 TryGetValue()知ってるオレカッケー って言うおこちゃまだろw
753 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 20:56:55.50 ID:EVjNfLc/0.net] 無理に一行にするな、が通るならreturnを1つにしなくていいのでは? 数十行あるメソッドのいろんな箇所でreturnしてると気持ち悪いと思うが、こういうタイプなら複数returnで良い 可読性が個人レベルなのはそのとおり 文字の並びが似通っている、ではなくどういう機能を呼んでいるか?という意味 判定付き取得メソッドが標準で用意され、しかもメジャーな内容でパフォーマンスも良い それでもあえてそれを呼ばないのは特殊な事情があるのでは?と読み手の思考を止めることにつながるという意味
754 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 21:06:40.39 ID:o/YPVzQP0.net] >>740 上のコードを採用する理由は何の値を戻しているか即座に分かるところ、と俺は判断した return ini[section][key]; この一文で読解に要する数秒を削る為だけに2倍程度のパフォーマンスを許容するのは普通にありだよ
755 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 21:23:27.82 ID:EVjNfLc/0.net] メソッド名見りゃそれはわかんじゃん return文にそういう責務を与える意味は? どうしても必要というならコメントでも書いとけば良い
756 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 21:36:16.22 ID:yrxBBFH+0.net] >>744 returnについては可読性に関わる納得できた理由はちゃんとあるんだが自分やチームが使わないというだけで別にうちのコーディング規約を議題に上げるつもりはない(ツッコんでくる人いそうだったから一応書いただけ) まぁもう好きにしたらええんやない C#メインで使っていきたいなら言語として用意されてるものは出来る限り利用すべきと思うけど そこまで学習コスト払いたくないってことなら一つの方法を出来る限り使いまわすというのも利に適ってるしな
757 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 21:49:34.68 ID:EVjNfLc/0.net] チーム内でのローカルルールがどうなってるかはどうでも良いんですよ そのチームで合意が取れてるならなんの問題もない ローカルルールを隠した状態で突っ込まれてローカルルールなんです!って言われても知るかよ、という感想しか出ない ローカルなものでないなら、基本的には標準に準拠すべきで標準がわざわざtryメソッドを回避している書き方をしていない限り公の場でもそれに準じたほうが良いのでは?というだけ
758 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 21:53:07.17 ID:yrxBBFH+0.net] >>748 いやだからTryGetValueに関してはそれが標準だろっていうのが一貫した俺の意見であってローカルルールなのは>>741 で書いた事 実際にギブハブなんかで数多くのプロジェクト参考にしてきたけどLinqで手っ取り早く書く事は多くてもTryGetValueを使わずにContainsとインデクサとかいう非効率な方法採用してる人なんて見た記憶ないしな
759 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 21:58:49.11 ID:EVjNfLc/0.net] >>749 なんで突っかかってくるかわからんけど747の前半は複数retの話、後半はtryの話 わざわざローカルの話である複数retのことなんざ話題に上げんで良いよ、try使うのが標準なんだからそれに習ったほうがよくね、 後半は君と同意見なんだよ
760 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 22:01:07.98 ID:yrxBBFH+0.net] >>750 捕捉程度のノリで書いた事に異様に突っ込んでくるなと思ってビックリしたんでね それも議題に上げたいのであれば>>740 でそういう書き方してるから
761 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 22:11:12.12 ID:EVjNfLc/0.net] >>751 前提として標準に準拠したほうが良いよね、という主張がある 標準では複数retなんて当たり前に使ってる それをなぜか否定しているので突っ込んだらローカルルールだ!と言われる そういうローカルルールがあるのは構わんが、それならそう明記しなきゃ標準に準拠しようという主張とズレてブレブレなだけでは? まさかレビューを受けたことがある、がうちにはそういうコーディング規約があるんです、の意味だったの?
762 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 22:16:38.50 ID:yrxBBFH+0.net] >>752 だから本気で否定したいなら739でもそうやって書いてるって言ってるやん 740で書いたのは「沢山return書いてる時点で可読性低い」みたいなツッコミが入るかなーと予測して"一応"と前置きして書いたと言っただろ そこを議論するつもりはないと書いたのに異様に拘るんだな
763 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 22:22:25.03 ID:kxXRvhGP0.net] 複数リターン禁止www
764 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 22:22:55.87 ID:o/YPVzQP0.net] >>749 正直俺も見たことないが、>>721 が書いてるんだからいるところにはいるんだろ 肝心なのはそいつが何を思ってそういうスタイルにしたのか察して評価してやることで、 >>730 みたいに重箱の隅突いて喜ぶのはただの地雷コーダーだからやめるべきだよ 例えば誰かが「ギブハブ」とか言ってても、わざわざ「ギブハブってなんだよバカかよ」と噛み付く必要はないだろ? GitHubなのは分かるし話は通じてるんだからこいつの中ではこうなのかと納得して「ほーん、ギブハブがどうした?」と聞き返すのが有能なんだよ
765 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 22:26:49.20 ID:EVjNfLc/0.net] >>753 意味がわからんけど補足がなけりゃツッコミなんてなかったんだよw こだわってるのはそっちでしょwこっちはそうですか、という感想しか無いよって言ってるやんw
766 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 22:38:58.86 ID:5TTB8+bC0.net] チャゲアスASUKAのギフハブに監視されてるネタに掛けてGitHubをギフハブと呼ぶのは5chの標準語だと俺も思ってたがそこまで浸透してないのか
767 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 22:42:09.42 ID:T9vV3uABa.net] なんとも不思議な世界があるんだなあ・・・・ TryGetValueを使うのが今どきの常識的なコーディングだと思ってた自分としては 老害(あるいは悪意があって不適切なコーディングを押し付けようとしてる人)が世迷言をほざいてるだけにしか見えないや
768 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 22:53:33.81 ID:yrxBBFH+0.net] >>755 その理屈で行くとコードレビューなんて出来なくなるな (これ明らかに意味のない文だけど何かスピリチュアル的な深い意味があるのだろうか…?配慮して指摘すべきではないか…?)なんて一々考察しなきゃいけないのかよ
769 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 23:00:13.09 ID:YUoXGIHl0.net] 了解
770 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 23:03:55.81 ID:YUoXGIHl0.net] >>754 MISRAにもあるし高信頼性を要求される場面ではそれなりにありがちな話だよ
771 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 23:14:22.90 ID:iy3zNsHi0.net] >>759 レビュー受けてるような新人はそんなこと考えなくていいと思うよ 多次元辞書でアクセスそのまま返す利点が分からないならまだお勉強段階なんだから、そういうやり方もあると素直に学んでおけば良い とりあえずチューニングはベテランがもっと後でやる仕事だから、パフォーマンスがーとか言い出すのは十年早い
772 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 23:30:20.42 ID:yrxBBFH+0.net] そう主張するのであれば具体的な利点を述べろよ TryGetValue派は俺以外にもメリット述べてる奴いるけどContainsKey派は「そのほうが見やすい」程度の個人の感想以上は出てきてない 勿論それもメリットではあるがTryGetValueの方が見やすいと言う人もいるのでそこでは差は付かない
773 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 23:51:14.64 ID:kxXRvhGP0.net] >>761 ねーよ
774 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 23:59:15.56 ID:AAs5LLYH0.net] 宗教論争オモロイなw
775 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 00:00:33.52 ID:n5NKB6GR0.net] >>763 しょうがないな こういうケースは極端化すれば明確になる dic.TryGetValue(a, out var dic2) dic2.TryGetValue(b, out var dic3) dic3.TryGetValue(c, out var dic4) dic4.TryGetValue(d, out var dic5) dic5.TryGetValue(e, out var value) vs var value = dic[a][b][c][d][e] とりあえず値の取得を比較した場合こうなる 非常に馬鹿げたコードだが後者の方が察しやすくバグりにくいのは分かるはず これは分岐を差し込んでも同じこと こんなコードは現実にあり得ないから無効と言い張るなら、所詮はその程度のレベルなんだから黙るべき
776 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 00:20:59.97 ID:9x2/PpIx0.net] TryGetValue vs ContainsKey+[]の争いでしょ? なら下はちゃんと一つ一つにContainsKey挟むべき そして後者の方がバグりにくい理由が全く分からない。まず何のバグを対象としているのか明確に
777 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 00:25:39.57 ID:G1P0/YpK0.net] レビューを受けるのが新人とか言ってる時点でまともじゃないでしょ いつの時代のエンジニア思想よw
778 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 00:26:29.87 ID:E5czHbG2a.net] なんというかb7e4-nc77みたいなのがレビュアーやったら地獄だな 自分が新人だったらたまったもんじゃない
779 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 00:36:41.15 ID:EEdVS6ls0.net] >>767 お前さんプログラマ向いてないから転職した方が良いよ、マジで ちゃんと理屈で教えられたことを受け付けないとか先が無さすぎる
780 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 00:39:46.85 ID:qXuQLmTVa.net] どうせ過疎スレだからスレ消費するのは問題ないと思うけど あまりに下らな過ぎる論争で萎えるねw よく読んでないので素っ頓狂なこと言ってるかもしれないけど、 iniファイルぐらいなら馬鹿正直にDictionaryをネストなんかしなくても section+keyをキーにして平坦化しても良いような気もする
781 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 00:45:42.05 ID:9x2/PpIx0.net] >>770 答えられないんだね
782 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 01:29:55.64 ID:a85534SW0.net] ini parserの中身を見たらContainsKey + インデクサだった https://github.com/rickyah/ini-parser/blob/development/src/IniParser/Model/SectionCollection.cs#L62-L77 自分なら使う側のコードがシンプルになるようにini[section][key]かini[section]?[key]の形で sectionかkeyがnullならnullを返すようにDictionaryを少し拡張するかな
783 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 05:30:56.15 ID:lgcZd+iw0.net] >>764 お前がそういう世界を知らんだけ
784 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 08:23:44.56 ID:gN60+pZv0.net] 相変わらず質問者無視で議論してるのウケる テンプレ読めない人多すぎでしょw
785 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 08:57:23.41 ID:8S8hZPx60.net] >>771 そもそもini直接操作するならWin32APIにセクション名とキー名と無かった場合の規定値を突っ込むだけで良いからDictionaryすらも何もいらない pascalにはMemIniみたいな基本はファイルには書き込まないクラスがあるからそれを実装しようと思ったらDictionaryがベストなんじゃない >>775 section一覧を返す方法は一昨日の一番最初のレスでしたって昨日言ったはずだが無視してるのはお前の方だろ
786 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 09:04:32.51 ID:8S8hZPx60.net] >>773 そのプロジェクト見た感じTryGetValueを一度も使ってないから恐らくJavaか何か出身で存在知らないんだろうな ContainsKeyは割と色んな言語にあるからこっちの方が認知度高いのは間違いない なので昨日も言ったが一々C#に学習コスト払いたくないって人もいるだろうからそういう場合は好きにしたらいい
787 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 10:07:26.68 ID:3MSQwEh40.net] >>776 テンプレ読めよ 「議論」するなと言っているんだが
788 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 10:12:11.16 ID:I8/NWgIp0.net] テンプレ読めないって事はレスも読めないんだから言っても無駄 粛々とNG
789 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 10:29:32.82 ID:lgcZd+iw0.net] >>766-767 まあここまで極端な例なら try { var value = dic[a][b][c][d][e]; } catch(){ } ってやる事を検討してもいいかも
790 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 10:45:42.20 ID:0LXXOsdO0.net] >>777 お、ようやく自分の間違いを認めたか まあContainsKeyの方が可読性高いのは当たり前なんだが 762 名前:デフォルトの名無しさん (ワッチョイ 9f24-GtYN) [sage] :2020/11/29(日) 23:30:20.42 ID:yrxBBFH+0 そう主張するのであれば具体的な利点を述べろよ TryGetValue派は俺以外にもメリット述べてる奴いるけどContainsKey派は「そのほうが見やすい」程度の個人の感想以上は出てきてない 勿論それもメリットではあるがTryGetValueの方が見やすいと言う人もいるのでそこでは差は付かない
791 名前:デフォルトの名無しさん [2020/11/30(月) 11:16:43.36 ID:o8riI3080.net] >>781 可読性と認知度は全然違う意味だと思うけど、っていうのは置いといて >>733 とか>>766 とかさすがに釣りでしょって思わせるレスがちらほらあるから、喧嘩両成敗はちょっと可哀想な流れ
792 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 11:55:30.78 ID:tpJ2df0N0.net] >>774 ちょっとはググれよ
793 名前:デフォルトの名無しさん [2020/11/30(月) 11:58:06.51 ID:UK/ABAdxa.net] 認知度と可読性が別物か 職場で宇宙人って呼ばれてそう
794 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 12:11:19.73 ID:zbjAWIZjd.net] >>780 これでええやん 例外が重い?知るかよ
795 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 12:13:44.19 ID:lgcZd+iw0.net] >>783 > ちょっとはググれよ ブーメラン過ぎる、ってかググっても悪魔の証明はできないぞw
796 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 12:15:09.00 ID:0LXXOsdO0.net] TryGetValueを使うことに拘りすぎててアスペ臭しか感じない 好きにしろと言いながら必死で反論してんのが特にな 多様性を許容するっていうのは>>755 みたいなスタンスなんだよ ここまで言われて「何言ってんのか分かんない」と騒ぎ続けるのは感情で理解を拒んでるだけの地雷君 「そういうの嫌われるからやめよ?」って指摘されてるのに「なんで? 俺が正しいじゃん?」って返すのは馬鹿を通り越した何かだわ
797 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 12:26:00.27 ID:tnWbc17e0.net] こういうレスちんぽバトルやめねぇ?
798 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 12:51:21.50 ID:tpJ2df0N0.net] >>786 MISRAって名前まで分かってるのに?
799 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 12:52:22.17 ID:PPubPKASd.net] いまだに複数リターン禁止なんて言ってる時代錯誤なやつがいるのかよ…
800 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 14:08:46.39 ID:lgcZd+iw0.net] >>789 ??? ないことの証明だよ? 悪魔の証明って知らんの?
801 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 14:09:59.63 ID:lgcZd+iw0.net] >>790 だからお前等の知らない世界があるって話 まあC++とかC#だと例外とか使えるからだいぶ緩和されるけど
802 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 14:11:44.42 ID:tpJ2df0N0.net] >>791 まずはあることを示してから
803 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 14:31:16.69 ID:zbjAWIZjd.net] >>792 アセンブラ以外でFalseは即リターンなんてベストプラクティスやん if elseとか基本ダサいんだよね
804 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 15:11:50.10 ID:lgcZd+iw0.net] >>793 それこそ misra multiple return とかでググればいくらでも出てくるだろw https://www.viva64.com/en/w/v2506/ >>794 だからそう言うのが非推奨な現場があるというだけの事 個人的には関数の頭でのエラーチェックでエラーだったら即リターンとかよくやってる
805 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 15:27:06.61 ID:tpJ2df0N0.net] >>795 それのどこがC#なんだ?
806 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 16:36:59.20 ID:r8rQ87Qr0.net] 関数の出口が、複数ある奴か。 危険だから、MISRA-C の禁止事項 一方、Linux では関数の冒頭で、処理しない場合は、即リターンするとかやってる。 関数の出口に、goto で例外処理をまとめたりとか MISRA-Cを守らない場合は、逸脱手続きが必要。 トヨタなどは、MISRA-Cで、4/100 しか点数を取れなかったとか聞いたw MISRA-C研究会にも、トヨタのベテランが加入してるのに
807 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 16:46:43.31 ID:dO4rlTbV0.net] 俺社環だけど、これ指摘したらそれは例外処理や自動メモリ管理がないCであって、C#ではそこまで気にする必要ないんじゃね?で終わったな
808 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 16:53:06.40 ID:r8rQ87Qr0.net] 辞書のキーが存
809 名前:在しないのは、例外じゃない。 最初から想定内の事で、予想がつくから 例外はファイルが存在しないとか Go では例外を嫌って、複数の戻り値で、エラー値を返す [] [ここ壊れてます]
810 名前:796 mailto:sage [2020/11/30(月) 16:56:08.66 ID:r8rQ87Qr0.net] 漏れは、戻り値を変数に入れておいて、return は1つだけにしてる if 条件 result = 1 else result = 2 end return result
811 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 17:07:26.72 ID:pPofn0IB0.net] うっかりミスってreturnし忘れてもIDEが警告してくれるから、分岐それぞれでreturnするほうが好き
812 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 17:08:29.73 ID:8S8hZPx60.net] 複数returnとかワンライナーとかはそれこそ正解の無い事だから各々好きにしてくれよ TryGetValueとContainskey+インデクサは正解があると思ってるからこっちはつい反論し続けてしまったが
813 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 17:11:06.92 ID:DAJE5R+zd.net] なぜこのスレはテンプレを見る限り質問スレなのにスレタイにそれを示唆する文言が入っていないのですか?
814 名前:デフォルトの名無しさん [2020/11/30(月) 17:15:26.09 ID:3PLmCTmV0.net] ヌルチェックやりはじめてから一刻も早くreturnすることを考えて書くようになった 階層が深くならないので見やすいし、上の部分だけである条件にあてはまった処理が完結してるので読みやすい
815 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 17:24:24.88 ID:tpJ2df0N0.net] >>798 ね、Cですら"推奨"なのに
816 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 18:17:44.47 ID:a85534SW0.net] >>797 >危険だから、MISRA-C の禁止事項 Mandatory, Required, Advisoryの3段階のうちAdvisoryなので禁止事項ではないね
817 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 18:30:53.38 ID:n+7nNLssM.net] >>801 さすがにMISRAとかが言ってるのはそう言う低レベルな話じゃなくて途中脱出でのリソース開放漏れとかを心配してる なのでC#なら例外とかusingとかを適切に使えばそれほど問題にならない クラス継承させた時のIDisposeのコーディングが面倒なのがたまにキズだけど
818 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 18:52:25.38 ID:+JMSCADPD.net] 議論は然るべきスレでどうぞ ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net https://mevius.5ch.net/test/read.cgi/tech/1469538912/
819 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 19:48:14.13 ID:xZxi3SwM0.net] >>806 またRuby君がいい加減な知識で嘘を垂れ流そうとしてたわけか
820 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 21:11:19.50 ID:X4ikUZ5gM.net] いい加減なのは知識じゃなくて遺伝子じゃねえのか 欠陥品なんだから
821 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 21:11:29.21 ID:a85534SW0.net] 少し調べてみたけどMISRAがsingle returnを推奨する根拠に上げてるIEC 61508には ”subprograms should have a single entry and a single exit only;”と書かれているだけ そこに参考文献としてヨードン/コンスタンティンの「ソフトウェアの構造化設計法」を上げてるが ヨードンやダイクストラが提唱したsingle exitは時代的にも意味が違うのでルール自体の根拠が薄い https://softwareengineering.stackexchange.com/questions/118703/ 1993年出版のCode Completeでも今回のようなケースはmultiple returnが推奨されてるくらいなので single returnはリソースクリーンアップが必要だけど 他の方法がどうしても取れないような特殊なケースでしか意味がないと思って良さそう
822 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 21:15:38.40 ID:tnWbc17e0.net] どうでもよくねw
823 名前:796 mailto:sage [2020/11/30(月) 21:56:17.24 ID:r8rQ87Qr0.net] Cプログラミングの落とし穴 C Traps and Pitfalls, Andrew Koenig, 1989 ここから、Lint, MISRA-C などが出来た
824 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 22:27:10.33 ID:n5+DCEBK0.net] c#スレなんですがそれは
825 名前:デフォルトの名無しさん mailto:sage [2020/12/01(火) 11:25:23.55 ID:ZwYRJuoF0.net] C#とはC++++、つまりCとC++を継承した言語である よってC#スレにおいてCとC++は範囲内 悔しかったら言語名を変えることだな
826 名前:デフォルトの名無しさん mailto:sage [2020/12/01(火) 11:27:04.96 ID:vLuBExG+d.net] キチガイ
827 名前:デフォルトの名無しさん mailto:sage [2020/12/01(火) 11:45:19.44 ID:K5BMxGNOM.net] 似た話でelseを省略するな派もたまにいるけど、元はCOBOLの文法ではelse書かないとブロックの区切りが分かりにくいかららしいね
828 名前:デフォルトの名無しさん mailto:sage [2020/12/01(火) 12:14:20.95 ID:k3h/30i7a.net] そんな流派の人に会ったことないけど、意図はたぶん古典的なぶら下がり問題対策だろうね 俺はこんなミスしたことないしIDEの時代には杞憂だと思うけど if (true) if (false) {} else Console.WriteLine("来ないはず");
829 名前:デフォルトの名無しさん mailto:sage [2020/12/01(火) 14:56:29.62 ID:6hEFZljjM.net] elseを省略しちゃダメって言うのは俺も見たことないな >>818 みたいなのを避けるために { } を省略しちゃダメって言うのは見かけるけど
830 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 00:57:12.14 ID:+AssLSaA0.net] 最近久しぶりに起動したらVSのテキストエディタの「自動メンバー表示」の項目ををカーソルキーで動かすのがとんでもなく重いんだけど俺環?
831 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 01:47:00.65 ID:HjUyDubp0.net] Dispose()しないといけない条件がいまいち分からないんですが、 コンポジションとして参照を保持しているメンバーがDispose()メソッドを持ってたら、Dispose()を実装しないといけない、ていう理解でいいんでしょうか?
832 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 10:14:54.41 ID:ebqkblVHH.net] >>821 たとえばファイルを開いて中身を書き換える処理をFileStreamでするじゃん 開いてる間は他の人やプログラムがそのファイルを使えない状況になるから 使い終わったらちゃんとDisposeで閉じましょうねって事
833 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 12:15:24.35 ID:q6qthHEM0.net] 画像とかメモリ消費量が多いオブジェクトに対して、使い終わったらちゃんとDisposeで破棄しましょうねって事
834 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 12:32:26.40 ID:/5AdVnEZ0.net] >>821 基本はYes 内部でそのメンバをDisposeする仕組みが他にあるなら別に実装しなくても良いが、とは言えIDisposableを実装しておけばそのラップクラスでもusingステートメント使えるから分かりやすいしね IDisposableはコードでDisposeせずともGCによる破棄タイミングでDisposeしてくれるから最悪し忘れても大丈夫だが(GCによるオートDisposeはパフォーマンスが悪いので出来れば避けるべきだが)
835 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 12:51:23.41 ID:VuN4nxV5M.net] >>821 そうとは限らない たとえば外部のAPIを使っていて、使い終わったら必ずある処理を最後に呼ばなければならないという決まりがある場合 たとえばある一連の処理の間は一時ファイルを作り、最後に消す必要がある場合 そういったユースケースをクラスにするならDisposeを実装することになるだろうな Disposeってのはつまり、最後に特定の処理を必ず呼ばなければならないという規約に他ならない
836 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 18:14:26.77 ID:w77bbFvMa.net] >>821 エンジニアは教条主義的に考えてはいけない。 何も難しくない。 オブジェクトが自分のメンバー(フィールドかプロパティ)のDisposeを呼ぶべきタイミングを 自分で判断できるならわざわざDisposeを実装して他人にそれを任せる必要はない。 できないならDisposeを晒して他人にお願いする。 それだけでしょ。 でも「Disposeを呼ぶべきタイミングを自分で判断できる」のはメソッド呼び出しが 完了した後も別のスレッドで動作を続けるタイプのオブジェクトだけなので そうは多くないはずだよね。
837 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 19:47:17.83 ID:o81q9kO+D.net] >>1 > なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#, C♯, C#相談室 Part94 mevius.5ch.net/test/read.cgi/tech/1553075856/ ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net https://mevius.5ch.net/test/read.cgi/tech/1469538912/ テンプレも読めない奴らがする議論は、 もはや議論ではなくマウンティング合戦
838 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 20:41:49.29 ID:w77bbFvMa.net] >>827 君がやってるのもそのマウンティング合戦のうちなのは自覚して欲しいよねw もはや5ch全体がそうだけど特にここは過疎スレなわけで、そんな目くじら立てることないと思うよ 誰か困る奴いるの?w 誰もいないって。
839 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 21:21:31.32 ID:hwkqsjy70.net] 過疎スレでもルールは守れよ
840 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 21:58:13.02 ID:4huF2MSH0.net] マウンティング合戦なんか起こってたら 初心者が尻込みして書き込むのをやめてしまったりするわな
841 名前:デフォルトの名無しさん mailto:sage [2020/12/03(木) 00:08:24.38 ID:AfLSjnCy0.net] winformでwebview2を使ってるんですけどcookieをセットする方法がわからなくて困ってます どなたかわかる方教えて下さい
842 名前:820 mailto:sage [2020/12/03(木) 02:05:41.69 ID:plL1xX/c0.net] みなさんありがとうございます。 そして何かすみませんでした。
843 名前:デフォルトの名無しさん mailto:sage [2020/12/03(木) 06:58:36.35 ID:HwhU8QlY0.net] >>832 絶対に許さねぇからな 末代まで祝ってやるから覚悟しろよ
844 名前:デフォルトの名無しさん mailto:sage [2020/12/03(木) 07:07:12.64 ID:UmUyqAch0.net] 今更訊きづらいけどgoto文のラベルの命名ルールって goto maki; hirohisa: System.Console.WriteLine("誰だよ"); goto hell; maki: System.Console.WriteLine("知ってる"); goto hirohisa; hell: System.Console.WriteLine("そうだな"); こんなんでいいの?
845 名前:デフォルトの名無しさん [2020/12/03(木) 09:22:44.20 ID:Mqqeu2dm0.net] >>831 webView2.CoreWebView2.CookieManagerはどう?
846 名前:デフォルトの名無しさん mailto:sage [2020/12/03(木) 16:26:09.15 ID:UmUyqAch0.net] webview2とCEFSharpのどっちがいいのか
847 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 01:59:10.27 ID:/XRPGQMq0.net] IDisposable obj = otherObj; using(obj){ obj = anotherObj; }
848 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 03:16:37.86 ID:yDsXPkFS0.net] >>837 これビルド通るの? >オブジェクトは、using ブロック内では読み取り専用です。変更したり再割り当てしたりすることはできません。
849 名前:デフォルトの名無しさん [2020/12/04(金) 16:12:00.25 ID:ZsgfFad40.net] nugetからインストールしたライブラリですが 別のパソコンから同じプロジェクトを開けるとusing句がエラーになってしまい ライブラリを一度アンインストール→インストールし直さなくてはなりません 複数のパソコンで同一プロジェクトを編集するときnugetは使えないのでしょうか
850 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 16:16:23.76 ID:0hbyHhKrd.net] nugetの修復みたいなことすれば足りないもの探して再DLしてくれるよ
851 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 16:31:08.42 ID:e5C89TYX0.net] ”別のパソコンから”ってもしかしてネットワーク共有して直接開いてるの?
852 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 16:55:03.48 ID:ot5BaqCCa.net] >>839 COMじゃないならライブラリのアセンブリをプロジェクトのフォルダ内に置いて それを参照すれば一応できるんじゃないの? やったことないから知らんけど
853 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 16:55:13.19 ID:edWfS5jb0.net] >>839 nugetのライブラリって各PCっていうかVS毎に管理しているから、ソースを別の場所に 持っていったらその環境で指定されているライブラリを拾わないとダメなんじゃ なかったっけ? >>840 が言ってるみたいなことがnugetの管理ツールだかメニューにあったような
854 名前:デフォルトの名無しさん [2020/12/04(金) 17:04:36.37 ID:ZLeuk8KN0.net] >>839 チキンマックナゲットは セールのときは5個入り200円だから そのときに買うのがベストだと思うよ。
855 名前:デフォルトの名無しさん [2020/12/04(金) 17:05:31.23 ID:ZLeuk8KN0.net] ソースは必ずバーベキューを。 バーベキュー以外は糞まずくハズレ。
856 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 17:25:30.91 ID:0hbyHhKrd.net] CIでビルドするとき、確実にnugetの修復が必要になるから構築したことあるならわかるはず コマンドラインからnugetにsln渡してやればDLしてくれる つうかオンラインからいつでも好きなversionを落としてこれるのがnuget等ライブラリ管理ソフトの強みなんだからプロジェクト内にファイルなんて置いたらメリットが減る 外部ライブラリを編集しないのにバージョン管理下においてプロジェクトを肥大化させる意味がない
857 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 17:50:19.19 ID:EWRKs4L00.net] Nugetってmpnと比べて なんでなんなにトラブルの?
858 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 17:56:44.09 ID:vwTMj3ZS0.net] mpn…なんな…?
859 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 18:37:31.14 ID:4RJVpdFOr.net] わりっ!
860 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 18:50:13.35 ID:V5csDP6P0.net] dotnet restoreすればいいけどdotnet buildとかやれば勝手にやってくれる
861 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 18:57:48.00 ID:L60rBM570.net] >>838 適当なクラスに置き換え
862 名前:スらビルドできますよ。 [] [ここ壊れてます]
863 名前:デフォルトの名無しさん [2020/12/04(金) 22:05:08.94 ID:9AUT9QCq0.net] 新潟から週2回東京に出勤、サイボウズの複業採用社員に聞く複業ライフのリアル。 https://www.businessinsider.jp/post-166126 兼業でフリーライター、サイボウズ社員・明石悠佳に学ぶパラレルワーク術 https://www.wwdjapan.com/articles/752575 「複業を解禁しなければ人も企業も成長しない」複業全面OKのサイボウズ社長と実践社員の本音対談 https://www.businessinsider.jp/post-33893 育休は最長6年、副業もOK! サイボウズはなぜ「100人100通りの人事制度」を作ったのか https://logmi.jp/business/articles/50252 超異例「週休4日制」の導入をSMBC日興証券社長が決めた理由 https://diamond.jp/articles/-/223832 週休3日制をさらに進めた週休4日制 https://www.k-society.com/recruit/why-four-days-off-a-week/ 採用情報(週休3日制を超えた週休4日制の正社員求人 | 副業OK https://www.k-society.com/recruit/ 2020年4月より「週休3日制」を導入。テックカンパニー化に向け、好循環を生み出すエンジニアリング組織へ https://prtimes.jp/main/html/rd/p/000000096.000016431.html
864 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 09:07:58.88 ID:7mh3qGhb0.net] ライブラリの話ですみません SevenZipSharpにてSolid圧縮ファイルを[STAThread](FormやWPFのメインスレッド)にてExtractArchiveするとフリーズしてしまうのは私だけでしょうか? 別スレッドやTask化したり、そもそもSTAThreadが使われないConsoleアプリでは同期でも全く正常にSolid圧縮も解凍されるのですが
865 名前:デフォルトの名無しさん [2020/12/05(土) 10:37:20.60 ID:kSej4vti0.net] List<List<List<int>>>→List<List<int>> List<List<int>>→List<int> にする方法ってLINQでは不可能ですか? 並び順は変えないとします。 for使うしかないですか?
866 名前:デフォルトの名無しさん [2020/12/05(土) 10:38:07.01 ID:kSej4vti0.net] 後者が {1,2,4}{3,9,8}→1,2,4,3,9,8って感じ
867 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 11:00:35.05 ID:DXfBmITDd.net] >>854 var result = iList.SelectMany( i => i )
868 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 11:12:57.38 ID:+y18mv1b0.net] ぐぐればすぐ見つかるわよ
869 名前:デフォルトの名無しさん [2020/12/05(土) 11:31:13.29 ID:CCPlFK06M.net] >>857 なぐるわよ
870 名前:デフォルトの名無しさん [2020/12/05(土) 11:42:56.05 ID:kSej4vti0.net] >>856 順番変わりますか?
871 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 11:52:38.53 ID:qYbtudQ20.net] TOARRAYのADDRANGEだよさっさとしろよグズ
872 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 12:31:48.70 ID:fwzFFaeU0.net] >>859 多分変わらないけど、やってみて。
873 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 12:39:27.19 ID:qL2nBB2w0.net] >>853 それは本来1秒とかで終わるはずがいつまで経っても終わらないってこと? まあUIスレッドでやることじゃないからTask使ってればいいよ
874 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 13:26:31.39 ID:UBJq3HVh0.net] nlogで入れた.configが読み専になったから、しょうがなくありものを先に置いといてnugetしなおしたらなんとかなった
875 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 14:02:33.08 ID:cSIoQ91v0.net] >>859 仮に駄目なら自分で拡張メソッド書けばいいだけだよ 数分で書ける程度のもの
876 名前:デフォルトの名無しさん [2020/12/05(土) 15:30:56.23 ID:OcFAL7DuM.net] 手元では大丈夫でもリリースした先でダメでした、というオチがたのしそう
877 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 10:13:12.99 ID:a+vxG21/r.net] c#9.0でガラッと変わるので皆さん頑張ってお勉強してください
878 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 10:18:38.00 ID:a+vxG21/r.net] C#の思想が塗り替えられています
879 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 10:20:10.96 ID:xxrxxdsn0.net] たとえば?
880 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 10:26:12.41 ID:a+vxG21/r.net] recordです 他の言語から輸入した超便利機能です
881 名前:デフォルトの名無しさん [2020/12/06(日) 11:07:39.97 ID:GAck2gc00.net] recordは便利だけど勉強しなおさなきゃいけないレベルでもない 新しいこといくつか覚えればいいだけ
882 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 11:11:11.75 ID:HPmVPA7T0.net] expression blocksあたりが来たらC#はC#とは違う別のなにかになりそうな勢いだな
883 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 11:38:38.75 ID:q4vfNSTS0.net] recordって別にただのstructだろ? 比較の仕方が違うだけで
884 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 11:42:51.47 ID:bQe6lBYR0.net] 参照型のイコールの動作がわかんなかった
885 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 11:51:20.42 ID:oEu15NIyd.net] >>872 根本的に勘違いしてるぞお前 record はstructじゃねーよ
886 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 12:22:22.88 ID:3Mg1tJ4o0.net] >>874 KWSK
887 名前:デフォルトの名無しさん [2020/12/06(日) 12:41:32.76 ID:GAck2gc00.net] https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-9#record-types レコード型を使用すると、変更できない参照型を .NET で簡単に作成できます。 従来、.NET 型は、参照型 (クラス型と匿名型を含む) と値型 (構造体とタプルを含む) に大別されています。
888 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 12:56:19.96 ID:E6YSEnmp0.net] つまり、リードオンリーで参照するみたいな感じか?
889 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:08:05.96 ID:e5/goOFG0.net] record自体に動的な参照型は持てない感じ?
890 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:08:42.54 ID:a+vxG21/r.net] 多分今後recordを使ってないコードを見るとイライラするようになるでしょう 今すぐにじゃなくてもそのうち確実に 古いコードは全部打ち捨てられるでしょう ただMVVM命の人には関係ないでしょう
891 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:13:29.20 ID:a+vxG21/r.net] そして普通にprivateを使わなくなる可能性もあります C#の初期の思想が徐々に塗り替えられ捨てられていきます
892 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:18:25.99 ID:3Mg1tJ4o0.net] 既にキマイラだよなぁ
893 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:23:50.76 ID:a+vxG21/r.net] どうせrecordで既存のコード捨てられるから言語ごと最初から作り直したほうが良いかもしれない 最初から作り直せるとしたらデリゲートはなくなるのかどうか C#+F#のような言語ができたら非常に面白い
894 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:30:56.71 ID:e5/goOFG0.net] 作成後に変更できないって言ってるのに比較なんてする必要あるの? ってのが疑問
895 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:37:19.87 ID:a+vxG21/r.net] Listから特定のインスタンス削りたい場合で位置がわからなければ比較するしかないでしょう
896 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:40:30.34 ID:e5/goOFG0.net] そういうの言語の機能使うのは俺的にNG doubleのイコール比較は誤差入るのか?
897 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 14:29:36.48 ID:a+vxG21/r.net] Linq使うにせよなんにせよ比較は使う 初心者以下のレベルの話
898 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 14:57:26.26 ID:E6YSEnmp0.net] ん?レコードってのは何が嬉しいの?
899 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 15:11:34.04 ID:3Mg1tJ4o0.net] PASCALとかALGOLにあった奴の 先祖帰りかなぁ?
900 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 15:15:02.40 ID:wbXowyVSa.net] 亡き飼い主の声が聞こえる
901 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 16:04:31.40 ID:+WMwzRY70.net] 変更できない参照型って言うのはそれなりに使えるとは思うがなんでrecordなんて名前なんだ?
902 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 16:16:48.48 ID:wcxECur/M.net] OCaml由来
903 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 16:19:27.32 ID:oEu15NIyd.net] >>890 Javaがrecord を採用したから 最初はdataだった
904 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 16:20:25.26 ID:oEu15NIyd.net] >>875 structにもrecord つけられるようにする対応はC#10.0以降
905 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 17:02:01.60 ID:3Mg1tJ4o0.net] >>893 THX
906 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 17:09:37.16 ID:L/mxF/rBa.net] >>876 このスレのレスだけ見てたらそんなの何が嬉しいんだと思ったが、 なるほどそれなりに便利そう ただ、MSのドキュメントに列挙されてる - 値ベースの等価比較のためのメソッド - GetHashCode() のオーバーライド - コピー メンバーとクローン メンバー これらが自動実装されるのは確かに嬉しいが、これを実現するために何でイミュータブルにする 必要があるのかいまいちよく分からない
907 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 17:40:09.94 ID:R+T9okNaa.net] エミュー食べる必要は無いからなあ
908 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 18:18:00.03 ID:4CZ8QguV0.net] むしろimutableなものが欲しい、からスタートした機能
909 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 18:29:39.04 ID:ozrCEgJEd.net] 普通に作ってる分にはいらんわな
910 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 18:31:30.50 ID:Cw8pwO+X0.net] 変なところで値書き換えるやつがいるから、それを型として禁止したってだけだと思ってた
911 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 18:43:23.29 ID:e5/goOFG0.net] doubleの比較は何? また、c#のウンコみたいなイプシロン使って 同値判定してんの?
912 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 18:49:40.35 ID:Cw8pwO+X0.net] 勘違いしてた。わざわざ書いてたいつものコードを書かなくて済むようになるのがメリットか ところで、「record Person」の例で同姓同名の別人を区別したくなったらどうすればいいのん?
913 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 18:55:24.02 ID:e5/goOFG0.net] 大丈夫だ それはDNAListが異なるので判別できる
914 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:03:18.97 ID:atqZF9NJ0.net] 「Effective 何々」とかによく書いてある、3種の神器だろ Ruby なら宇宙船演算子、<=> で比較関数を再定義する。 ハッシュ関数を再定義する。 p 関数を再定義する。 こういう謎のようなインスタンスID ではなく、分かりやすい表示を再定義する class A end p a = A.new #=> #<A:0x00000000031c2f98>
915 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:10:34.23 ID:a+vxG21/r.net] recordはプロパティが基本publicになった 今まではprivateで隠蔽されていて外部から変更されなかった これはカプセル化なんだけどこれがpublicになっただけじゃ意図しない変更をされる場合がある 非常に困る だいたいのケースでは参照されても変更されなければ問題がないのでイミュータブルにするじゃねーかなと
916 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:16:53.81 ID:4CZ8QguV0.net] だから順番が逆 immutableな型が欲しい→immutableなんだからpublicでok
917 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:18:27.50 ID:a+vxG21/r.net] 世の中もイミュータブルが求められていると言うのもその通り ValueObjectはいったん値を設定したら変えない 値を変えたくなったら新しいValueObjectをnewして挿げ替える
918 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:23:32.30 ID:iGfaGXq00.net] 別にrecord = イミューダブルじゃないからね?
919 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:23:45.93 ID:iGfaGXq00.net] イミュータブル
920 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:29:20.15 ID:a+vxG21/r.net] 他の簡易な言語などでもデフォルトはprivateじゃなくpublic イミュータブルかどうかは別としてデフォがpublicが流行り
921 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:48:28.39 ID:a+vxG21/r.net] どちらにせよ C#は9.0で大変身した
922 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:50:57.76 ID:+WMwzRY70.net] >>901 社員番号とかを追加しときゃいいだろ
923 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 20:39:59.39 ID:5/KOVLSv0.net] >>901 それはべつにrecordで初めて発生する問題じゃないいな。 識別できる情報が足りないならそれを追加しなきゃならんというだけ。
924 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 02:42:51.99 ID:FMWF8Lcl0.net] 9に限らず今までのversion upはどれも影響度が大きい 8のnullable、7のtuple、6の自動実装プロパティ、5の非同期、4のdynamic、3のlinq 他にもいっぱいあるけど どれも現状のC#にとって超重要な内容
925 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 03:27:02.89 ID:1hmL4SHh0.net] 10年ぶりにwindowsアプリ作りたいんだけど最近は何で作るのが主流ですか? まだwinformsだったりする?
926 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 03:34:00.01 ID:obD3rptW0.net] 結局WinFormsかWPF
927 名前:デフォルトの名無しさん [2020/12/07(月) 06:24:24.79 ID:AjKIX7D20.net] バージョン9が話題らしいですがc#のバージョンてどこ見りゃわかるの?
928 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 07:20:40.19 ID:VGjx4xxr0.net] >>916 VS2019なら、ソースの適当なとこに、 #error version って書いて、versionにマウスカーソル合わせると表示される。 あと、9かそうでないかの判断だけなら、setの代わりにinit使ったプロパティが認識されるなら9。 int Hage{get; init;}
929 名前:デフォルトの名無しさん [2020/12/07(月) 07:27:50.50 ID:AjKIX7D20.net] >>917 ありがたう。言語バージョン7.3て書いてあった。 保守的な現場だから簡単にバージョンあげたりはしないのだろうな。 recordか。仕事で使ってみたかった。
930 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 07:33:11.23 ID:jipj8SHtM.net] >>918 お大事に。
931 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 07:47:15.09 ID:B8tartMNM.net] Record型って最初聞いた時に、データベースのレコードを突っ込む型と思ってたわ… 更新できないってことは 中身書き換えてEFに投げてデータベース更新することができないってことだよな。 俺もいまいち使い道がわからんわ。 どういうシステムで使うんだろ。
932 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 09:03:38.47 ID:qwdGv73V0.net] 多値からなる識別子とか
933 名前:デフォルトの名無しさん [2020/12/07(月) 09:15:00.72 ID:5xO4uxgk0.net] >>918 .NET Frameworkだと7までしか使えないんじゃなかったかな 8も設定すれば使えるけど一部機能に制限あったはず
934 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 10:31:45.42 ID:mtQ69pRI0.net] .NET Core〜.NET5でWindows用アプリをビルドするとexeやdllやjsonが生成されてそれら全て必要なようですが、.NET Frameworkのようなスマートな出力には出来ないんでしょうか? 丸々exe一本にしたい訳ではなくライブラリは別にしたいので単一ファイル化とはちょっと違うのですが
935 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 12:22:21.16 ID:obD3rptW0.net] Framework dependent
936 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 00:25:30.96 ID:8YwC0Fuu0.net] >>920 DDDとかValueObjectとかに関わってないと分からんかもな
937 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 08:36:58.75 ID:qADZolAoM.net] >>925 そのキーワードでググってみた とにかく Record型ってのはValueObjectを作ることを目的としたクラスであって DBから取得したレコードを突っ込むクラスではないのね https://www.infoq.com/jp/articles/DDD_ValueObject_0325/ …じゃあValueObject型って名前にしろよ!
938 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 08:59:31.84 ID:QL1pojox0.net] >>926 DBのレコード突っ込む型とか、自分で言ってて頭悪いと思わないのかな
939 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 09:04:14.01 ID:ThBsNynLd.net] 名称なんて年単位で議論してたんだから提案あるならしてくりゃ良かったのに
940 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 09:08:19.56 ID:qADZolAoM.net] >>927 我ながらアホっぽいな しかしレコード型と言われて、はいはいレコード型ねって理解できる奴いるのかね。
941 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 09:25:23.43 ID:WA2T93A40.net] レコードなんだから再生できても録音できないのは当たり前だろ
942 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 09:30:24.02 ID:qADZolAoM.net] 確かにそうだな データベースのレコードを更新するってよく考えたら変な言い回しなんだな
943 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 09:44:59.64 ID:0unpAQOY0.net] >>929 新しいキーワードや概念が出てきたなら名前から安易に決めつけたりせずにどんなものか調べるのが当たり前の行動でないの?
944 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 11:08:44.41 ID:CR6HP8eG0.net] DVD-ROM型
945 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 11:09:42.33 ID:+Hjnd8Yr0.net] Spanで返してくれるHtmlパーサーってある? そもそも標準のパーサーってあったっけ jsと同じ感覚でquerySelectorとか使えると良いんだけど
946 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 12:04:51.25 ID:GTdYvNE8a.net] >>925 プロパティーの型はイミュータブルなのが好ましいのは誰でも分かると思う。
947 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 12:20:44.27 ID:MydVvHcuM.net] >>930-931 ネタだと思うがマジで言ってたら単なる老害だぞw レコードは記録 一般でもコースレコードを更新しましたとか言うだろ
948 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 12:27:24.23 ID:QPlJJaQdr.net] >>932 漢字文化圏では字面から意味がだいたい分かることに甘えたやつが多い
949 名前:デフォルトの名無しさん [2020/12/08(火) 12:35:05.35 ID:f+ofKIWhM.net] 全く関係ないが昔ログインの事を略してログと呼んでいる奴がいて それに気が付くまで話が全く理解できなかった
950 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 12:42:21.79 ID:Jz5aG9hcM.net] ログオンしないの?
951 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 12:57:17.36 ID:UAWkpbVf0.net] 爪折ったカセットテープ型
952 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 13:07:42.70 ID:u9TUBJ18p.net] 平和守る名前さ〜♪
953 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 13:23:08.32 ID:v7gdDVm90.net] ダグオンwww
954 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 14:49:14.43 ID:qADZolAoM.net] >>932 おっしゃる通りだが、名前にもう少し情報をいれてほしいなあ こんなわかりにくい名前つけていいのか 英語圏の人はピンとくるのかな
955 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 15:12:08.46 ID:L/fvSJtl0.net] >>936 「更新」の意味を古い記録を新しい記録で差し替えるという意味にとるか 古い記録自体を変更して最新状態にするという意味にとるかの違い 前者はイミュータブルで後者はミュータブル
956 名前:デフォルトの名無しさん [2020/12/08(火) 15:23:20.07 ID:0ctxmOmz0.net] >>923 必要ないのも混ざってるよ
957 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 15:29:38.69 ID:bfWpuCm70.net] >>944 そういうどっちにも取れるような名前を付けていいんか? って話じゃね? 少なくともデータベースやPascal系言語ではレコードの内容を書き換えられるんだし
958 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 16:14:06.02 ID:KeS4W5RD0.net] くそコード書いといて えー読めないのみたいな顔するやつ死ね
959 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 16:43:14.25 ID:v7gdDVm90.net] だからrecord 自体は別にイミュータブルでも何でもないんだってば
960 名前:デフォルトの名無しさん [2020/12/08(火) 19:03:10.97 ID:f+ofKIWhM.net] デビュー前にレコード大賞を盗った場合はどうなるの?
961 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 19:32:57.86 ID:MwY7tEEj0.net] tmpとかもやめて欲しいな。
962 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 19:33:13.64 ID:y8tTQ7tr0.net] 質問スレで平日の昼間からずっと雑談づくしってお前らそういう仕事なの?
963 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 19:54:46.60 ID:+Hjnd8Yr0.net] >>951 このご時世で昼間に家からカキコできないほうが終わってる定期
964 名前:デフォルトの名無しさん mailto:sage [2020/12/09(水) 02:33:30.28 ID:WuZTb4kZM.net] なにごちゃごちゃ抜かしとるんじゃ我ェ!?
965 名前:デフォルトの名無しさん [2020/12/11(金) 09:52:21.87 ID:xnlTyNu60.net] エンディアンのバイトスワップめんどくせー
966 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 11:23:36.63 ID:RmJd06BU0.net] あるウェブサイトにWebrequestを使ってアクセスしようとしたところ、 「ご使用のブラウザはCookieまたはJavaScriptの設定が無効です」 と出てウェブブラウザでは表示されるページが取得できませんでした。 webrequestは今まで何度も使っていますがこんなことになったのは初めてです。 ↓のようにどこの解説サイトでも掲載されているような普通のやり方でやっているだけなのですが、回避する方法はあるのでしょうか? CookieContainer myCC = new CookieContainer() HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.CookieContainer = myCC:
967 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 12:09:30.98 ID:RmJd06BU0.net] すいません、自己解決しました
968 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 12:28:58.18 ID:e2z+8YzhM.net] プロジェクト内で定義された派生クラスを全てリストする方法ってあるでしょうか? 例えば動物という基底クラスがあり、 派生クラスに猫、犬と2つ作ったとします。 基底クラスには鳴き声メソッドがあるとします。 猫の鳴き声メソッドは「ニャーニャー」と返します。 ある関数で「ワンワン」という文字列が来た際に プロジェクト内の動物派生クラスを個別に生成して鳴き声メソッドを叩き、 ワンワンと鳴く派生クラスを特定する逆引きのような処理をしたいです。 if文で全派生クラスを書けばいいですが、派生クラスはガンガン増えていくので、派生クラスを定義するたびににそのif文をメンテするのはメンテ漏れのバグのリスクがあるので プロジェクト内に現在定義された動物派生クラスを全部取ってくる事が出来れば、それをグルグル回せばメンテナンス不要のコードにできるのですが
969 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 12:46:55.66 ID:VHLzC15hd.net] SourceGeneratorならできるだろうけど、何の情報もなしにclass探すのは無理じゃない? テーブル内のclassに対して全部処理するとかはできるだろうから編集箇所は最小限で済ませられるけど
970 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 12:49:19.99 ID:9hZE0nsxd.net] >>957 リフレクションで頑張れば行けるかもね
971 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 13:03:11.90 ID:exUCYAAha.net] >>957 動的にサブクラスを列挙するのはたぶん無理じゃないの? public abstract class Animal { public Animal(Animal a) { ... } } こういう風にAnimalのコンストラクタでthisを渡すことを強制しておけば 少なくともインスタンス化されたものは把握できるね。
972 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 14:37:47.39 ID:m/dnIqsS0.net] typeof(Animal).Assembly.GetTypes().Where(_type => _type.IsSubclassOf(typeof(Animal))) 型の列挙自体はこんなんでできるけど インスタンスどうするの?っていう 全部の型にpublicな引数なしコンストラクタが必ずありますならなんとかなるけど
973 名前:デフォルトの名無しさん [2020/12/11(金) 15:40:59.87 ID:69jKb/QY0.net] そういやクラスに、静的に実行される静的イニシャライザを書けるようにしてくれたらいいのにと思うことあるな
974 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 16:53:05.38 ID:CVvHA/5PM.net] >>962 書けるぞ
975 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 18:41:57.69 ID:bOY22DN70.net] >>960 それthisじゃない。
976 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 19:31:50.50 ID:exUCYAAha.net] >>964 意味が分からんけど public class Cat:Animal { Cat():base(this){ ... } } これはNGみたいだね。 別にこれで良かったのか public abstract class Animal { private static List<Type> Animals = new List<Type>(); public Animal() { var t = this.GetType(); Animals.Remove(t); Animals.Add(t); } }
977 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 19:37:25.05 ID:PS9oWtr00.net] >>961 自分のインスタンスを返す静的メソッドって作れないのか それを親クラスかインターフェイスで規定しておけばよいんじゃ つかわざわざインスタンス生成しなくても、鳴き声が自分かどうか判定する静的メソッドで事足りる気がするな
978 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 20:32:27.16 ID:ZS/vCbaU0.net] >>941-942 渋谷で超勇者展始まったぞ!
979 名前:デフォルトの名無しさん [2020/12/11(金) 21:16:51.65 ID:69jKb/QY0.net] >>963 ま、まじで? なんて機能名でググれば出てきそう?
980 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 21:34:43.36 ID:bOExnmUya.net] 「C# 静的イニシャライザ」で検索して普通に引っかかるでしょ イニシャライザ/コンストラクタと呼び方が異なるだけで
981 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 02:19:21.24 ID:1g8P/X2hM.net] c#でRSSリーダー作れましゅか?
982 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 02:27:42.98 ID:mhM78eSV0.net] もちろん作れるさ
983 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 06:26:58.36 ID:TsdjEAD7M.net] c#では作れないものはありますか?
984 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 07:37:48.18 ID:18RrlrES0.net] >>966 全ての派生クラスで同じ名前の静的メソッドやプロパティを強要できるならそれでよさそうだけど出来なくね?
985 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 09:06:36.69 ID:unG5NNsQ0.net] >>973 静的メソッドって継承できないのか。知らなかったぜ C#8.0でインターフェイスに定義できるようになったのかな
986 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 10:08:37.85 ID:3XNF+7/F0.net] >>972 お前の能力を超えたソフト
987 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 10:11:14.52 ID:7La4X7B8a.net] ネイティブDLLが作れるようになってくれないかな
988 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 10:21:46.03 ID:BQqdDV6m0.net] >>972 カーネルドライバ
989 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 10:26:06.52 ID:QKeUnYpp0.net] >>972 完全なマシン語にコンパイルされるプログラム これでないとOSカーネルとかデバイスドライバとか作れない
990 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 11:14:15.79 ID:KcA96kkp0.net] マシン語にしたバイナリを出力するアプリをC#で作ればなんでもできることになる
991 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 14:02:37.13 ID:U1NW+seS0.net] nativeaot(-llvm)?(旧corert)ってのがあってぇ…
992 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 14:07:55.69 ID:3XNF+7/F0.net] .NETNative をちゃんと作ればC#でもネイティブコードにコンパイルできるだろうし、そもそも性能がたいして必要ないならインタプリタでもドライバを書くことはできるだろうけどGCに依存してる言語はタイミングが読めないから難しいわな
993 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 14:47:32.03 ID:E31xy0lw0.net] C++/CLI復権してくれたらなぁ。まずないとは思うが。
994 名前:デフォルトの名無しさん [2020/12/14(月) 19:47:40.61 ID:EY+baBGY0.net] WEBの写真ダウンロード処理をしてるのですが、出来るものと出来にくいものがあります。 出来にくいもの(EDGEブラウザで開けるとすぐ見れるがダウンロードでは20秒くらいかかる) https://i.dailymail.co.uk/i/pix/2013/05/09/article-2321812-19B162BA000005DC-124_634x449.jpg 出来るもの(すぐにダウンロードできる。EDGEブラウザでもすぐ見れる) https://i.imgur.com/bnUR6en.png System.Net.WebClient client = new System.Net.WebClient(); client.DownloadFile("https://i.dailymail.co.uk/i/pix/2013/05/09/article-2321812-19B162BA000005DC-124_634x449.jpg", @"D:\tmp.jpg"); こういうのはサーバー側でアクセス種類がブラウザかプログラムか見分けられて 対策されてるのでしょうか?
995 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 20:29:19.80 ID:w+atsEVh0.net] 出来る出来ないなら、サーバー側でUserAgentやクッキーやその他ヘッダを見てブロックするというのは普遍的な手法だからよくある事だけど 出来るものと出来にくいものはよくわからないが、一応ダウンロード前にこれ挟んで試してみるといい client.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36");
996 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 21:37:41.18 ID:A7r1gxtPa.net] ブラウザでの表示が早いのはキャッシュされてるだけだと思うけど・・・・ キャッシュ全クリアしても本当にすぐ見れる?
997 名前:デフォルトの名無しさん [2020/12/15(火) 10:35:58.18 ID:md2wlUIm0.net] >>984 やってみましたら止まらずすぐにダウンロードできるようになりました。 サーバー側でUSERAGENTが入ってるか入ってないかでプログラムアクセスかどうかの選り分けをして USERAGENTが空のものには20秒くらいわざとジラシが入ってるようです。 一括ダウンローダーとかの対策かなんかかもしれませんね。 ありがとうございました。
998 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 12:40:58.94 ID:uedfi1MA0.net] UA偽装とかリファラ偽装とか懐かしいワードを思い出した
999 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 13:14:41.01 ID:fP0YYSyi0.net] >>986 ちなみにChromeはかなり小まめにアプデ入る訳だが Botは往々にして"Chrome/87.0.4280.88"の部分が古いままという特徴があって最新版一つ手前よりも前のバージョンだと弾くって言う対策してる鯖
1000 名前:もある まぁここまで対策してくるのは稀だから放置でも大方問題にはならないが、インスコフォルダやレジストリや最悪webなどからバーション取得する方法あった気がするから暇なら最新版のUAにするロジックも入れておいた方がいい [] [ここ壊れてます]
1001 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 21:23:57.67 ID:2D6p9tgnM.net] 規模のでかいプロジェクトを開発してるといつもどのファイルを開いてるのかわからなくなったり、目的のファイルが見つからなかったり大変なんですけどどうしたらいいですか? 目的のフォルダに対してブックマーク的なものが設定できたりしたら迷子にならなくてすむんですがそんなのないですか?
1002 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 23:06:40.58 ID:fP0YYSyi0.net] ref readonly変数のstructのメンバ関数呼ぶと防御コピーが発生するのは仕様? refだけなら防御コピー発生しないのは確認できたんだけど
1003 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 23:23:22.02 ID:j+VqSr9F0.net] >>989 フォルダじゃなくてファイルだけどvisual studioならブックマークあるよ ただ、そもそも大規模になっても迷子にはあんまならないかな?
1004 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 23:26:47.80 ID:OK3TNwGLM.net] >>991 クソみたいな設計だから困ってたんですよ ありがとうございます
1005 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 23:32:36.78 ID:korWFWn50.net] >>989 同じ事思ってる。 VSだと開いてるファイルのタブに、プロジェクト毎に色分けする拡張入れてる。 あとソリューションエクスプローラーを複数開いたりしてる。
1006 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 01:40:22.65 ID:FCFqtT9K0.net] >>993 複数開くってどうやるの?
1007 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 03:17:07.88 ID:eAMqD84A0.net] 共通プラットフォームの .NET 5 が出てきたってことは、.net standard はもう次バージョンは出ないんですか?
1008 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 03:21:40.46 ID:4YU+JB8/0.net] うん
1009 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 07:09:48.69 ID:ksVkXCtR0.net] >>995 誰も新しい方使わなかったらまだワンチャンあるかも?
1010 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 11:31:10.25 ID:TSvQ057dM.net] 次スレ立てた ふらっと C#,C♯,C#(初心者用) Part149 https://mevius.5ch.net/test/read.cgi/tech/1608085775/
1011 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 20:14:15.21 ID:p7rmX8ox0.net] >>990 そりゃメソッドは内部でメンバを書き換えてるかもしれないからな readonlyなメソッドならコピーされない
1012 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 20:00:41.21 ID:Z1ozW/Gv0.net] >>998 スレたて乙
1013 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 20:54:36.61 ID:czJEN8EN0.net] 埋め
1014 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 204日 0時間 25分 55秒
1015 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています