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

■ このスレッドは過去ログ倉庫に格納されています
2018/06/05(火) 19:32:42.28ID:70UTtyrn0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part137
https://mevius.5ch.net/test/read.cgi/tech/1523004019/
■コードを貼る場合は↓を使いましょう。
http://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
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2018/07/12(木) 19:07:16.04ID:MbhSnhO70
>>566
NumericUpDownの派生コントロールを作ってOnMouseWheelを書き換える
方法 : 既存の Windows フォーム コントロールから継承する
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/how-to-inherit-from-existing-windows-forms-controls
コード例
public class NumericUpDownEX : NumericUpDown
{
protected override void OnMouseWheel(MouseEventArgs e)
{
  if (null == e) return;
  decimal m = this.Value;
  int a = e.Delta > 0 ? -1 : 1;
  m += a * this.Increment;
  m = m > this.Maximum ? this.Maximum : m;
  m = m < this.Minimum ? this.Minimum : m;
  this.Value = m;
}
}
2018/07/12(木) 19:39:16.71ID:5nesTxgP0
どうでもいいことだけどEventArgsがnullで渡ってくるケースってあるの?
2018/07/12(木) 20:09:54.21ID:yTzbc7hIM
>>577
邪道です
ビジネスロジックがSQLを侵食すると保守性が下がりスパゲティクエリが量産されます
結果的にパフォーマンスも劣悪なものとなるでしょう
2018/07/12(木) 21:06:22.46ID:uvVknaw70
そのSQLはどこに書かれているのだね
2018/07/13(金) 06:58:05.36ID:DDbEgWasM
SQLはクエリ管理クラスでC♯で管理してます
ストアドで書かれてたらC♯がどうこういう話では無いですね

つかストアドは世間様の開発では一般的なのでしょうか

改修に弱そうなイメージがありシステム構成の検討任されたら自分なら選択しなさそうですけど
2018/07/13(金) 08:21:33.93ID:KJTjy0eMM
ビジネスロジックをストアドに集めるってのは
見たことあるなぁ。
既存言語はFEP構築だけに使う。

どちらかに徹底してりゃ良いんじゃね。鼻ホジ
2018/07/13(金) 12:34:59.94ID:p9f6lddDD
>>583
システムのリプレイスとデータベースのリプレイスのどちらが多いかだよな

後者でストアド依存は死ねると思う
2018/07/13(金) 14:43:56.67ID:0KYXvOut0
DBのバージョンアップじゃなくてリプレイスで
システムをリプレイスしない案件なんてほぼ考えられん
2018/07/13(金) 15:22:59.85ID:r56MKyepM
可能な限り全部SQLでいいよ
多くの場合SQLの方が圧倒的に簡潔だしテストも容易だし
ストアドは管理が面倒だし見通しも悪いからソースに書きたいが
2018/07/13(金) 16:31:35.87ID:JMEmIQPoM
SQLに書いてもいいけどシステムが死ぬまで面倒を見て、他のメンテナーに迷惑をかけないでくださいね
2018/07/14(土) 14:54:07.96ID:pS7j55swr
データベースにSQLite使ってるんだけど、データ量が増えたらSELECTがクッソ重くて無反応になる
無料でもっとまともなDBってないかな?
2018/07/14(土) 14:57:09.03ID:8JxBJ14s0
そもそもインデックスとか
ちゃんと使ってるのかね
2018/07/14(土) 15:00:44.83ID:pS7j55swr
もちろん
2018/07/14(土) 15:02:50.58ID:LIsDU/xsM
PostgreSQLだな
2018/07/14(土) 15:06:32.58ID:EtwCAyCb0
C#から使うならSQLServerでしょ
2018/07/14(土) 15:26:32.37ID:pS7j55swr
どちらも無料なの?
2018/07/14(土) 15:40:56.72ID:jYJ6FXN8a
>>579
nullで渡すと
2018/07/14(土) 15:44:26.58ID:3U2LRmJo0
標準ライブラリのことでは?
2018/07/14(土) 16:03:24.84ID:DkLuqI8LM
プライベートの開発ではpostgresql一択
2018/07/14(土) 16:12:40.69ID:XotIEGF50
>>588
データ量がどのくらい増えたとかテーブルのスキーマ構成とかSELECT文みてみないとなんとも言えんな
DBMS変えたら劇的に変わるもんでもないし
2018/07/14(土) 16:56:06.37ID:pS7j55swr
>>596
売るアプリだから無料のがよい

