[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 03/28 06:06 / Filesize : 263 KB / Number-of Response : 1036
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっと C#,C♯,C#(初心者用) Part139



1 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 19:55:44.50 ID:tZmoj8I+.net]
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part138
https://mevius.5ch.net/test/read.cgi/tech/1528194762/
■コードを貼る場合は↓を使いましょう。
ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
referencesource.microsoft.com/

159 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 18:44:47.51 ID:h3eX92xO.net]
>>134
>>136
ありがとうございます。やってみます

160 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 19:20:46.35 ID:s18ZTF9u.net]
>>150
マジで底辺のリーダーってこんなんがほとんどなの?こええ

161 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 19:36:31.86 ID:n2aXOJxU.net]
staticなナントカUtilクラスはJavaドカが好むよねー
staticなのに内部でインフラ異存しまくっててキレそうになるよ

162 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 22:32:41.02 ID:KbP5R+D4.net]
失礼します。
ASP.NET MVC又はASP.NET MVC CoreのRazorビューから匿名型がサポートされない理由を説明してくださる方居ますか?

163 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 22:36:20.82 ID:usF07bpd.net]
>>156
これのこと?
https://stackoverflow.com/questions/5120317/dynamic-anonymous-type-in-razor-causes-runtimebinderexception

164 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 00:04:54.82 ID:K7SavMc/.net]
>>157
はい。
.frameworkがpoorなのでサポート出来ない事が私には理解できません。
こちらのurlの記事では普通にプロパティで取得出来ているように見えますが…
architect-wat.hatenablog.jp/entry/20130501/1367415654

165 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 09:58:42.90 ID:uF3Ar+0r.net]
>>158
匿名型なんて使わなきゃいい

166 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 19:34:07.64 ID:ZJ6IWHAy.net]
c#アプリって簡単に逆コンパイルで簡単にソース見れちゃうじゃん?
例えばAPIキーとかハードコーディングしてもしてなくても抜き出せてしまうけどどうすんの?

167 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 19:41:36.20 ID:ajbZjNWE.net]
>>160
リバースエンジニアリングはどのくらいの労力がかかるかだけの違いで解析できないものなんかないから諦めろ



168 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 19:57:01.93 ID:Z58Bgt4H.net]
>>160
ハッシュ値使うねん

169 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:08:24.14 ID:6fvgv2wi.net]
>>162
ハッシュからAPIキーは復元できないでしょ

170 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:21:29.85 ID:nj06+sqx.net]
>>160
環境変数

171 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:50:49.58 ID:J4BiRy9W.net]
200週くらい周回遅れの話題だ

172 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 21:51:49.34 ID:uGtRYhlb.net]
>>163
間接的に別なのから取得するとか

173 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 21:53:27.00 ID:Y3DnwOBx.net]
>>165
結論はどうなってるの?
どうしようもない?

174 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 21:53:40.13 ID:Y3DnwOBx.net]
>>166
どういうこと?

175 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 09:06:38.21 ID:mvt+Dc+2.net]
>>159
問題はEFで匿名型が簡単に作られてしまうのが問題ですね。
結局expandoobjectに変換するか、ViewModelを毎回作るしか無さそうですね。

176 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 09:44:13.36 ID:O9adGcKd.net]
>>167
要件による
サーバーからもらうとか

177 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 12:36:40.81 ID:KYhaaDP0.net]
>>161
まあそうだけど

>>164
ふむふむ

>>170
まあそれだね
てかそれやってるんだけど超めんどい



178 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 12:41:52.49 ID:d3emHXQQ.net]
>>170
サーバーから貰うときの認証は?

179 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 12:45:24.17 ID:MAg8NxfR.net]
>>172
認証のパスワードなどの手続を登録した人に別途配布

