ふらっと 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/11(水) 01:53:31.50ID:OI/RESej0
恐ろしい子!
2018/07/11(水) 04:05:50.95ID:xb7b/JPY0
C#の話じゃないかもしれませんが、
LAN上の他のPCと通信するにはTCPorUDPしかないですかね?
ポート開けようとすると管理者のパスワード要求されるので
そういうのに影響されない方法があれば教えてください
サーバー上にファイル作って共有しようかとも思ったのですが
ロックとか速度とかちょっと使いにくいので
2018/07/11(水) 07:45:57.48ID:08+HRZoYa
インターネットに出れるんならAWSでSQSかKinesisでも使えば
2018/07/11(水) 08:15:13.05ID:RuBHX//DM
>>536
RAWなら好きなもの送れるでしょ
539デフォルトの名無しさん (ブーイモ MM7f-Ro9v)
垢版 |
2018/07/11(水) 08:54:54.59ID:NAmdOA29M
ネットワークプログラミングの定石学びたいっす
2018/07/11(水) 09:14:18.75ID:RuBHX//DM
レイヤー無視なら
Multi-object Multi-lingual Document Intermediary の仕様書でも
541デフォルトの名無しさん (ササクッテロル Sp3b-AA7a)
垢版 |
2018/07/11(水) 09:42:14.12ID:DD+vdWYvp
>>536
TCPやUDPじゃないと関所を通れないからなぁ
2018/07/11(水) 10:03:35.37ID:/J4Azv5gd
ポート開けたくないな、名前付きパイプのRemotingは?
sambaのポートが開いてりゃ疎通できた気がする。
2018/07/11(水) 10:03:54.68ID:/J4Azv5gd
ないな→ないなら
2018/07/11(水) 12:51:43.31ID:vn5tWIshM
>>536
> ポート開けようとすると管理者のパスワード要求されるので
要するになんか管理者に知られずき通信したいんだろ
悪事に加担する気はない
2018/07/11(水) 12:56:39.30ID:fg0dx/vD0
アホか
くだらないことを書き込む前に少しは推敲しろ
2018/07/11(水) 13:59:27.90ID:cb0VPk/Kd
>>544
aho
2018/07/11(水) 16:51:29.67ID:xb7b/JPY0
ありがとうございます
まずは名前付きパイプを調べてみます
548デフォルトの名無しさん (ササクッテロル Sp3b-AA7a)
垢版 |
2018/07/11(水) 16:58:41.62ID:DD+vdWYvp
バイブにたかしとかりょうとか名前付けて愛用してんのかなぁ…
2018/07/11(水) 17:39:37.83ID:kzvuO0/N0
>>534
レスありがとうございます

>右辺のArrayがnullを許さないからコンパイラに怒られそう
>初期値入れたらいけそう
確かにそんな気がしますね
でもそうなると大きな配列とは相性が悪そう・・・

>もし仮にstringの規定値がemptyになる仕様になれば初期化無しでもコンパイルとおるかも
それが一番わかりやすそうですね
ただ、stringはともかくStringBuilderの規定値とかどうすればいいのかさっぱり見当がつきません

>c#7系以前と同じ挙動にするなら
>var a = new string[1]?;
>という記述になるはず
?の位置は[1]の前ですか?
まあ書き方はともかく、もしvar a = new StringBuilder[100];とすると
自動的に100個のStringBuilderのインスタンスが作られるなら、
そのような動作を望まなければ配列の要素の型はnull許容にしたほうが良さそうですね

そうすると、例えばジェネリック型を使うときにはstringのような型とStringBuilderのような型の
区別をつけたくなることもありそうですし、ジェネリック型制約に新しく
where T : immutable(intやstringは許すけどStringBuilderは許さない)が
追加されたり・・・とか妄想してみましたw
2018/07/11(水) 17:57:29.81ID:g/mYMck9M
プログラム素人で恐縮ですが、for文のスコープの中に変数を宣言するとメモリの無駄使いになるでしょうか?

for(;;) int hoge =1;
のような書き方です

for文に入る前に宣言した方が作法的に良いのであればそうしたいと思い
2018/07/11(水) 18:16:12.97ID:I//Y0R5O0
コンパイラが最適化するのじゃないか?

初心者は、そんな事を考えずに、なるべく狭いスコープで宣言した方が良い。
処理に、10秒以上掛かるのなら、その時に考えても良いけど