>>597
すまんすまん
indexの順番変えたらかなり改善した
複合indexを先に設定して、その後単一index作ってた
これを入れ替えた感じ
2018/07/14(土) 16:57:19.10ID:pGWO+29la
無料ならSQLServerはかなり制限がある
PostgreSQLは完全に無料で、性能・機能とも圧倒的に上
SQL ServerはWin上でGUIでお手軽に運用できるしMS製品で完結するのでドカタには愛されてる
2018/07/14(土) 16:59:28.09ID:3U2LRmJo0
俺はデータをカテゴリに分けてそれぞれに専用のテーブルを用意して振り分けて高速化したことある
2018/07/14(土) 17:06:29.29ID:zT+O/n6K0
PostgreとMySQL比べるとどんな感じ?
602デフォルトの名無しさん (ワッチョイ 6681-38gj)
垢版 |
2018/07/14(土) 17:06:52.80ID:bK14KKak0
>>599
かなりって例えば?
ストアドも使えるしDBサイズも10GBまで使えるし基本問題ないっしょ。サイズ超えそうになったらバックアップDBとしてアーカイブすりゃいいしね。C#ならSQLServerがいいよ
2018/07/14(土) 17:09:02.22ID:zT+O/n6K0
俺もSQLServer使ってたけど10GB制限がキツイし全てのレコードを読めないと不都合だから別のDB探してたけどMySQL使おうかと思ってたところだった
2018/07/14(土) 17:18:11.14ID:DkLuqI8LM
MySQLは共通テーブル式が使えなくて捨てた
2018/07/14(土) 17:25:20.01ID:FtH+pgzSM
>>601
最近はPostgreSQLも盛り上がってるね
PostgreSQLは機能が非常に豊富で極めて柔軟、非定形データだろうが地理空間情報だろうが何でも扱える
ライセンスもMySQL(GPL)より緩い
2018/07/14(土) 17:25:32.60ID:pS7j55swr
>>599
まじか
postgreに変えようかな

>>602
10GBならかなり余裕あるね
ならSQLServerも良いかなあ

MySQLはWebアプリではよく使ってるけど

そもそもわかってないことがあるんだけど、SQLってSQLサーバーで動いてるわけじゃん?
SQLite以外はWinFormアプリで作ったアプリだけで動かないの?
SQLアプリみたいなのが生成されるの?
2018/07/14(土) 17:27:38.30ID:3U2LRmJo0
マシンにDBサーバーをたてるんだろ
2018/07/14(土) 17:30:16.00ID:zT+O/n6K0
>>604-605
なるほどありがとう
それならせっかくだしそっちにしてみようかな
SQLServerはEntityFramework簡単に使えたけどもPostgreSQLもライブラリとか使いやすいのかな?
MySQLは接続文字列がおかしいのかテーブル指定がおかしいのかイマイチ上手く動かせなかった
2018/07/14(土) 19:18:56.84ID:VO5okbkP0
ASP.NET Core MVCはオワコンになって今後はASP.NET Core Razorが主流になっていく感じですか?
2018/07/14(土) 19:54:51.34ID:GmLXhPvN0
>>609
お前なんか勘違いしてんぞ
2018/07/15(日) 10:06:31.58ID:vbOfg8AFM
今は各言語ごとにフルスタックのフレームワークがあるけど無駄に見える
どれか一個がセンターにあって後は各言語対応のAPI提供というパターンにならないのか
2018/07/15(日) 10:20:38.72ID:aio6qM3qa
少なくとも.NETはASP.NET Coreが統一フレームワーク
2018/07/15(日) 10:33:05.77ID:X2092vNg0
まさに.NETのことだね
2018/07/15(日) 10:46:24.73ID:CFAGuM1zM
各言語ごとにフルスタックフレームあるけど
シェア3位のdjangoすら5%以下らしい
それ以下のASP.Net coreの存在意義がかなり薄いと思うけどないといけないものなのか
2018/07/15(日) 10:54:00.74ID:7Enq42ndr
現実
https://hotframeworks.com
2018/07/15(日) 10:55:19.57ID:7Enq42ndr
Coreは存在すらしていないっぽいな
2018/07/15(日) 10:59:15.18ID:upsCSZLnM
検索でClassic ASP.NET/MVC/Coreは区別がつかないから混ざってるんだろ
2018/07/15(日) 11:08:09.00ID:p0LeSK9sd
Coreじゃなくても.NETなら多言語対応だし
2018/07/15(日) 12:32:26.47ID:mrrFOD8id
>>616
StackOverflowのデータ見てみろよ
2018/07/15(日) 12:53:44.01ID:7Enq42ndr
なんかSQLiteがおっせーって書いた者だけど、他のサーバー型SQLよりぶっ飛びで速いんだな
このまま使い続けるか
621デフォルトの名無しさん (ワッチョイ 6681-38gj)
垢版 |
2018/07/15(日) 14:17:55.92ID:LJ5Na9vP0
>>620
速度求めるならメモリ使えば?
DBのinoutは別スレッドでコントロール
2018/07/15(日) 19:34:53.12ID:Bovqh3Um0
使ったことないからよく知らんけどローカルファイルへのアクセスだからレイテンシが小さいとか?
2018/07/15(日) 20:22:37.76ID:5Xgvchi7M
javaに比べると圧倒的に仕事が少ないC#ですがjavaの有償化で仕事は増えるでしょうか
2018/07/15(日) 20:38:51.55ID:BpM21w6AM
レガシーJavaをすぐさまC#に移植するってのは現実的じゃない
レガシーの面倒を見るためにとりあえず金を払ってライセンスを買うしかない
ライセンス買ったならじゃあいいかとなってJavaを引き続き使っていくことになる
2018/07/15(日) 20:54:44.00ID:31mTAsFB0
Java厨ザマアw
626デフォルトの名無しさん (ワッチョイ 66e8-LQig)
垢版 |
2018/07/15(日) 20:57:17.95ID:OJzI1T4t0
でもC#は無料なの?
いいえ、有償です
2018/07/15(日) 20:59:55.51ID:WCfEKFtx0
大人しくオラクルのケツ舐めて1CPUあたり25ドル払っとけって
2018/07/15(日) 21:00:24.79ID:31mTAsFB0
2ドルだろ
2018/07/16(月) 01:40:16.05ID:0WZqyTt50
application/jsonを使ったRPCの実装方法でスタンダードなやり方ってありますか?
ぐぐってもREST APIの実装方法ばっかり出てくるんですが…
2018/07/16(月) 03:10:13.20ID:yOmS9IaY0
>>629
.netならWCFかWEB API