180 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 12:48:09.71 ID:mLZLsxB6.net]
サーバーから受け取るようにしたとしてもクライアントが丸見えなら同じ方法でサーバーからキー抜けるだろ
ちゃんとやるなら、開発者だけが知ってる秘密鍵でシリアルキー作ってクライアントごとに払い出すようにする
そしてサーバー側でシリアルキーに基づいてクライアントを識別し、クライアント単位でクォータや権限の制御をする
漏れる前提で他のクライアントに影響が出ないように設計するのが基本的な戦略だよ

181 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 12:55:18.75 ID:IHY0+SV3.net]
どうでもいいけど、もともとの質問の趣旨は
ネイティブコードと同程度の秘匿性でバイナリにデータを隠せるかじゃないの?

それは無理、で終わりだと思うけど。

182 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 12:56:47.03 ID:g9QDbTAC.net]
APIキーって5chのAPIみたいなの想像してたけど違うの?
それだとクライアント毎に払い出しても誰か一人のがばれたら使用権貰えちゃうけど

183 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 12:57:13.81 ID:mLZLsxB6.net]
>>175
APIキーを抜くくらいならネイティブでも難しくないよ

184 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 13:13:33.45 ID:mLZLsxB6.net]
>>176
それで困るのは5chではなくブラウザの開発者だろ?
5chにとっては、特定のクライアント(この場合は開発者単位な)からの不正な大量投稿があれば、
そのクライアント(開発者)を丸ごとBANしてしまえばいい。他のクライアント(開発者)には影響しない。それを防ぐ責任はあくまでクライアントの開発者にある。
ユーザー単位で

185 名前:払い出すにしろ開発者単位て払い出すにしろ、個別に払い出すことで責任をAPIキーを払い出された側に転嫁できるんだよ。 []
[ここ壊れてます]

186 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 13:14:28.64 ID:fHWcXfSA.net]
>>178
なるほど

187 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 13:22:20.16 ID:KYhaaDP0.net]
ソースコード丸見えだから、APIキーがどこにあるかわかるよね

そうやって海賊版作れてしまうわけだ



188 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 14:46:35.94 ID:VBsyc88B.net]
流石にAPIキーを普通に文字列で書くアホはnativeでも居ないだろ。
難読化する。
ソースコードが丸見えだとしても問題無い気はする。どーせnativeでも逆アセンブルするんだし。

カジュアルな対策なら、c#には逆コンパイルされないILコード使って復号ロジック書くべきかと思うな。

ちゃんとやるならドングルかライセンスサーバのどっちかじゃねえかな。

189 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 16:44:19.57 ID:Aux3ZmsD.net]
nativeと同程度の隠匿で良いならそこだけnativeにすれば良いだけやん

190 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 16:46:40.21 ID:UH8BRHfz.net]
oauthのキーなら速攻でばれるし文字列でそのまま書くな。難読かしても意味ねぇし。やるだけ無駄。

191 名前:デフォルトの名無しさん [2018/08/26(日) 16:48:17.70 ID:7VY92v0a.net]
DBのパスワードとかソースに直書きしてるわ
ハッシュにしてもどこで復号すればいいのか

192 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 17:33:04.42 ID:Lq+jppE1.net]
自前でやるだけのセキュリティのスキルがあるとこは珍しい
素直にASP.NET Identity + IdentityServerでOIDC使っとくのが懸命な判断

193 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 17:45:57.13 ID:6lhNHki6.net]
こういう大事な部分を手軽で強固なセキュリティとしてなんでMSは用意しておかないんだ?

194 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 17:47:36.13 ID:vKa62JvF.net]
はい意味不明
OIDCってアプリ側がユーザーの認証認可をする仕組みだぞ?
それをどうクライアントアプリのAPIキーの隠蔽に使うのか教えてくれ

195 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 17:47:37.20 ID:86UvKUWS.net]
>>186
もうすでにC#関係なくなっているが手軽で強固なやり方ってどんなことよ?

196 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 17:49:20.77 ID:vKa62JvF.net]
>>186
本質的に不可能だからだよ
見られたくないならクライアントに埋め込まずにサーバーに持ってプロキシせよってこと