「Effective 何々」などの本を読むと、書いてあるかも知れないけど
2018/07/11(水) 18:20:39.15ID:L0DC21nsM
>>550
C系の言語では基本的に一箇所で宣言された変数はメソッド全体で一つしか作られない
C#の場合はクロージャが絡んだりすると変わってくるけど、基本的にはそういう思想で設計されてる
気にせず必要最小限のスコープで宣言せよ
2018/07/11(水) 18:31:22.94ID:vn5tWIshM
>>545-546
そんなレスしかできないからお前は🙅なんだよ w
2018/07/11(水) 18:40:26.95ID:sApF7MBC0
>>550
IL見ればあなたの悩みは全て解決しますよ
555デフォルトの名無しさん (ササクッテロル Sp3b-AA7a)
垢版 |
2018/07/11(水) 20:26:56.12ID:DD+vdWYvp
あーでも>>550みたいな書き方すると突っ返されるメーカーあるよな。
無駄な作業させてるって自覚無いんだろうかなぁ
2018/07/11(水) 20:31:34.49ID:L0DC21nsM
>>550みたいな書き方してるコードってたいてい他の部分もクッソ汚いから、とりあえず突き返すのはわりと賢明なやり方
557デフォルトの名無しさん (ササクッテロル Sp3b-AA7a)
垢版 |
2018/07/11(水) 20:35:01.60ID:DD+vdWYvp
スコープ毎にスタック操作なんかしないし、汚くてもオプティマイズされたら面影も無いし、イジメでしか無い罠
2018/07/11(水) 20:39:44.95ID:sCxl2UHN0
>>549
このレスからにじみ出る頭のよさ
2018/07/12(木) 00:31:45.14ID:07VYm5500
var すら毛嫌いされちゃうとこなのでコードレビューなんかやったらストレスで禿げるわ
2018/07/12(木) 01:31:48.84ID:Mt10qC0c0
それぞれのコーディング規約に従えばいいんじゃないですか
2018/07/12(木) 02:20:50.58ID:uvVknaw70
>>555
さすがに>>550のコードは例としてはあれだが
C#でforの中でしか使わん変数をforの外で定義しろと?
どんなメーカーだよ。つかメーカーってなんのメーカーだよ
2018/07/12(木) 05:53:25.42ID:ddTdn7l60
C#8のデフォルトインターフェースメソッドって、
インターフェースでほぼコーディングを終わらせてしまうことも可能、
って解釈で良いのかな。
2018/07/12(木) 06:34:40.79ID:0C7UQQhF0
クエリとlinqとlinqToXmlの違いがなにかよくわからないです
これらはなんですか

クエリはfromやselectとか思ってたのですが
"from a 〜 select a"も "XXXXXX.Select(〜)" の両方ともクエリ?

linqの中にクエリがある感じですか?
用語の違いを知りたいです
2018/07/12(木) 06:53:16.73ID:TSQ/qQegM
>>561
C組込上がりが閑職で社内システムを任されるとありそう

関数の先頭で宣言しろ宣言
2018/07/12(木) 07:09:00.83ID:8dshyEbGd
>>563
メソッド式とクエリ式でググれ
2018/07/12(木) 07:38:41.95ID:VF8Jnm1rH
NumericUpDownで、ホイール下回転で値をUpさせる方法ないですか?
2018/07/12(木) 08:08:47.97ID:CB78gZS5M
>>562
ライブラリ実装者が破壊的変更の影響を最小化
細かいパフォーマンスを最適化
するためのものなので乱用しないで
拡張やダイヤモンド継承による名前の重複など問題はまだ残ってる
2018/07/12(木) 09:04:57.23ID:FtAr8eR70
>>553
管理者のパスワードって、単なるスーパーユーザーのパスワードのことだろきっと
2018/07/12(木) 12:49:07.46ID:96DaRN210
だったらなんなんだよ
570デフォルトの名無しさん (ワッチョイ 11a5-kMcx)
垢版 |
2018/07/12(木) 15:12:12.67ID:iIGcGb6Z0
久しぶりにまたC#勉強してみようかと思ってるんだけど
最近の動向ってどうなの?雑誌でもあまり見かけなくなったけど
2018/07/12(木) 15:52:53.09ID:Yg7MNvpld
さあ、プログラミングの雑誌読んでる奴は最近少ないでしょ
プログラミング情報は基本ネットだからな
572デフォルトの名無しさん (ワッチョイ 89d3-Y8gp)
垢版 |
2018/07/12(木) 16:16:23.83ID:S+gZjDN60
>>570
マイクロソフトはAndroidのアプリC#で作る環境起こしたり結構力入れてる
573デフォルトの名無しさん (ワッチョイ 11a5-kMcx)
垢版 |
2018/07/12(木) 16:37:53.91ID:iIGcGb6Z0
>>572
へえ〜そうなんだ
金のにおいプンプンするね
574デフォルトの名無しさん (ワッチョイ 11a5-kMcx)
垢版 |
2018/07/12(木) 16:40:31.97ID:iIGcGb6Z0
そういえばWindowsフォンとかいうのもあったね
2018/07/12(木) 16:45:06.48ID:Mt10qC0c0
>>572
iOSもな
2018/07/12(木) 17:23:36.80ID:S4vKnl6/d
雑誌とか書籍とか、本屋の棚を見てると勢力図が判るね。
Python強い。
2018/07/12(木) 17:25:15.60ID:PtJZmudoM
MVC使ってるんですが、アルゴリズムをSQLに書くのは邪道でしょうか?

Modelを用意している時点でC♯でアルゴリズムを書くのが正攻法なのかなという気がして

でもクエリにある程度書いた方がパフォーマンスは良さそうで悩んでいます
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と書くのはなぜか?」
というように具体的なコードを交えてもう一度質問してもらえませんか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況