X



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

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

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

■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part136
http://mevius.5ch.net/test/read.cgi/tech/1520057345/

■コードを貼る場合は↓を使いましょう。
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/05/24(木) 17:02:19.57ID:q7DgX+HL0
両方に出力する関数作って、その関数に置き換える事すら出来ない無能に何をアドバイスしろと?
2018/05/24(木) 17:11:45.68ID:iQu+wqIP0
Windowsで使えるteeコマンド探した方が早いんじゃねえか
2018/05/24(木) 17:19:25.14ID:EdBeTbDkM
PowerShellならデフォルトで用意されてるよ!>tee
2018/05/24(木) 17:19:52.49ID:AHiLgPdDM
>>836
???
すみません、よくわかりません

>>837
書き方まずかったですかね。
そう言うのも含めて、2つの処理を同時にするという意味だつたのてすが。
他にはなさそうですね。
2018/05/24(木) 19:35:28.68ID:MnVBsXE4d
TraceSource
2018/05/24(木) 20:33:40.60ID:hof73DG2a
正直何言ってるのかよく分からんけど、普通にリダイレクトするだけのような...
っていうか、普通はコマンドライン引数で出力先を切り替えるように作ると思うんだけど...
2018/05/24(木) 23:35:59.30ID:iQu+wqIP0
>>839
へえ知らなかったな
2018/05/25(金) 00:27:44.75ID:j/dB1L1+0
PowerShellはもっと流行るべき
2018/05/25(金) 00:39:09.38ID:N3c6aWbUa
PowerShellとか罰ゲームだろ
インタラクティブシェルとしては悪くないけど、まとまったスクリプト書こうとすると大嫌いになる
Add-TypeでインラインでC#書いたほうがマシだわ
特にC#erはソースの見た目がなんとなく似てるだけに地獄を見るんだよ
2018/05/25(金) 12:59:33.01ID:RzxaIECOd
>>842
名前付パイプでOkだよな
2018/05/26(土) 00:52:48.69ID:grpyMBkE0
アプリ側で完結してないと、スクリプト操作とか変なバッチ叩かせてアプリ起動とか怪し過ぎるだろ。
業務アプリじゃねーんだw
2018/05/28(月) 00:24:44.02ID:2eqT73MR0
if (-100 <= clickPointXTemp && clickPointXTemp <= 100)
{
clickPointX[clickNumber] = clickPointXTemp;
MessageBox.Show(clickPointX[clickNumber].ToString() + "%");
MessageBox.Show(clickPointX[0].ToString() + "%");
MessageBox.Show(clickPointX[1].ToString() + "%");
MessageBox.Show(clickPointX[2].ToString() + "%");
clickNumber++;
}
2018/05/28(月) 00:29:53.74ID:2eqT73MR0
クリックしてカーソルが-100<=clickPointXTemp<=100の位置にあるときに配列にその値を代入させているのですが、
クリックするとその場で配列に代入できても次のクリックで0になってしまいます。

1回目クリック
clickPointXTemp=10
[0]=10
[1]=0
[2]=0

2回目クリック
clickPointXTemp=30
[0]=0
[1]=30
[2]=0

2回目クリック
clickPointXTemp=100
[0]=0
[1]=0
[2]=100

なんでだろ・・・。
2018/05/28(月) 00:30:12.40ID:2eqT73MR0
5時間ぐらい悩み中。。。
851デフォルトの名無しさん (アウアウカー Sa95-9DOT)
垢版 |
2018/05/28(月) 00:33:24.89ID:SRIgyUF4a
データベースを使わないで、インデックスが共通する複数のデータ配列を作りたいときってどういう風な実装が最適なんでしょうか
var A = new int[x]
var B = new int[x]
var C = new int[x]