197 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 17:49:59.20 ID:6lhNHki6.net]
まあそれよりもソースを復元できるのが問題だわな



198 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 17:50:52.91 ID:O9adGcKd.net]
>>172
マシンに固定したいならMACアドレスとかHDDのシリアル番号とかで特定
ユーザーに固定するなら登録されたパスワードを定期的に入力とか

199 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 17:51:50.11 ID:86UvKUWS.net]
>>190
中間言語形式だけでなくスクリプト言語も否定する気かw

200 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 17:54:18.49 ID:Lq+jppE1.net]
>>187
チュートリアルもやったことないのかよ…

201 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 17:56:14.36 ID:vKa62JvF.net]
>>193
だから何のことを言ってるんだ
アプリ本体がユーザーの手元にあるのに認証認可もクソもないわ

202 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 17:57:02.40 ID:6lhNHki6.net]
>>192
サーバー型はビジネスロジックがサーバー内にあるからそこで防げるけど、c#アプリは無理じゃん

203 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 18:00:17.07 ID:O9adGcKd.net]
>>186
それなりには用意してる
お前らが使わねーだけ
https://docs.microsoft.com/ja-jp/windows/uwp/security/intro-to-secure-windows-app-development

204 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 18:02:46.79 ID:6lhNHki6.net]
>>196
UWPじゃなくFormアプリでおねがい

205 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 18:04:53.73 ID:vKa62JvF.net]
>>196
これユーザーが入力した認証情報を安全に保持するのと、サーバー側のリソースに関するユーザーの認証認可をする話だよね
開発者の機密情報を安全にクライアントに持たせるのとは全く別の問題だよ(そしてそれは原理的に不可能)

206 名前:198 mailto:sage [2018/08/26(日) 18:15:55.92 ID:vKa62JvF.net]
もちろんクライアント側で復号する必要がなくて、単にデータストアをクライアント側に置きたいだけなら、サーバー側で暗号化すればいいだけだよ
原理的に不可能なのはクライアント側でも機密情報を復号して使う必要がある場合の話ね

207 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 18:22:46.80 ID:wR7TFJf0.net]
こんな解説しないと分からないってのが信じられん



208 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 18:40:28.29 ID:O9adGcKd.net]
>>198
だから「それなり」って書いてあるだろ

209 名前:デフォルトの名無しさん [2018/08/26(日) 23:06:54.05 ID:BDbiNYg/.net]
Dapperを使用するにあたり、下記の「DAO」クラスの「SelectDAO」メソッドの
戻り値を抽象的に表現できれば、SQL与えるだけで共通に使えるのになと思っているのですが
戻り値を下記のList<IAB>のように書く方法はあるでしょうか?

interface IAB{ }
public class A : IAB { public string nen{ get; set; } }
public class B : IAB { public string nen{ get; set; } }
public class DAO
{
public List<IAB> SelectDAO(string sql)
{
System.Data.IDbConnection _con = new SqlConnection("接続文字列");
return (List<IAB>)_con.Query<IAB>(sql);//DynamicMethodに対する型オーナーが無効です。
と怒られます。
}
}

210 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 23:10:18.71 ID:iDr2keD8.net]
>>202
いやSQLを隠蔽するのがDAOなのにSQL渡したらダメだろ…

211 名前:デフォルトの名無しさん [2018/08/26(日) 23:12:59.95 ID:hANAm2gW.net]
ようするにdaoなんか使わずに
odbc使いなさいということ

212 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 23:15:38.55 ID:qu/vhMXg.net]
>>204
ODBCだなんて何十年前の話だよ…

213 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 23:26:06.62 ID:HvpvLn4I.net]
>>202
戻す値をList<dynamics>にすることで解決します。
マジオススメ

214 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 23:30:34.69 ID:BDbiNYg/.net]
>>203
Dapperは緩いORMでクエリは書く必要あるんです

EntityFrameworkなら確かに悩む必要無い問題な気がします