REST APIは主流だが
規模的に保守が辛くなるなら
gRPC gatewayも良いと思う
2018/07/16(月) 03:53:04.58ID:M+rWa9nq0
>>609
MVCのVの部分がRazorエンジンになっただけやで。
2018/07/16(月) 10:04:00.08ID:R/aUtilHr
>>621
アプリ起動時とかにSQLからメモリテーブルにコピーして、追加更新削除があれば別スレッドでinoutする感じ?
2018/07/16(月) 15:04:39.14ID:f5ww7Pxw0
プログラミング初心者なんですが、Randomオブジェクトの扱われ方がよく分かりません
なぜ別にクラスを作らなくてもインスタンスを生成出来るのでしょうか
2018/07/16(月) 15:14:56.71ID:Tg2I8Krt0
>>633
「なぜ class Random { ... } とクラスを定義しなくても new Random() と書けるのか?」
という質問なら、「Random クラスは最初から定義されてるから」が答えになると思います

質問の意図が違うなら、「XXXと書くのが正しいと思うが、実際にはYYYと書くのはなぜか?」
というように具体的なコードを交えてもう一度質問してもらえませんか?
2018/07/16(月) 15:17:03.84ID:f5ww7Pxw0
>>634
それで合ってます 返答どうもです
636デフォルトの名無しさん (ワッチョイ 6db5-p+0f)
垢版 |
2018/07/16(月) 15:18:23.77ID:MLoWNAtR0
usingで指定されて無いと幾ら最初から有っても使えないけどな。
637デフォルトの名無しさん (ワッチョイ 6db5-p+0f)
垢版 |
2018/07/16(月) 15:19:55.32ID:MLoWNAtR0
そう言う意味では、最初からusingでネームスペースが指定されているって言わないと正しくない。
2018/07/16(月) 15:21:33.95ID:fVJkfJ21M
JSFみたいな使いやすいフレームワークねえかなぁ
C#は言語そのもののセンスは良いけどエコシステムがショボいよな
2018/07/16(月) 15:50:12.73ID:jQHectJ10
>>636
namespace省略せずに書けば使えるぞ
2018/07/16(月) 15:55:20.48ID:N67OeEDm0
>>634みたいにも?
2018/07/16(月) 15:58:33.82ID:XBIjWYki0
>>640
書けないけど「使える」

>>636
> usingで指定されて無いと幾ら最初から有っても使えないけどな。

自分の書き込みぐらい覚えとけ
2018/07/16(月) 16:00:41.87ID:CrUViZU+0
偶にこういうコード見かけるんだけど、コーディング規約に全部書けとかあるのかな?