var E = new int[x]
みたいな感じです
2018/05/28(月) 00:33:25.48ID:MfVpzBU40
スコープが原因だろうから全体のソース出さないとエスパーだらけの回答になるよ
2018/05/28(月) 01:08:05.78ID:dlEIDhlNa
>>851
struct Hoge
{
  int A;
  int B;
  int C;
  int D;
  int E;
}
....
var hogeArray = new Hoge[100];
854デフォルトの名無しさん (アウアウカー Sa95-9DOT)
垢版 |
2018/05/28(月) 07:52:50.79ID:Mf7CKKuIa
>>853
ありがとうございます
助かりました!
855デフォルトの名無しさん (オッペケ Sr05-cS+N)
垢版 |
2018/05/28(月) 12:27:04.88ID:YifI+gJdr
誰か>>852のエスパーたのむ
2018/05/28(月) 13:02:33.05ID:PWPrnTKxM
>>848-849へのレスだろ
2018/05/28(月) 13:47:49.05ID:i/nkRhbIM
>>855
https://youtu.be/mKrYRsENA-I
2018/05/28(月) 15:55:38.64ID:W2eXy6T5M
エスパー能力ないと5chはこなせない
2018/05/28(月) 20:32:45.18ID:0z7zyrSed
複数のクラスで共通の変数定数を外出しして、
その変数クラスを継承するのって良し悪しで言うとどうでしょうか

is aなのかちと微妙な感じです
内臓名クラスを継承して動物クラスを作ってるような

has aなのでオブジェクトとして渡すべきですか?
2018/05/28(月) 21:46:19.79ID:rs0fZbm/M
>>859
共通の変数などという低い抽象度でクラス設計を考えるのがそもそも間違ってる
実装からクラスを考えると必ず破綻するから、君の今の考え方のまま進む限りはいかなる選択肢も不正解
とはいえ最初から抽象度を上げて設計しろといっても初心者には無理な話だから、気にせず自分の思うように作ればいい
一通りモノ作れるようになったらオブジェクト指向モデリングの書籍を読むことをお勧めする
2018/05/28(月) 21:51:33.12ID:I0m/gtVC0
オブジェクト指向プログラミングしない方がいいもの作れるよ
関数で組む方法を極めた方がいい
2018/05/28(月) 21:56:33.33ID:dVAXJXVu0
>>860
>オブジェクト指向モデリングの書籍
例えばどんな本がありますか?特におすすめ、とかじゃなくてもいいです
どういう本が該当するのかよくわからないのです
2018/05/28(月) 22:18:11.40ID:rs0fZbm/M
>>862
王道はエリック・エヴァンスとかダグ・ローゼンバーグとか
今読んでも実際のコーディングに対しては何の参考にもならないと思うよ
2018/05/28(月) 22:21:17.59ID:dVAXJXVu0
>>863
キーワード提供、感謝しています
2018/05/29(火) 12:48:47.90ID:dUPfr/v4M
どのプログラム言語を選ぶかでオブジェクト指向モデルの実現方法がかなり違う
2018/05/29(火) 12:57:47.07ID:Xt8fAcdVa
>>863の本くらいの抽象度になると実装方法にはほとんど依存しないよ
それどころかオブジェクト指向モデルすらも方法論全体の中では下層の方に位置付けられる
2018/05/29(火) 19:04:25.63ID:QoecqRn60
とりあえず入門レベルが終わったんだけど次はeffective c#4.0っての読めばいいですか?
2018/05/29(火) 19:05:12.69ID:upesQ40yM
6.0 7.0のでてるからそっちでいいよ
2018/05/29(火) 19:28:28.39ID:QoecqRn60
more effective C# 6.0 7.0ですか?
moreとついてるので前の本を読む必要があるかと思っていたんですが大丈夫そうならそちらを購入しようかと思います
870デフォルトの名無しさん (ワッチョイ fb8a-HY9j)
垢版 |
2018/05/29(火) 21:07:37.85ID:FUNbZ4ty0
フォーム間でのデータのやりとりはどうするのが一般的なのでしょうか?
例えば、Form2の表示と同時に、Form1に入力済みのデータをForm2に表示させる場合、今は以下のようにしています。

class Form1
{
 public object Data{get; set;}

 var form2 = new Form2();
 form2.Parent = this;
}

class Form2
{
 public Form Parent{get; set;}