215 名前:デフォルトの名無しさん [2018/08/26(日) 23:32:55.01 ID:acagJbyI.net]
API抜かれるってどのシーンで警戒してるの?サーバー上でアプリ起動してるとき?

216 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 23:33:30.52 ID:8W/FdQms.net]
5chせんぶら

217 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 10:42:42.81 ID:YXkmN521.net]
>>202
最終的にDapperも何らかのインスタンスをnewしないといけないのに
IABだけ渡されても何作ればいいのか分からないだろ
素直に
public List<T> SelectDAO<T>(string sql) where T : IAB
とかに
というかSelectDAOを呼び出した側はメンバの存在しないIABを使って何をすればいいのか



218 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 13:05:39.06 ID:97nSTlug.net]
>>207
いやそういう問題じゃなくて、SQLを書くんだったらDAOの中で書くんだよ
外からSelectクエリを文字列で受け取るってそれ使う側がDBのテーブル構造を知ってないとできないだろ
データストアの詳細を全く隠蔽できてない

219 名前:デフォルトの名無しさん [2018/08/27(月) 13:51:51.69 ID:eRxM3k20.net]
Dapperの実装ってこんな大変だったのか

220 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 17:39:21.68 ID:dQ3pJlXI.net]
>>211
1知識1DAOクラスが本来の姿という事でしょうか?

実装レベルでもうちょっと抽象化できるかと思ったのですが設計レベルでは好ましく無いとなれば深追いは不要ですね

221 名前:デフォルトの名無しさん [2018/08/27(月) 20:08:24.29 ID:LmPAdMN0.net]
VS2017WindowsFormsAppの実行ファイルを作成したのですが、
実行ファイルをzip圧縮するとサイズが10分の1以下になります
小さくなりすぎな気がするのですが正常の範囲で問題ありませんでしょうか?

または、実行ファイルが肥大?(余分な情報が含まれている等)していたりするのでしょうか?
なにかVS上で出来ることはありますか?

222 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 20:15:33.37 ID:RlI7Tzg3.net]
>>21

223 名前:4
使用しないのならデバッグ情報とか埋め込まれるマニフェストとか外せるけどそれは肥大するほどでもない
どんな実行ファイルか見てみないと分からないし解凍しても動くのなら気にしなくてもいいのでは
[]
[ここ壊れてます]

224 名前:デフォルトの名無しさん [2018/08/27(月) 20:39:37.08 ID:liNpwcvg.net]
プログラミング初心者です
visual studio for mac2017をインストールしてC#を覚えたいんだけど、どうやって学習したらいいのか教えてください!
探してもなかなかいい日本語の学習動画やサイトがなくて、、、

225 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 20:46:49.73 ID:lvpUeXXJ.net]
未確認飛行が定番じゃないかね

226 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 21:10:56.77 ID:LmPAdMN0.net]
>>215
ありがとうございます
1MBほどのファイルが80KBほどになるので、小さくなりすぎではないかと思いまして…
生成される実行ファイルが、プロジェクトのある時点から1MBほどに大きくなったような記憶もあります
読み込み差し替えした画像リソースが上手く外れていないのかなと想像したりしますが…
もうちょっと色々自分で調査してみます

227 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 21:15:57.46 ID:RlI7Tzg3.net]
>>216
念のため書いておくけどMac版はWinフォームやWPF作れないからな
>>218
コード中心で1MBくらいになるのは数万行のものだから、そんな縮むのは間違いなく画像リソースだろうな
BMP形式で入っているとかアイコンが多いとかならZIPでもかなり縮む



228 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 22:15:24.67 ID:SLuEHwvX.net]
>>219
コードは5000行ほどですね。試しにプロジェクトを新規で作り直して中身を移し替えてみます
エクスポートインポート的なのがあれば良いのですがVS標準ではないみたいなので
大変ですが手動でやるしかないですが

229 名前:デフォルトの名無しさん [2018/08/27(月) 22:26:04.85 ID:liNpwcvg.net]
>>217
ありがとうございます!!!