using System.IO;

System.IO.File.ReadAllBytes(hoge);
2018/07/16(月) 16:54:46.97ID:jQHectJ10
自分が作っていないクラスを使用するのに必要なのはアセンブリ/COMの参照設定。
(基本的なアセンブリは最初から設定されてる)

usingするかはどうかは別の話。
参照していないのにusingだけ書いてももちろん使えない。
2018/07/16(月) 17:47:55.17ID:SOPUXhzxM
>>642
そのスコープのFileクラスの定義が重複している場合
曖昧さを解消するために名前空間を全て書く必要がある

普通は標準ライブラリと名前が衝突する事態の方を避けるだろうけど
2018/07/16(月) 18:31:19.12ID:zG1+5npqa
>>642
そんな不合理な規約はないと信じたいねw

あえてフルネームで書くことを肯定できる(少なくとも否定的に思わない)ケースは
そのソースファイルでその名前空間の要素そ参照するのが1、2か所しかない場合ぐらいかなあ

意見は分かれるかもしれんが、バッティングを避ける目的ならエイリアスを使うのが普通でしょう
using IO = System.IO;
みたいに
2018/07/16(月) 19:06:40.67ID:XBIjWYki0
>>645
> そのソースファイルでその名前空間の要素そ参照するのが1、2か所しかない場合ぐらいかなあ
それならusingも書かないだろ、バカかよ
2018/07/16(月) 19:11:38.45ID:zG1+5npqa
何言ってるのか意味わからないねw
2018/07/16(月) 19:29:52.77ID:65+uaC9H0
その名前空間を使うのがここだけだと思ってフルで書いたが
やっぱり他でも使ったのでusing追加した
元の箇所は直していない

まあ、そんな感じじゃないかと
2018/07/16(月) 19:56:41.16ID:Tg2I8Krt0
>>634 に不適切なコードを書いたために混乱を招いてしまいました
また、 >>643 で適切な補足をしていただいていますが、
初めからこのような補足が必要ないようにできているだけでも
混乱は避けられたかもしれません。大変失礼しました
650デフォルトの名無しさん (ワッチョイ 6db5-p+0f)
垢版 |
2018/07/16(月) 21:01:32.11ID:MLoWNAtR0
同じ名前のクラスがあるんだよw
だからフルネームで書かないと怒られるんだw
2018/07/16(月) 21:45:18.03ID:PnkuF1BZ0
>>650
あるあるw
バッティングすると悪夢なのなw
曲線をPathって名前にしてファイルパスもPathって名前にして
usingを呼んじゃってからエラーが出たぜハイ直せってやられると最悪
せめて改名してからusing呼べやクソがって思うんだが
馬鹿な奴に限ってバッティングさせるし作業手順も考えない
しかもそれでコミットしてくる
2018/07/16(月) 22:03:10.98ID:0I7EzBy0r
[]で読み込むDLLの意味がよくわからない
どこで呼んでもいいみたいだけど、あれってどういう仕組みなの?
2018/07/16(月) 22:12:47.48ID:Fqt7znsC0
ランタイムがLoadLibraryなりで動的にロードしてよろしくやってるだけやで
ネイティブ側を書いたことないとイメージしづらいのかもしらんが
2018/07/16(月) 22:24:51.27ID:fVJkfJ21M
>>651
バッティングどうこうよりもファイル操作と図形操作を同じファイル内に実装してる時点で最悪だね
誰が悪いかというとそんな設計書を書いたバカが最悪だ
2018/07/16(月) 22:25:49.96ID:N67OeEDm0
アホかな?
2018/07/16(月) 22:32:54.10ID:PnkuF1BZ0
>>654
いや、別だよ
でもたまたま引っ張ってきたusingにPathが入っててバッティングしちゃったんだ
.netframeworkにはじめから入ってるPathも入ってかなり手強かったよ
657デフォルトの名無しさん (ワッチョイ 6db5-p+0f)
垢版 |
2018/07/16(月) 22:50:59.26ID:MLoWNAtR0
いやいや、それは例えが悪いだけで、マイクロソフト様ですら同じ名前のクラス名付けてて、たまにどっちだボケって聞いて来るからなぁ
2018/07/16(月) 23:09:50.26ID:m2D0dvJF0
>>638
JSFときたかwww
具体的に何が足りないと?
2018/07/16(月) 23:16:42.09ID:fVJkfJ21M
>>658
足りないってほどじゃないんだけどねー
直感的に挙動を理解しやすいJSFと比べてこっちはちょっと推測しにくい感じ
これを変えたいなら多分こうだろってのが閃きにくい
ドキュメントみれば解決するけど見ないでなんとなくで解決したいんだよね
2018/07/16(月) 23:17:22.95ID:m2D0dvJF0
>>659
具体的に
2018/07/16(月) 23:23:08.13ID:tD8bNggya
>>657
Managed DirectXは酷かった
嫌がらせレベル
2018/07/17(火) 04:59:27.29ID:KftlrzGo0
blockingcollectionを使ってキューを作ろうと思ってます
そのキューの中にデータを取り出すのではなく、データがあるかないかを確認したいのだけども
それってどうやって実現できるでしょうか?
2018/07/17(火) 07:44:52.51ID:xIcozahsa
>>662
できない
BlockingCollection.GetEnumeratorで取得した列挙子は既にコレクションから削除された要素を返す可能性があるから、要素の存在確認には使用できない
それが必要なら普通のQueueをロックして使おう
BlockingCollectionはProducer-Consumerパターンを実装するための特殊なコレクションで、取得と消費は基本的に分離不可能な操作として扱う
664デフォルトの名無しさん (ワッチョイ 6db5-p+0f)
垢版 |
2018/07/17(火) 08:21:55.96ID:9WzYNMpJ0
なぜキューを使わず違うものでキューみたいなものを作るのか?
665デフォルトの名無しさん (ワッチョイ 25d2-qJjT)
垢版 |
2018/07/17(火) 09:13:46.43ID:JRPSvXt/0
【毒素ためる、制汗″】 Ban、Ag、 8×4が <乳癌> <鼻炎> <ワキガ> の原因になっている!?
http://rosie.5ch.net/test/read.cgi/liveplus/1531621398/l50