 Load()
 {
  this.Data = Parent.Data;
 }
}
2018/05/29(火) 21:31:23.00ID:T0OOxyUA0
>>870
一般的とかいいやりかたって聞かれると逆に難しいんで自分のやりやすい形で
https://dobon.net/vb/dotnet/form/accessanotherformdata.html
コンストラクタやメソッドの引数でも渡せるし
2018/05/29(火) 22:26:37.07ID:LfCUNSAB0
>>869
Apressお勧め
873デフォルトの名無しさん (ワッチョイ 13d2-XWWR)
垢版 |
2018/05/29(火) 22:58:12.01ID:G7p9dius0
>>869
言語仕様とか環境の変化で不要になった部分をバージョンアップしてるから
今からかうなら最新だけでいい
初版と4.0と最新で内容は被っている
2018/05/29(火) 23:11:52.08ID:5CF0lkGw0
ビジュアルスタジオでC#使ってると、どんどんコードスタイルが簡略化されていくんだよな。
2018/05/30(水) 13:41:56.71ID:Bf3z8rw50
SocketクラスのBeginConnectとかBeginReceiveとかに渡すコールバック関数を
staticで書いてあるのとそうでないのと両方見かけるんですけど
どっちが良いんでしょう?
2018/05/30(水) 14:44:18.44ID:LltEUg5c0
まあ、C#ならコールバックは登録解除を明示的に行うからスタティックである必要は無いけどな。
でもこれがイベントハンドラからのデリゲートなら話は別だ。
2018/05/30(水) 14:47:38.89ID:WVM+AecNM
>>875
そのSocketオブジェクトに合わせるのが正解
Socketを生で使うサンプルってスキルの低い業務ドカタが書いてたり書かれた時代が古かったりすることが多いので、
C#をよく理解してなくてCやVBの感覚でstaticにしないといけないと思ってるようなのが多い
2018/05/30(水) 15:03:40.50ID:Bf3z8rw50
>>876
イベントハンドラからのデリゲートとはどういう状況でしょう?

>>877
なるほどありがとうございます!
2018/05/31(木) 15:19:11.21ID:AbqPsR3A0
TextBoxか、MaskedTextBoxに単位をつけたい。
小数点有りや無し、-の数値を入力できたりするものってできますか?
-2℃
14℃
25.5℃
2.5℃
2018/05/31(木) 18:15:14.92ID:Zw7Yk0+cM
テキストボックスの横にラベルで単位でも書いておこうぜ

□㌕
2018/05/31(木) 18:16:46.93ID:Zw7Yk0+cM
小数点は

□.□㌕

2018/05/31(木) 19:19:02.19ID:0ajP7AA9a
>>879
TextBoxクラスを継承
2018/05/31(木) 20:26:49.48ID:9/5XjJFR0
>>879
入力支援・単位の入力補完・数値⇔文字列の変換
何でもできるけどホントにしたいことがそのレスでは分からない
2018/05/31(木) 21:28:20.09ID:ygkZdVXVM
>>873
え、more付いてないのと付いてるのって同じ本なん?
独習C#と言い、命名がわけわからんな…
2018/06/01(金) 09:05:55.18ID:azdekr4p0
説明不足ごめんなさい。
出力ですが、最終的にはTextBoxの枠ごと印刷したいと考えております。
883の言う単位の入力補完だと思います。

MaskedTextBoxのマスクに####℃と記入し、
「-24.4」等のデータをデータベースから取り出して、入れたところMaskedTextBox.Textが244℃となってしまいました。
このテキストボックスを小数点有りの場合、なしの場合、負の符号が有りの場合なしの場合、「----」の場合、
1桁から5桁+「℃」としてTextBox.Textに出力したいと考えております。