230 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 22:36:37.03 ID:HUaFIhtM.net]
>>217
あそこほんと神

231 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 23:34:18.00 ID:nPk8x20U.net]
OSデフォルト環境だとsn.exeがインストールされてないのか
隔離環境で作ったアセンブリにストロングネームつけたい時ってみんなどうしてんだ?

232 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 23:53:32.54 ID:E9g9LiKW.net]
>>217
>>222
未確認ってどちらかというと入門じゃなくて確認用途だと思うよ
あれを見て判る人はすでにjavaなどの他の言語を習得してる

233 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 23:57:11.03 ID:rJOuuZ33.net]
まあそうだね
C#でプログラミング入門って正直キツいと思うし、そういうコンセプトのところは
たぶんないんじゃないか

234 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 23:58:55.68 ID:m5aHtIH2.net]
>>225
俺は「C#の絵本」でプログラミング入門した。
つまり、C#でプログラミング入門した

235 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 00:04:55.80 ID:5gce9PvO.net]
プログラミングはDelphi6からだったなー
\5,000でパッケージを買ったすぐ後に、無料版のDL提供が始まった思い出
高校生にとって\5,000は地味に痛かった……

236 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 00:10:26.77 ID:ym/+5T0Q.net]
>>225
何がそんなにキツい?
Windows Formsのぽとペタ以上に初心者に優しいのってなんだろ

237 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 00:11:23.06 ID:9uK3R3xF.net]
Androidもjavaのコンパイル通すだけなら



238 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 00:36:01.05 ID:a3yKcaCh.net]
英語得意ではなくてプログラミング言語の経験が全くないのなら
本を買う方がいいような気もする・・

239 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 03:46:31.78 ID:CqD+kceR.net]
猫でも判るで十分じゃね

240 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 07:03:31.88 ID:CaCX57FK.net]
神サイトはどぼんでしょ

あのサイトのコピペがC#する日本ITドカタを支えてる

241 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 07:14:31.08 ID:TOj+sTb1.net]
そこもう情報が古くね

242 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 12:15:17.24 ID:psOOFlwe.net]
>>228
細かいことよくわかんないけどなんとなくコピペで動くからいいやとVB的に使うならそれでいいけど、
言語を一から体系的に習得しようとするとC#はかなり大変だよ
継続的に進化してるから実感がないかもしれないが、今のC#はもはやメジャーな言語の中ではC++に次いでトップクラスに複雑な部類

243 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 12:27:46.49 ID:Xl5gotOf.net]
仕事でも趣味でも体系的に一から学ぶとかやっていたら何もできなくなる
自分の必要な部分以外勉強するのはもはや研究者

244 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 12:31:32.32 ID:fGWTaV2a.net]
C#って、言語仕様で難し目なのはyield, dynamic, awaitくらいな気がする
複数ある実行環境や巨大なフレームワーク、コンパイル後のILの話まで含めたら複雑だと思う

245 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 12:39:40.35 ID:wSuYfii2.net]
>>234
具体的に

246 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 13:10:00.14 ID:psOOFlwe.net]
>>237
たとえば簡単なところでいうと、読み取り専用プロパティの定義には今何種類のバリエーションがあるか知ってる?
int Hoge { get { return 5; } }
int Hoge { get => 5; }
int Hoge => 5;
int Hoge { get; private set; } = 5;
int Hoge { get; } = 5;
これらにどういう違いがあってどういうときにどれを使うべきか初学者向けに説明できる?

247 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 13:12:12.91 ID:H5BH2HV+.net]
>>238
どれでもいいじゃん
まずは動けばいいんだよ
バグる?そんなのバグったときに対応すればいい
どうせ世の中のほとんどのアプリがバグだらけなんだし
そしてそのバグ取り経験が学習にもなる



248 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 13:14:07.70 ID:5WHkkAct.net]
C++やったことないから知らないどC++は基本的なことも複雑なイメージ
C#は極めるほど複雑なイメージ