くさいくさい
2018/07/17(火) 09:57:15.28ID:ZMugNBvxM
>>662
Count
2018/07/17(火) 11:05:47.08ID:we+kZK/d0
>>662
Any()はだめ?
2018/07/17(火) 12:01:54.65ID:5aCAbGPrH
>>633
ランダム、つまり白い悪魔と異名を取ったモビルスーツの事だ

常識なので覚えるように
2018/07/17(火) 12:04:20.14ID:5aCAbGPrH
>>633
ランダム、つまり疑似乱数を生成するクラスだ
疑似乱数は自前で作るのも簡単だから適当にに作ってみるのも一興だな
2018/07/17(火) 12:10:59.29ID:G5IVIkIla
>>667
食べるが側が自分だけじゃないなら>>663の言うととおりだめなんでしょう

その場合もコレクションに出し入れがあったことを検出する簡単な方法があれば
スキャンしている間に出し入れが行われなくなるまでリトライすることで実現できそうだけど、
そういう簡単な方法はないっぽい。

もっとも、仮に実現できたところで排他制御できないなら検査の後の状態は保証できないわけで、
どんだけ意味があるのか疑問ではある
2018/07/17(火) 17:47:09.52ID:bja0VNMZd
>>663
>>666
>>667
レスくれた方ありがとう
やりたいこととしてはcountとpeekを駆使することでなんとか実現できそうだという結論になりました
キューに対してpeekすると、じゃあ今度はいつ削除するの?とかなりそうだけどもpeekでなんとかします
2018/07/17(火) 19:12:27.90ID:TPR76IZRM
この本読み込めば中級者って本ないん?
独習C#新版と
実戦で役立つc#プログラミング
あたりですか?
2018/07/17(火) 19:14:26.70ID:LTVxWI1Y0
BlockingCollectionはコレクションの要素が取れるまでブロックし続けるから、peekとか削除とか考えずに済むから楽なのにな
まあ>>670の通り他と連動してコレクションにとどめておく必要があるんだろうけどさ
2018/07/17(火) 21:31:50.07ID:k6KsTxhHM
>>672
プログラムは本を読んだから中級者みたいな世界じゃないと思う
年間に1000行程度のアプリを10本ぐらい作って3年ぐらいしたら中級かなって思う
2018/07/17(火) 21:58:58.79ID:0bp3oS7H0
コピペを繰り返していたら3年やろうが10年やろうが初心者のままだぞ気をつけろ
2018/07/17(火) 21:59:23.64ID:JBBJUfmR0
いや、今ならVRエロゲ一本作れば中級者
2018/07/17(火) 22:03:58.19ID:vVWTH+iBM
むやみに書くより良書を読んだほうがいい
読んだ内容を実践して身につける
■ このスレッドは過去ログ倉庫に格納されています