できますか?
2018/06/01(金) 09:13:09.12ID:gkm5sPLjM
TextBoxクラスを継承して自前で実装すればできる
2018/06/01(金) 09:47:05.22ID:czZmZo8za
TextBoxクラスを継承してTextプロパティを上書き
書式とか単位を属性に持たせれば汎用的に使える。
コピペされたときの場合も考慮すること
2018/06/01(金) 09:58:02.26ID:azdekr4p0
ありがとうございます。
なんとなく、それっぽいものが作れそうです。
2018/06/01(金) 10:22:08.86ID:XLd38QjBM
ユーザーコントロールでボーダーなしテキストボックスとラベル並べた方が楽な気がする
2018/06/01(金) 18:06:59.69ID:TnI3eVXu0
テキストボックスの描画や挙動を弄るの面倒くさいから汎用性を求めるんなら InputMan 買った方がいいよ
2018/06/01(金) 18:10:44.74ID:UBye49NJM
ライセンスとかテクリスとか面倒だから買わない
2018/06/01(金) 18:21:51.24ID:S7DUtxKdM
NuGetで参照できるオープンソースのWinFormsリッチコンポーネントって何が有名なの?
2018/06/01(金) 20:17:26.63ID:dZV2tAFxM
nugetは俺の鬼門
2018/06/01(金) 21:28:02.83ID:naL+ZRGN0
僕の半蔵門
895デフォルトの名無しさん (ワッチョイ fae3-mRcc)
垢版 |
2018/06/01(金) 23:18:54.61ID:fWGAwsr30
前門の虎 肛門の狼
896デフォルトの名無しさん (ワッチョイ d103-Y2aB)
垢版 |
2018/06/02(土) 00:25:46.86ID:A4SZL/oE0
寒っ
2018/06/02(土) 10:06:40.82ID:QJbZaU5f0
c#で穴ぼこメモリにしないように組むのって不可能?
2018/06/02(土) 10:27:51.87ID:nL4AUV2I0
可能だが、規模によっては現実的でない
パフォーマンスを気にするなら、別にボトルネックが存在していないかを見直す方が先
2018/06/02(土) 10:30:12.89ID:rvy10L9Oa
OSの仕事
どうしても嫌でデカいbyte配列確保して中に文字や数字全部入れても無駄
2018/06/02(土) 10:40:30.36ID:QJbZaU5f0
>>899
それでも駄目なの?
もうサービス部分はC言語で組んだほうが良さげ?
2018/06/02(土) 10:42:11.98ID:1ZPJADB4M
GCが勝手に詰めてくれるから気にしなくていい
ただし巨大なオブジェクトは専用の領域があって移動されないので断片化されやすいから注意
2018/06/02(土) 11:05:50.81ID:msgJi+IZM
Spanとstackallocで我慢しなさい
2018/06/02(土) 11:10:29.54ID:rvy10L9Oa
>>900
Cだって確保管理はOSの仕事だろ
何のためにメモリの管理をOSに任せたくないんだ?
2018/06/02(土) 11:12:27.29ID:msBkLZBc0
DMAが僕を呼んでいるから
2018/06/02(土) 11:18:59.70ID:J1HVezEsH
>>903
Cだってオブジェクト毎の領域をそれぞれ全てOSが管理しているわけじゃない
mallocが効率化のためにだいぶ仕事してる
2018/06/02(土) 11:42:21.94ID:gRqFSsBQa
OSでメモリはブロックなどで管理されていて要求があったら
要求サイズに合わせてそのブロックの中のさらに細かいブロックなどを払いだしてる
こっちがどうしようとOSでブロックを作ってその中でやりくりしてる

例えそのブロックの中で断片化していて何か不都合あるのか?
2018/06/02(土) 14:08:09.74ID:65ghWvPg0
使う予定の最大量の倍の空きメモリーあれば大体は気にならない。
いまどきのパソコンはアプリが使いたいメモリーサイズの数百倍は有るから気にするな。
2018/06/02(土) 14:25:15.68ID:QJbZaU5f0
リークしてると1ヶ月ぐらいで死ぬじゃん
現状自分でメモリ管理しないとどこで何が確保されてるのかわからないわけで
そういうの確実に管理したいときはc言語のがいいのかなぁ?と
2018/06/02(土) 14:34:09.78ID:gayBoTaI0
極めて厳密に管理したいならC/C++でアロケータを自前で書くというのはあり得る
しかしリークという点ではC#よりC/C++の方が遥かにやっちまい易いので, メモリ安全を確保する目的でC/C++で書くのは本末転倒のように思う
2018/06/02(土) 14:39:58.23ID:I3vJQFJE0
リーク前提とかバカでしょ
911デフォルトの名無しさん (ワッチョイ 7a8a-sZ2J)
垢版 |
2018/06/02(土) 15:01:44.21ID:fV6b9MUi0
List#Containsの重複判定基準をEquals以外にすることはできないでしょうか?
ListにしたいクラスのEqualsが、別の目的用にオーバーライドされている為、Equalsを使うことができません。
2018/06/02(土) 15:43:20.19ID:QJbZaU5f0
>>909
c#は現在実行中のアプリのインスタンスを確認する方法はあるの?
2018/06/02(土) 15:47:01.32ID:XUNevU9ma
>>911
>Equalsが、別の目的用にオーバーライドされている
常識的にはそっちの方が解消すべき「問題」のように思うけど...
2018/06/02(土) 15:54:54.04ID:XUNevU9ma
まあ、Exists使うだけだよね
2018/06/02(土) 16:03:39.22ID:nL4AUV2I0
>>908
Webサービスか何かを想定してる?
だったらコーディングで対応するんでなく、ロードバランサで複数のアプリケーションサーバに振り分けて
サービスが止まらない様にしつつ、一部のサーバをオンメンテでリブートすべし
2018/06/02(土) 16:05:51.99ID:wt7oIb0Vp
C#スレでメモリーリークを心配するとか、どんだけ無能なんだよ。
2018/06/02(土) 16:12:14.89ID:5ltA6BNw0
普通はリークで死ぬ前にGen2GC連発して性能ガタ落ちになるんじゃ
どんだけ握ってんだよと
2018/06/02(土) 18:04:04.45ID:QJbZaU5f0
実際にメモリリークが起こらないように気をつける術は昔ながらの方法しかない?
プロジェクトでnewするときはインスタンスマネージャー的なのを通して
可能な限りインスタンスを監視するとかそんなの?
2018/06/02(土) 18:17:48.36ID:msgJi+IZM
マトモなコードを書くだけ
2018/06/02(土) 19:01:19.50ID:pCnJrSzQd
メモリリークさせようと思わないとなかなかできんよ
2018/06/02(土) 19:11:03.61ID:1ZPJADB4M
>>918
一時的なオブジェクトはもう必要ないなら握りっぱなしにしないで即座に使い捨てること
中途半端に握りっぱなしにしてるとGCの世代か昇格してメモリ使用量の増加やGCのパフォーマンス低下の原因になる
一方、単寿命オブジェクトのGCは爆速なので、newしたら積極的にすぐ放置すべき
2018/06/02(土) 19:16:06.36ID:1ZPJADB4M
>>911
Any
2018/06/02(土) 19:21:44.73ID:I3vJQFJE0
C#でメモリリークさせるコード書く奴がC/C++で無くせるとは到底思えないわ
2018/06/02(土) 19:25:12.19ID:QJbZaU5f0
>>921
うーん
爆速ではないなぁ
3分に1回動かしてる処理があるんだけど
強制GCせずにずっと動かしてるとき
メモリ使用量がかなりあがった状態でGCが動くと
3分に一度の処理のタイミングがズレちゃうんだよね
そこで強制GCも十分に一度ぐらいの頻度で動かしてる状態
2018/06/02(土) 19:29:07.89ID:pCnJrSzQd
だめだこいつ
2018/06/02(土) 19:31:42.56ID:QJbZaU5f0
>>925
なんかいい方法あるんですか?
927デフォルトの名無しさん (アウアウカー Sa5d-SvXf)
垢版 |
2018/06/02(土) 19:37:34.74ID:KX6MAuAea
ちゃんと設計してればC#でメモリーリークなんて気にすることなんてあるか?
そんなガバガバ設計してるやつがCだったら大丈夫なんだけど、って馬鹿な話誰が信じるよ
2018/06/02(土) 19:45:14.53ID:msgJi+IZM
>>926
簡単だよ
マトモなコードを書くだけ
2018/06/02(土) 20:14:13.22ID:fh+k246w0
以降放置でお願いいたします
2018/06/02(土) 20:28:22.93ID:iRadbqpq0
>メモリーリークなんて気にすること
ページフォルトを気にしないヴァカっていたな。
リークしていないが累積しすぎたページフォルトがOSを殺す
2018/06/02(土) 20:30:41.21ID:+/nRHGaPa
C#でリークやらかす奴がC/C++でやらかさない道理がない
2018/06/02(土) 20:31:22.14ID:eSvYHUXNM
こいつもトンチキなので放置でいいです
2018/06/02(土) 20:50:00.44ID:wt7oIb0Vp
まあ、でもC#はメモリー管理を隠蔽しちゃったから、実はCやC++よりメモリー管理しにくいんだよな。
2018/06/02(土) 20:58:18.57ID:msgJi+IZM
C++出身のC#初心者にありがちだね
2018/06/02(土) 21:10:12.98ID:u/NNd5OV0
未確認飛行のSpan説明みてサンプルコード動かそうとしたんだけど
using System.Memory;すると
CS0305ジェネリック種類 'Memory<T>' を使用するには、1 型引数が必要です。
って叱られるのなんで?
VSもCoreも最新
2018/06/02(土) 21:20:59.23ID:msgJi+IZM
SpanはSystem.Spanだ
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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