249 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 13:14:21.36 ID:5WHkkAct.net]
基本はかんたん

250 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 13:15:27.95 ID:5WHkkAct.net]
>>238の例なら初心者は一番上だけ知っとけばいい

251 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 13:20:49.83 ID:onl38Ff8.net]
複雑なことができると学習が困難
すべてを学習すること前提ならそうかもしれん

252 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 13:55:05.69 ID:8egnCxzp.net]
>>236
>>125 でも質問させていただいたのですが、
yield, dynamic, await あたりは理解できているつもりであるものの
volatile の役割がどうしても理解できません。

慣れている方にとっては当たり前のことなのかもしれませんが、
volatile がある場合とない場合で動作が変わるコードの例だけでも
お教えいただけないでしょうか。

どうぞよろしくお願いいたします。

253 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 14:22:59.40 ID:MmXTTGRL.net]
>>244
>volatile がある場合とない場合で動作が変わるコード
難しいんじゃないかなあ

(1) 実行儒所を入れ替える
(2) 変数(メモリ)に直接アクセスしない

みたいな最適化がどういうケースでコンパイラによって行われるか、たぶん誰もよく知らないw

だけでなく、古い記事だけど
www.itmedia.co.jp/enterprise/articles/0503/23/news086_4.html
↑にあるように、CPUレベルの最適化はCPUに依存する

254 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 14:32:18.53 ID:sGx9mZW+.net]
使ったことなくてググったけどそもそものvolatileに対する理解がなんか違う気がする
d.hatena.ne.jp/dotnetmemo/touch/20111023/1319380181

255 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 14:33:27.71 ID:d5vKjLdu.net]
>>125
volitateは「この変数はマルチスレッドで使うよ」と明示することによってシングルスレッドの場合

256 名前:ノしか効果的ではないような実行速度の最適化技術を使わせないようにするだけであって、排他制御を自動で行うものではないのでは? []
[ここ壊れてます]

257 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 14:53:49.79 ID:8egnCxzp.net]
>>245-247
皆さんレスどうもありがとうございます!

>>245
> >volatile がある場合とない場合で動作が変わるコード
> 難しいんじゃないかなあ

ありがとうございます。
ということは逆に言えば、volatile が無いことによって想定外の最適化が行われて
不具合につながること自体が起こりにくいものだと考えてもいいのでしょうか。

ただ仮にそうだとしても、お作法的には複数のスレッドからアクセスされる可能性のある
フィールドはすべてに volatile を付けるべきなのかなとも思うのですが、

CS0420 : volatile フィールドへの参照は、volatile として扱われません。

のような警告がうるさくてあまり volatile をつけたくないときもあるので悩んでしまいます。



258 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 14:54:59.71 ID:8egnCxzp.net]
>>246
参考ページのご紹介どうもありがとうございます。
実はそのページも読んでみたのですが

> ちなみに後者の記事では実際にvolatileをつけないと問題のあるコードが記載されている。
> 以下のコードをReleaseモードでビルドして、デバッグなしで実行すると終了しない。
> volatile をつける(static volatile bool complete = false;)と正しく終了する。

という記述に反して、私の環境(Win10, .NET Framework 4.7.1)では
volatile がなくても終了してしまうようです。
そもそも私にはそのページのコードと >>125 のコードが本質的に同じものに見えてしまい、

> volatileに対する理解がなんか違う気がする

とおっしゃることの真意が理解できていないのですが、
何かお気づきのことがあれば教えていただけないでしょうか。


>>247
レスありがとうございます。
つまり、volatite の有無で実行速度に差が出ることはあっても
計算結果が変わることはない、ということでしょうか。
そうであるなら気が楽なのですが、いくつかのページやここでの他の方のレスを読むと
どうしても確信が持てずにいます。

259 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 15:45:02.14 ID:MmXTTGRL.net]
>>248
確実である保証がないものに確実性の保証を与えるvolatileを「お作法」
と思う発想は100%間違っています






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<263KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef