18/10/04 18:56:38.41 JnxMNCXd0.net
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part93
スレリンク(tech板)
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
スレリンク(tech板)
■コードを貼る場合は↓を使いましょう。
URLリンク(ideone.com)
URLリンク(dotnetfiddle.net)
■情報源
URLリンク(msdn.microsoft.com)
URLリンク(docs.microsoft.com)
URLリンク(msdn.microsoft.com)
2:/library/gg145045.aspx http://referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
3:デフォルトの名無しさん
18/10/04 23:05:26.82 qWTjGweS0.net
ネットワークやバイナリファイル編集でバイト配列操作する機会多いんだけど、何を使うのが一般的なの?
StreamにしてBinaryReaderやBinaryWriterで読み書きしてたら、バイト配列は添字使って編集するのが速いし確実とかCみたいなプログラム書くおっさんPGに言われちゃった・・・
4:デフォルトの名無しさん
18/10/04 23:23:18.76 qbe854ro0.net
>>1
乙
>>2
用途によるし「確実」はちょっと意味がわからないけど構造体のように複数の長さのデータを格納・読込するのならそれでいいんじゃね?
1byteごととか任意のバイト長さとかファイル単位なら
URLリンク(dobon.net)
でその人の言うように配列のインデックス使ってやればいいと思うし
5:デフォルトの名無しさん
18/10/04 23:31:36.71 58olDMZFa.net
>>2
同じく「確実」の意図が分からないからそれは置いておいて
byte配列のほうが速いのは確か
ただしネットワーク通信やファイル入出力の所要時間と比べれば微々たる違いだろうから
先頭から順に読み書きできればいいならBinaryReader/Writerで、
ランダムアクセスしたいならbyte配列で操作すればいいと思う
StreamでもPositionやSeek()で位置を動かせるけどあまり見ない気がする
6:デフォルトの名無しさん
18/10/04 23:46:55.97 aAHFTiw7a.net
>>2
C#の最新事情でいうと、Span<T>という安全なポインタのようなものが入ったり、
それに伴ってBinaryPrimitivesみたいな低レベルなユーティリティが充実したりして、
残念ながら時代はCおじさんの方にある
7:デフォルトの名無しさん
18/10/05 00:13:17.22 H1SMXMnNa.net
>>2
むしろStreamにする意味って何なんだろうとw
他の形式のデータも透過的に扱いたいのでなければ意味がない気が
8:デフォルトの名無しさん
18/10/05 09:06:50.59 LGlJpP21M.net
C#という事ではないのかもしれませんが相談させてください。
複数のPCで複数のアプリが稼働していて、これらの稼働状態をモニタリングしたいと考えています。
正常に動作しているか、今どういう状態か程度で、止まっていたりしたら知りたいです。
各アプリから状態をDBに都度登録してもらい、それを監視すればいいかとも思うのですが、
この方法だとアプリが正常に動作していない場合とかは、DBの更新が止まっているのを判断するしかありません。
このような案件の場合、よい方法、定番の方法ってあるでしょうか?
9:デフォルトの名無しさん
18/10/05 09:09:25.87 9pDoP7+lM.net
>>7
Xabbix
10:デフォルトの名無しさん
18/10/05 11:24:13.45 7tAwzpXyM.net
>>7
決まったフォルダ、アプリ別ファイルに状態を書き込むだけでいいような
11:デフォルトの名無しさん
18/10/05 12:25:06.26 3Syb0Y7Yd.net
>>7
正常に動作していない、を判定するのは無理だよ。
正常に動作していなかったら、「正常に動作できてません」って発言すら信用できないっしょ。
素直にアプリ側にたとえ報告することがなくても、忙しくても何が何でも一定時間おきに「動作中」を送信させて、DBには時間とともにそれを記録して、
確認側は最後の時間から一定時間過ぎても更新が無いことを確認するしかないと思うよ。
12:デフォルトの名無しさん
18/10/05 14:38:26.76 LGlJpP21M.net
レスありがとうございます。
やはりウォッチドッグで監視するのが定番なんですね。
13:デフォルトの名無しさん
18/10/05 18:21:42.66 nFaSxASea.net
定番とはいえないかなあ…
14:デフォルトの名無しさん
18/10/05 18:47:24.33 Ch2NTSqba.net
もともとDBに何か記録するのがそのアプリのお仕事ならともかく、
そうでないなら何でわざわざDBにって印象は受けるなあ
まあ、何か事情はあるんでしょうが
15:デフォルトの名無しさん
18/10/05 19:55:03.19 LGlJpP21M.net
>>13
DBは使ってますが、特に拘りがあるわけではないです。
何が一般的ですか?
16:デフォルトの名無しさん
18/10/05 20:17:35.38 N/cJ9waZd.net
一般的とか定番とかにこだわりすぎ
君のシステムにあったものを選択すればいい
すでにシステムとしてDBを利用してるなら、その横で正常動作を監視するのには何の違和感もない
17:デフォルトの名無しさん
18/10/05 20:29:12.88 A3z1jwkNa.net
>>14
いや、監視役のPCの監視用のアプリが直接各PCのアプリに確認するとか、
逆に各PCのアプリが定期的に報告するとか、そっちの方が回りくどくないんじゃないかと思っただけ。
だから直接通信できないとか何か事情があるのかなと
18:デフォルトの名無しさん
18/10/05 23:36:46.57 hL15zPdp0.net
>>16
なるほど、確かにそうですね。
ソケット通信みたいなプロセス間通信でって事でしょうか?
時間の関係で監視アプリはまだ未定で、取り敢えずネタを仕込む仕組みだけは考えておこうと言う思いでDBが浮かんだんでしょうか。
19:デフォルトの名無しさん
18/10/06 01:17:30.44 GDCWtS3pa.net
それこそZabbixなどの監視スイートでいいだろ
サーバーとクライアントに出来合いのフリーソフト入れるだけで、このスレの連中が10年かけても作れない立派な監視システムの出来上がり
20:デフォルトの名無しさん
18/10/06 08:31:42.88 lJ9HnWTid.net
デリゲートってのがよく分からんのですが、
C言語の型だけ並べた関数ポインタみたいなものですかね?
21:デフォルトの名無しさん
18/10/06 08:40:04.82 hgnllvmvM.net
>>19
関数ポインタの配列ぐらいに理解しておいて問題ないかと
細かい違いはおいおいと
22:デフォルトの名無しさん
18/10/06 22:12:33.62 5sHefPQo0.net
>>19
そのとーり
23:デフォルトの名無しさん
18/10/06 22:12:35.20 b44kc6dy0.net
>>19
ヤることが定義できるって素晴らしいよね?
愛の形って関数が、セックルだったり、妹の靴下を嗅ぐだったり、ブラを嗅ぐなり
24:デフォルトの名無しさん
18/10/07 04:08:03.95 VK7xOYMb0.net
他のPCの共有フォルダの内容を表示したいのですが、どうやってIDとパスワードを使って接続すればよいのでしょうか?
25:デフォルトの名無しさん
18/10/07 07:50:20.22 PmJSQ8fh0.net
WNET系のwindowsAPI叩くか
net useか
26:デフォルトの名無しさん
18/10/07 08:51:08.25 kve7u25tM.net
エクスプローラと競合するからお気をつけませ
27:デフォルトの名無しさん
18/10/07 12:50:18.77 zKmec8P2M.net
Javaより優位な点て何ですか?
28:デフォルトの名無しさん
18/10/07 12:55:40.93 TpDmbW
29:u/a.net
30:デフォルトの名無しさん
18/10/07 17:24:45.63 I+vd7v7Qa.net
>>26
マイクロソフト商品と親和性が高い場合がある
31:デフォルトの名無しさん
18/10/07 19:05:14.16 OYpBo9t+0.net
親会社のオープンソースに対する信用度
32:デフォルトの名無しさん
18/10/07 21:25:32.12 fkKga7ZHM.net
>>26
国内だとJavaに比べるとエンジニアの平均スキルが高く、案件の質が良い
33:デフォルトの名無しさん
18/10/08 02:16:46.72 fwPk56zX0.net
>>26
過去のしがらみがないので
(ちょっとはあるけど)
良い進化ができる
34:デフォルトの名無しさん
18/10/08 02:19:34.16 dSuydhfr0.net
悪いことは言わん。
C#はやめとけ。C++の方がまし。
35:デフォルトの名無しさん
18/10/08 03:57:28.95 QkcHjm7c0.net
最近のC++の魔境ぶりはC#の比じゃない
36:デフォルトの名無しさん
18/10/08 08:06:18.04 YAwndXAXM.net
悪いことは言わん。
C#はやめとけ。Javaの方がまし。
37:デフォルトの名無しさん
18/10/08 08:11:27.49 876SMEcI0.net
Javaは供給過剰で単価がVB6並み
38:デフォルトの名無しさん
18/10/08 08:47:31.14 BjxsuyVh0.net
Javaはレガシィと言われる時代か
39:デフォルトの名無しさん
18/10/08 10:27:37.97 jzUSomae0.net
C++やり過ぎて複雑すぎ
C# バランスがいい。速度必要ならunsafeも簡単にできるし。
java やらなさすぎ。速度必要ならJNIに逃げるしかない。
40:デフォルトの名無しさん
18/10/08 10:31:33.47 I6BtkXxw0.net
パラダイムが同じならどの言語でも大差ないだろ
どうせ複雑な機能は使わない
複雑にならないように設計して実装するのが腕の見せ所でござろうよ
41:デフォルトの名無しさん
18/10/08 10:35:09.02 jzUSomae0.net
まぁ、ラピッドリリースになった最新のJavaならラムダに始まってvarによる型推論もできるようになったり結構ストレスなく使える。
後はProject panamaやヴァルハラ?などのvaluetypeやら。コルーチンやasnc/awaitやらが来れば後10年は戦える。
プロパティも欲しいとこだが今さらこれは望み薄だろう。
42:デフォルトの名無しさん
18/10/08 11:41:35.87 SD3o+hypM.net
VB6のがシンプルで素敵
43:デフォルトの名無しさん
18/10/08 11:59:18.45 3oh/BVONa.net
C#は7.xで参照が強化されて超複雑になったよ
低レベルなタスクに関わる一部の人だけが知っていればいいと思われがちだが、実は決してそうではない
最新のBCLには従来は配列とインデックスをセットで渡してたメソッドに軒並みSpan<T>のオーバーロードが追加されていて、早くも第一級の扱い
今後は新規APIについては基本的にSpan<T>のみをサポートするようになるだろう
44:デフォルトの名無しさん
18/10/08 12:21:04.95 Evsfy93P0.net
ライブラリを使う側なら精々AsSpanだけ覚えりゃええんちゃうの
45:デフォルトの名無しさん
18/10/08 14:25:57.34 7WquQluz0.net
正直なところ聞きたいのだけどEFって業務システムで使える?
小規模のWebサービスのプロトタイピングにはイイかなーと思うけど大規模にも耐えうるのかな
46:デフォルトの名無しさん
18/10/08 14:44:04.44 QmlHMP6PM.net
EFはモデルの一貫性を強力に維持しながら継続的にモデルに手を入れていくような開発スタイルに適してる
巨大な単一のデータモデルを維持するようにはできてない
大規模開発でEFなら適切にドメ�
47:Cンを分けてやらないとスケールしないよ
48:デフォルトの名無しさん
18/10/08 17:44:43.35 ejHrcIFn0.net
2つのPC間でデータ送受信を行う際、現状はデータの最後に"<EOF>"を付加してファイルの末尾であることを通知しています。
これをなくして、送信側がデータの最初にデータサイズを明記し、受信側はそのサイズだけデータを受信したら受信完了という処理に変更しようと思うのですが、
みなさんの経験則的にはこれは悪手でしょうか?
49:デフォルトの名無しさん
18/10/08 18:22:30.94 sIA/07pT0.net
>>45
むしろバイナリデータならそれが普通
50:デフォルトの名無しさん
18/10/08 18:25:46.47 Py80K8TM0.net
>>45
パスカルの文字列がそんなん。
電文ならASN.1がまさにそんな感じで「データ形式、データ長、データ」の連続。
51:デフォルトの名無しさん
18/10/08 18:28:47.30 b2Tw+UtCr.net
>>45
そうしたほうが
受信側は必要最小限のバッファ確保で済むし
データ中に"<EOF>"を含められるし
いい事ずくめに見える
52:デフォルトの名無しさん
18/10/08 18:41:57.27 ikezuOk7a.net
>>45
申し訳ないけど全体的に何を言ってるのかよく分からないけど、
現状データ長を含まないってことは必然的にデリミタで区切る文字列ベースの
メッセージってことになると思うけど、そういうこと?
それならむしろ何のためにデータ長を含めたいのか分からない
送る方のコードも面倒が増えるだけだし、万が一データ長が間違ったメッセージが
送られてきたら後まで引きずっちゃうと思うけど
53:デフォルトの名無しさん
18/10/08 18:56:25.00 Py80K8TM0.net
データ長が狂う環境なら、何かがEOFになったり、EOFが何かになったりする可能性を潰すほうが大変じゃないか?
化けにくくてチェックもしやすい、データ長を渡すほうが良いと思うよ。
54:デフォルトの名無しさん
18/10/08 20:18:47.02 kgyl4Ui40.net
>>45
そもそもなぜ変えたいのか?
何か問題あった?
55:デフォルトの名無しさん
18/10/08 20:29:56.77 vzuBe1j/0.net
一般的もしくは定番の方法が知りたいだけでないかなあ
金曜日にもそんな質問者がいましたけど
56:デフォルトの名無しさん
18/10/08 20:46:47.49 nA3KYx400.net
受信インターバルタイムアウトってのもあるな。
例えば9600bpsの場合、ざっくり1文字送るのに、
パリティとエラー含めて11ビット位だったかな。
めんどくせーから16ビットで1文字送ったとして、
1000[ms]÷9600[bps]×16[bit]で、1.66666…[ms]。
2文字無通信時間で打ち切るとして、約3.2[ms]の間、文字が来なかったら、そこで通信を打ち切る。
C#でそこまで精度でるか知らんけどな
57:デフォルトの名無しさん
18/10/08 20:54:14.29 876SMEcI0.net
何故非同期モードw
58:デフォルトの名無しさん
18/10/08 21:49:06.47 kgyl4Ui40.net
>>52
ケースバイケースだよね
どういう方式っつかタイムアウトで全ての辻褄を途中でリセットする仕組みがあって実際に復帰できるか?
が重要
大手の試験もそういうのが多い
asioとかタイムアウト設定できなくてクソ過ぎて死んだけど
59:デフォルトの名無しさん
18/10/08 21:51:03.18 sIA/07pT0.net
>>53
> パリティとエラー含めて11ビット位だったかな。
エラーってなんだよ w
8ビットデータを調歩同期で送るなら
スタート(1) + データ(8) + パリティ(1) + ストップ(1~2)
だから11~12ビット/フレームだな
てか、今どきシリアル通信じゃなくて独自プロコトル + TCP/IPとかじゃないかな
60:デフォルトの名無しさん
18/10/08 22:17:45.91 nA3KYx400.net
>>56
だよなw
61:デフォルトの名無しさん
18/10/08 22:23:12.19 JzRq+M5U0.net
例えば下限が-10、上限が10として、
上限がくるまではずっとインクリメントして、
上限到達後、下限がくるまではずっとデクリメントするような、
数値間で折り返しを続けるプログラムを考えてみました。
URLリンク(ideone.com)
↑これだと上限に達したか、下限に達したかのフラグや
それを判定する箇所がスマートではない気がするのですが、
よりよい方法をお教えいただけないでしょうか
62:デフォルトの名無しさん
18/10/08 22:26:53.17 kgyl4Ui40.net
>>58
スマートの定義をして
どんな方法聞いたって
ウンコって言うんでしょ?
63:デフォルトの名無しさん
18/10/08 22:39:07.68 hbOXQr6La.net
>>58
var asc = Enumerable.Range(lower, upper - lower);
var dec = asc.Reverse().Skip(1);
var seq = asc.Concat(dec).Repeat(100);
foreach (var x in seq) Console.WriteLine(x);
64:デフォルトの名無しさん
18/10/08 22:40:16.70 hbOXQr6La.net
>>60
訂正
一行目は (lower, upper - lower + 1); の間違い
65:デフォルトの名無しさん
18/10/09 00:09:25.69 7r5/ETxRa.net
>>58
ベタに書くのが一番でしょ
難しく考えるのも変な技巧を凝らすのもよくない
IEnumerable<int> AlternatingSequence()
{
const int min = -10;
const int max = 10;
for (;;)
{
for (int i = min; i < max; i++) yield return i;
for (int i = max; i > min; i--) yield return i;
}
}
66:デフォルトの名無しさん
18/10/09 00:28:17.28 69FY4WT20.net
>>60-62
ありがとうございました
とくに>>62さんの案がしっくりきました
yieldは見たことはありましたが実装したことがなかったので勉強になりました
67:デフォルトの名無しさん
18/10/09 07:40:30.99 GFeQRMMOa.net
int f(int x) {
int xx = x % 20;
if (xx < 10) return xx - 10;
else return 20 - xx;
}
Enumerable.Range(0, n).Select(f)
68:デフォルトの名無しさん
18/10/09 15:11:25.69 cTdbH72R0.net
SQ
69:デフォルトの名無しさん
18/10/09 15:16:28.69 cTdbH72R0.net
初心者なりにSQLiteに接続したくて以下のような最低限のコード書いたのですが、
この時点で明らかにおかしい場所はありますか?
URLリンク(ideone.com)
70:デフォルトの名無しさん
18/10/09 15:26:17.65 X0YGRA9k0.net
チンコの皮が被ってるところとか
71:デフォルトの名無しさん
18/10/09 16:16:14.26 U5wLUz1A0.net
>>66
using が2つ足らないな
72:デフォルトの名無しさん
18/10/09 18:39:44.42 CLgat4sk0.net
情報処理試験の勉強をしていてセマフォというものを知ったのですが、C#の実務で使うシチュエーションはあるでしょうか?
いつ使うのかなと疑問に思いまして
73:デフォルトの名無しさん
18/10/09 18:46:58.59 iDNploc3M.net
使わないよ
ドカタ現場で使っても誰も理解できないだろうし、業務アプリのアプリケーションコードのレベルでそんな細かい排他制御が必要になることはまず無い
普通にロックすればよい
74:デフォルトの名無しさん
18/10/09 19:29:49.97 wlIrmiN40.net
他にスマートな並列処理制御が沢山有るからセマフォ、ミューテックス、lockは最後の手段という感じ
75:デフォルトの名無しさん
18/10/09 19:37:27.51 2+Q7pYPf0.net
WindowsFormでテキストボックスのスクロールバーを切り離したいのですが
テキストボックスとは別に配置したVScrollBarをコントロールの
スクロールバーと連動させるにはどうすればいいですか?
スクロール位置については調べて出てきた物を弄ればいけそうなのですが、
長さをどこで読めば良いのかわからず……
用途としてはテキストの折り返し位置を数値指定したくて無理矢理実装した状態です。
テキストボックスのサイズ自体を変更し、ワードラップを利用して無理矢理テキストの折り返しを作ってるので
テキストボックス自体のスクロールバーは隠してしまって
目に見える場所に操作用のスクロールバーを置きたい具合です。
Textboxをオーバーライドしてテキストの表示領域そのものを弄る事ができるなら
そちらのほうが理想なのですが、自分ではどこをどう弄ればいいのかわからず……
よろしくお願いします。
76:デフォルトの名無しさん
18/10/09 19:44:52.49 X0YGRA9k0.net
位置のパーセント情報があるはずなんだが
77:デフォルトの名無しさん
18/10/09 19:51:43.19 m4rO7Lb30.net
>>72
テキストボックスのスクロール位置を取得・復元する方法
URLリンク(pineplanter.moo.jp)
78:デフォルトの名無しさん
18/10/09 19:53:44.82 2+Q7pYPf0.net
>>72
すみませんPaddingとか右余白で散々ググって出てこなかったので
無いものと思い込んでたんですが>>73を見てプロパティ漁り直したら
普通にRightMarginを発見して解決して顔真っ赤にしてるので無かった事に……
俺の半月はなんだったんだ…………
スレ汚し失礼しました!!
79:デフォルトの名無しさん
18/10/09 19:58:09.84 2+Q7pYPf0.net
>>74
スクロール位置はそのページとかで沢山サンプルがあるのですが
スクロールバーの長さを連動させる方法が分からなかった具合です……!
結果そんなことをする必要はなかったのですが
色々応用が利きそうなので今後のために知っときたさはあります……
80:デフォルトの名無しさん
18/10/10 18:03:57.13 S3B5em0Jd.net
IntPtrからList<int>に変換する方法を教えてくださらんか...
81:デフォルトの名無しさん
18/10/10 18:50:06.53 8CCC3YOka.net
>>77
IntPtr型の値が指すアドレス基準に、指定個数分のデータを、という話なら
Marshal.Copyで配列にコピーしたあとにListに変換する
82:デフォルトの名無しさん
18/10/10 18:55:52.86 FcX3TrAZM.net
>>77
unsafe { var list = new ReadOnlySpan<int>((void*)ptr, n).ToList(); }
83:デフォルトの名無しさん
18/10/10 23:35:14.94 DLFqb8zL0.net
VBA上がりでC#勉強中なんですが、
別クラスに書いたコードを使いたい時、
○○ △△ = new ○○を記述して使ってるんですが、form Loadとかchangeイベント等で復数回登場する時でも都度使う所の近くで書いた方がいいんですか?それとも上部のpublicの所に書くのがいいんですか?
84:デフォルトの名無しさん
18/10/10 23:49:16.98 JyejHG/Ma.net
>>80
どうでもいい
人間の操作によって発生するイベントの頻度なんぞコンピュータの時間スケールからすると全く無視できる
85:デフォルトの名無しさん
18/10/11 06:37:46.18 1VjRo7FSa.net
>>80
メソッド間でインスタンスを共有すべき理由がないなら個々のメソッドでインスタンス化したほうがいい
メソッドの独立性が高まり変更しやすくなるから
86:デフォルトの名無しさん
18/10/11 07:18:56.97 8Foxk2RW0.net
namespaceまで作ってプログラムしたことが無いのですが、プロは駆使するのが普通なのでしょうか?
アニマルインタフェース実装した猫クラスと犬クラスを人クラスがメッセージ出して鳴かせるレベルの超初歩設計しかした事無いので、どこでnamespace使うのかなと悩んでおります
87:デフォルトの名無しさん
18/10/11 07:37:53.81 Mcte2Vdx0.net
ファイルいっぱいあったらフォルダ分けして整理するやろ?
namespaceもおんなじようなもん
88:デフォルトの名無しさん
18/10/11 08:25:56.15 RUSG7cNqM.net
>>80
変数宣言や初期化の位置と
使用場所との距離の質問だとして
宣言箇所と使用箇所はなるべく近くにするのが言語に限らずセオリーだよ
可読性とリファクタリングの点で
89:デフォルトの名無しさん
18/10/11 12:30:54.25 iiNB2I9YD.net
>>80
C時代の名残りはVBAに強く引き継がれ
VBA使いがC#に引き継いで行く
最初からpythonやる人間を雇うのが正解
90:デフォルトの名無しさん
18/10/11 14:06:58.98 sbec5Ilz0.net
JavaをやっていてJavaらしいコードを書ける人は大勢いるだろうけどさ
C#らしいコードを書ける人って、C#でプログラミングをしてる人の1割もいないんじゃねえのか?
91:デフォルトの名無しさん
18/10/11 15:05:55.06 HHTldmez0.net
千行近いメソッドで変数が先頭でまとめて宣言されてるC#のコードみるとゲンナリ
92:デフォルトの名無しさん
18/10/11 16:31:07.59 8OHEO6Pp0.net
だってBasicから始めた自分は
変数は頭にまとめて書いてある方が分かりやすいモン!
93:デフォルトの名無しさん
18/10/11 16:52:44.52 lOIGtRbea.net
>>80は
>それとも上部のpublicの所に書くのがいいんですか?
と書いているので、質問の意図はメソッド内の変数の宣言や初期化の位置についてではなく、
同じクラスのインスタンスを複数のメソッドでnewして使ってる時に、
これをローカル変数ではなくフィールドにした方がいいのか?ってことじゃないのかな。
そうであるなら答えはNo。
フィールドにしなくても要件を満たせるものをフィールドにしてはいけない。
何にしても、質問は意図が分かるように書いて欲しいね。
94:デフォルトの名無しさん
18/10/11 18:53:33.96 EPVjjDDWM.net
forのループ変数がループの外で宣言されて使い回しされてるのわろた
95:デフォルトの名無しさん
18/10/12 09:28:14.69 cMc4b2ec0.net
クソコーダーのこだわりなんざどうでもいいからさっさと動くのリリースしろよ。テストできねーじゃねぇか。
96:デフォルトの名無しさん
18/10/12 09:48:42.91 T14O4Tjf0.net
板違い
97:デフォルトの名無しさん
18/10/12 09:49:30.31 +DY7sdXwM.net
W indows Fromアプリを作っています。
途中でアイコンを変更しました。Formプロパティ部分とプロジェクトのプロパティ-アプリケーションのアイコンの2か所です。
実行時のFormとエクスプローラでも詳細表示は変更後のアイコンになるのですが、エクスプローラでの大アイコンやショートカット、ドラッグした時のアイコンが古いままです。
どうすれば新しいアイコンに更新できますか。
98:デフォルトの名無しさん
18/10/12 11:01:50.14 4rHGu3Q90.net
一度Windows標準のアイコンに戻して
再度新しいアイコンを選択してSaveしてから
再起動すれば更新されてない?
99:デフォルトの名無しさん
18/10/12 12:05:32.29 kn2Jso4ra.net
>>94
アイコンファイル自体に問題がある、なんてオチだったりしない?
100:デフォルトの名無しさん
18/10/12 12:13:39.26 a9HH9GNYr.net
>>94
アイコンが変更されるのはWindowsの気まぐれだから変更されるまで待て
101:デフォルトの名無しさん
18/10/12 13:05:26.62 +DY7sdXwM.net
>>95>>96>>97
レスありがとうございます。
アドバイス試してみましたがダメでした。気長に待ってみます。
102:デフォルトの名無しさん
18/10/12 13:49:04.90 Prl0TAqQ0.net
アイコンってどっかでキャッシュクリア的なことできなかったっけ?
103:デフォルトの名無しさん
18/10/12 14:37:18.55 a9HH9GNYr.net
>>99
やってみたけどダメだった
気長に待つしかない
104:デフォルトの名無しさん
18/10/12 16:30:01.41 arkneguz0.net
質問ですが
デバッグ構成でのexeとリリース構成でのexeは
デバッグ情報が邪魔する分、デバッグexeの方が遅いという話は知っていましたが
「微々たるもんだろ」とあまり気に留めてませんでしたが
それが原因と思われる現象に当たりまして・・・
デバッグは
105:問題無く通るので実行すると、データが混雑すると固まるのです 試しにリリース構成のexeにしたら問題無く動きます どうやらデリゲートのBeginInvokeを使っているので 非同期処理になりタイミングずれにデバッグ情報が相まって固まってるようなんだけど こういう場合 「リリースexeで問題無いならいいじゃん!」なのか 「いやいや、タイミングがずれるとエラーが出る可能性があるなら対処しておくべき!」なのか どうなんでしょうね?
106:デフォルトの名無しさん
18/10/12 16:37:59.21 LyO2C2Nx0.net
いいわけないやろ
107:デフォルトの名無しさん
18/10/12 16:42:13.45 qSk0EFmG0.net
Html Agility Pack を使ってHTMLのスクレイピングをしているのですが、
↓のソースだと<h1>タグが存在していないとNULLエラーになります。
Try Catch を使わないでエラーを出さずに済む方法ってありますか?
// Html Agility Pack
var htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(htmlText);
var elm = htmlDoc.DocumentNode
.SelectNodes(@"//h1")
.Select(a => a.InnerText);
108:デフォルトの名無しさん
18/10/12 17:07:37.53 KdHLMfUOr.net
普通にnullかどうか判定するしかないっしょ
109:デフォルトの名無しさん
18/10/12 17:11:16.61 jtGT9aS30.net
SelectNodesがnull返すなら
.SelectNodes(...)?.Select(...)
110:デフォルトの名無しさん
18/10/12 18:52:08.67 o8bzBYu9d.net
>>101
最適化
111:103
18/10/12 20:37:39.56 qSk0EFmG0.net
>>104 .
SelectNodes(...)?.で解決しました
var elm?とか .Select()?とはやったのですがうまくいかず、わからなかったのですが
そこで使うんですね
ありがとうございました。
112:デフォルトの名無しさん
18/10/13 20:01:17.77 wM7VhDKV0.net
>>101
原因の予想をそう考えているなら、CPUクロックを 1GHzとか遅くしてリリースexeで試してみるとか
(PCに負荷がかかっててもうまく動作するかってこと)
113:デフォルトの名無しさん
18/10/13 21:21:39.91 YNebL+WU0.net
XMLを読み込んで編集して保存する方法はいくつか有るようだけど制約なければXDocument使っとけばOK?
ちなみに構造が複雑なので静的モデルを作ってデシリアライズ->シリアライズが難しい場合の話
114:デフォルトの名無しさん
18/10/13 21:43:12.63 78tDj7sA0.net
>>101
それReleaseでも負荷高くなったら起きるんじゃないのか
115:デフォルトの名無しさん
18/10/13 23:30:26.22 LdRaeBfZM.net
>>109
それでいい
XMLを使わなければならない制約もないなら今のMSはJSON.NETを強く推奨してるけど
116:デフォルトの名無しさん
18/10/14 00:53:17.18 RAs/0wRTd.net
PC版Lineに来る最新メッセージを読み取る方法ってある?
調べても出てこず...
117:デフォルトの名無しさん
18/10/14 08:53:21.20 m3J+i7Py0.net
>>112
Kakaotalkのメッセージはやったことあるけど
暗号化されいて凄くめんどくさいよ。
俺なら素直に諦める。
118:デフォルトの名無しさん
18/10/14 09:15:43.47 rtryEG4ad.net
>>113
APIみたいなのはやはり準備されていないのね
把握した
調べまくる時間とか無駄にせず助かりました
119:デフォルトの名無しさん
18/10/15 10:13:33.82 TGR3LnQ40.net
console.writeってコンパイルの最適化時に削除されますか?
120:デフォルトの名無しさん
18/10/15 10:28:59.02 pVjp+zOb0.net
>>115
されたら困る
それデバッグ用の機能じゃないよ
121:115
18/10/15 10:43:50.18 TGR3LnQ40.net
最終リリースする時は、console.writeの類のものは削除しないとexeの中に入ってしまうんかな?
122:デフォルトの名無しさん
18/10/15 11:34:37.06 tgS2uc1V0.net
#if DEBUG
Console.WriteLine("Debugにゃん")
123:; #endif
124:デフォルトの名無しさん
18/10/15 11:54:04.74 wsJuGKnsa.net
>>117
Debug.Writeの方を使えばよいのでは?
URLリンク(docs.microsoft.com)
見ての通りConditional属性が付いてるから、Release時にはこいつを呼び出すコードそのものが消える
125:115
18/10/15 13:56:29.01 TGR3LnQ40.net
>>119
ありがとうございます、Debug.Writeを使うようにします。
126:デフォルトの名無しさん
18/10/15 15:20:25.49 mYzH73J7M.net
工数一週間以上の開発ならちゃんとしたロギングライブラリ使ったほうがいいよ
127:デフォルトの名無しさん
18/10/15 18:16:16.25 il4L6pQz0.net
>>121
全部クソ
なんでキューに入れんねん
キューに積む形のログ出力ライブラリは全部クソ
ログアウト id223しました
ログイン id223しました
ってアホかw
128:デフォルトの名無しさん
18/10/15 19:00:08.62 SAlDu2eYa.net
どのログ出力ライブラリの話をしているかは知らないが
キューで実装されているならログ順序は保証されるだろうに
もしくはスレッドセーフでないライブラリを複数スレッドから触っているか
129:デフォルトの名無しさん
18/10/15 19:55:33.87 il4L6pQz0.net
>>123
え?スレッド間で?
お前ちょっとだけ頭使ってレスしろよ
130:デフォルトの名無しさん
18/10/15 21:07:45.41 SAlDu2eYa.net
>>123
情報が小出しかつ不明瞭だからエスパーしているが
複数スレッドからログ出力する場合の順序が未保証だからじゃないか
それがログ出力ライブラリとして妥当かどうかは更に別の話になるが
キューに積む積まない問わず、いいログ出力ライブラリって何がある?
131:デフォルトの名無しさん
18/10/15 21:21:29.42 on44pmoFa.net
最近だとSerilogかな
ファッキンビチグソlog4jのパクリ系じゃないからシンプルで使いやすいし、
後でログの解析が非常に容易
132:デフォルトの名無しさん
18/10/15 21:30:24.71 E6pr56BO0.net
私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。
133:デフォルトの名無しさん
18/10/15 23:26:10.89 L3fZFxj50.net
log4系はネット上に情報が沢山あるのと
自分が溜め込んだ資産が沢山あるからつい使いまわしちゃうな
仕様は確かにファッキンだが
134:デフォルトの名無しさん
18/10/16 00:05:25.55 tUmXldvA0.net
>>128
使い方間違えててマルチスレッドモードになってない率95%のlog4さんじゃないですか
135:デフォルトの名無しさん
18/10/16 01:16:04.35 PMA7SNGw0.net
そのまま泳がせておけばよいのに
136:デフォルトの名無しさん
18/10/16 11:56:04.25 L6l9R59e0.net
GUIアプリケーションでのawaitについて教えてほしいんだけどさあ
↓この処理をボタン等のイベントから実行した場合、JklあるいはAsdfasyncが終了したかどうかってどうやってメインスレッドから取得するものなの?
async Task Asdfasync(){
await Jkl();//終わるまで画面をロックさせたくないが、これが終わっていない段階で他のボタンを押されると困る
}
137:デフォルトの名無しさん
18/10/16 12:15:32.35 WoCKn0wKM.net
その戻り値は何のためにあると思う?
138:デフォルトの名無しさん
18/10/16 13:32:46.61 L6l9R59e0.net
それが使えるのならありがたいけど、ボタンのイベントから呼び出されたメソッドの戻り値って取得できるものなの?
139:デフォルトの名無しさん
18/10/16 13:42:08.84 lQy+05sVa.net
素直ににawaitの前後でボタンをDisable/Enableではあかんの?
そもそもそのためのawaitでしょう。
もちろん、常にそうできるわけじゃない(JKが終わったからって無条件でボタンをEnableに
できないような要件もありうるから)だろうけどほとんどの場合はそれでいいでしょ
140:デフォルトの名無しさん
18/10/16 13:48:09.68 TeNN2wBh0.net
await は非同期処理を、同期的に書けるもの
await で検索すれば?
141:デフォルトの名無しさん
18/10/16 15:40:53.54 h+X94emHp.net
>>133
そのAsdfasyncとやらは直接イベントに接続せずに
別のイベントハンドラから自分で呼び出すんやろ?
142:デフォルトの名無しさん
18/10/16 18:13:14.36 CU/ms8va0.net
先に云っとく、良いソースじゃない。
こういう雰囲気?
Formにボタンを2つつけて動かしてみて
private Task __results;
private void button1_Click(object sender, EventArgs e)
{
if ((null == __results) || (__results.IsCompleted))
{
System.Diagnostics.Debug.WriteLine("Pass");
__results = Task.Run(() =>
{
this.Invoke(new Action
(() =>
{
button2.Enabled = false;
}
));
Task.Delay(5000).Wait();
this.Invoke(new Action
(() =>
{
button2.Enabled = true;
}
));
});
}
else
{
System.Diagnostics.Debug.WriteLine("Fail");
}
}
143:デフォルトの名無しさん
18/10/16 18:15:09.46 CU/ms8va0.net
ごめんなさい。
たぶん、全然検討違いだな。
スレ汚しごめん
144:デフォルトの名無しさん
18/10/16 23:11:55.51 O/V1xvTL0.net
コンボボックスが20個。
エクセルシート2の指定列の内容を各コンボボックスに入れる。
※cbo1には4列目、cbo2には10列目などバラバラ。
closedExcel?で読み込んで入れたんですけど、うまい作り方を教えてください。
Clsdata.CboAdd(this,tarPath,tarShtname,”4”,cbo1)
みたいに引数違いを20個書き、別クラスに追加するコード書いたんですけど、データだけ取ってきてクラスじゃなくフォームの方に書いた方が分かりやすいですかね?
別フォームでもコンボボックスに同じように追加するのがあるので使い回してるんですけど...
説明下手で申し訳ないですが、ご教授下さい。
145:デフォルトの名無しさん
18/10/16 23:33:54.56 9BmmQZOma.net
>>139
ワークシートを操作するクラスを作って、そこに列のデータをobject[]かstring[]で返すメソッドを書く
public object[] GetColData(int col) { ... }
それをコンボボックスにセットするコードはForm側に書く。
コンボボックスを引数で渡すような馬鹿なことはしちゃだめ
146:デフォルトの名無しさん
18/10/17 01:21:18.71 HL5CR6DW0.net
>>139
1クラスでlist<string>を作る
シート番号、セル開始行、列、セルの終わりを入れる
combobox1.items.AddRange( )で
2 コンボボックスをList化しておく
コンボボックス番号を入れるとitemsにかえしてくれるクラスにする
3 エクセルにコンボボックス番号、シート番号、セル範囲をかいておく
それをコンボボックスのアイテムに入れてくれるクラスを作る
エクセルをいじるだけでコンボボックスのデータができる
こんな感じかな?
147:デフォルトの名無しさん
18/10/17 07:14:52.68 JMO34tOe0.net
C#やってきたけどjava土方のが仕事あって羨ましい
シンタクスは似てるけど採用側はjava経験者しか見ないし
最初の開発重要だな
148:デフォルトの名無しさん
18/10/17 08:13:45.91 Jp0PkqObH.net
>>142
Javaは絶対やっといたほうがいいよ。
c#perであれば2日で基本はマスターできるよ。c#と違ってawt,swing,fxは全部使い物にならないからパスでいい。
後はspringframeworkぐらい理解しといたら間違いなし。
Javaは21世紀のCOBOLなんだからあと30年はやっていける。
149:デフォルトの名無しさん
18/10/17 10:56:04.11 Uge9YwCPM.net
ユニットテストやらリファクタリングやらデザインパター�
150:唐フ本は大抵Javaで例示してあるからそっち勉強するならJava知ってて損はないな
151:デフォルトの名無しさん
18/10/17 12:08:10.07 2ev72K5gr.net
いや、そもそもJavaの案件なんかやらない
やれって言われてもやらない
152:デフォルトの名無しさん
18/10/17 12:46:21.10 uwloByVh0.net
>>145
java拒否したらphpしかないで
153:デフォルトの名無しさん
18/10/17 20:08:15.98 A92Ghs040.net
へーJava勉強してみようかなー
ってJavaとJava Scriptの違いをさっき調べて知ったくらいだけどwww
154:デフォルトの名無しさん
18/10/17 20:31:01.17 DWSbH/V/0.net
ババ引いてくれる底辺労働者一人確保出来て良かったね
155:デフォルトの名無しさん
18/10/17 21:12:16.84 aIelci8v0.net
>>147
やめとけ
156:デフォルトの名無しさん
18/10/17 21:26:17.92 RzUo3BE10.net
まずこの本で、オブジェクト指向を学ぶのが、Java の定番!
スッキリわかる Java入門 第2版、2014
157:デフォルトの名無しさん
18/10/17 21:47:31.88 6MaVa97X0.net
>>140
>>141
ありがとうございます。やっぱコンボボックスの引数はよろしくないですよね。
内容を取ってくるコードって一回で読み取る事は出来ますか?上から繰り返しで配列に入れるんですかね?
158:デフォルトの名無しさん
18/10/17 22:32:39.40 vYj/Og3S0.net
ずっとC# + Windows FormsでGUIやってたけど、C++とWin32API使い始めたら、めっちゃ高速でびっくりだよ。
GIUI使いたい人はC#なんて捨てちまえ。
159:デフォルトの名無しさん
18/10/18 02:06:12.46 JCcaGiED0.net
>>151
できる
コンボボックスを配列化する
シート名 列番号をエクセルにデータで書いておいて
あとはforで繰り返す
160:デフォルトの名無しさん
18/10/18 06:54:30.01 1ktj5P410.net
>>152
Win32APIで納品された客可哀想
161:デフォルトの名無しさん
18/10/18 08:13:38.33 jQKgibt10.net
>>152
このスレC++,MFC,ATL,COM+を経て、C#のやつも結構おるだろ
162:デフォルトの名無しさん
18/10/18 08:17:50.84 qf9NxgCDa.net
個人で作るならだけど、納期に間に合わせる。
バグ作って責任取らされる。
そう言うリスクから離れたいから、仕事じゃ使いたく無いな。
いあ、もう辞めたけど。
163:デフォルトの名無しさん
18/10/18 11:20:06.75 j6REk5Yq0.net
リアルタイム通信系なら少しでも高速化するのは理屈通ってるけど
そうでないのなら安定感捨ててまでコンマの差を取るかというと……
って印象であってる?
164:デフォルトの名無しさん
18/10/18 11:44:02.53 Mxr2Ur4LM.net
一般的にはその認識は間違ってる
納期の制約があるなら最初の開発段階での最適化は結果的にアプリケーションのパフォーマンスや品質を下げる原因になることが多い
一度組み上げてから余った時間で最適化やバグ取りをした方が品質はほぼ間違いなく高くなる
165:デフォルトの名無しさん
18/10/18 12:29:09.15 kbeEYbP/a.net
.NETの黎明期から耳タコのはずだけど、そもそも大半のケースは
起動の遅さをパフォーマンスの悪さと錯覚されてるだけw
>>151
プログラムはシンプルに。
何を言ってるのかよく分からないけど、複数の列のデータを一度に返すメソッドを書きたい、
と言ってるなら、そんなことは出来てもやらない方が吉。
そんなのは多分可読性を下げるだけ。
ベタに、
ComboBox1.Items.AddRange(xlSheet.GetColData(5));
ComboBox2.Items.AddRange(xlSheet.GetColData(1));
ComboBox3.Items.AddRange(xlSheet.GetColData(9));
...
こう書いた方がぱっと見て何やってるかわかるでしょ。
こういう羅列がどうしても許せないならTagに対応する列の番号を入れておく方法もあるが、
個人的にはお勧めしないなあ
166:デフォルトの名無しさん
18/10/18 15:55:57.15 68MDIDIk0.net
>>152
確かにめっちゃ高速なんだが保守要員の確保はどうなんだ?
167:デフォルトの名無しさん
18/10/18 21:21:17.47 bB+Y9cEL0.net
>>155
まんま過ぎてワロタ
168:デフォルトの名無しさん
18/10/19 07:04:52.16 vAxKIzRz0.net
App.configを使わずにサブフォルダからDLLを読み込むようにしたいのですがどうしたらいいですか?
169:デフォルトの名無しさん
18/10/19 07:54:50.73 9lsNtaTJa.net
>>155
MSC+SDKでC言語の頃からやってる
170:デフォルトの名無しさん
18/10/19 11:40:51.68 KTHcKJLya.net
>>162
「C# pathを通す」で検索してトップに出てくる記事の方法でたぶん出来ると思う
171:デフォルトの名無しさん
18/10/19 12:10:08.36 em3M1VTdd.net
closedXMLで指定された列の空以外の最終行のnumberの取得のコードってないですか?
172:デフォルトの名無しさん
18/10/19 12:11:59.42 xA8MYlai0.net
>>163
Win 3.1の頃かなぁ
173:デフォルトの名無しさん
18/10/19 18:38:13.29 IZvEaNuI0.net
>>162
AppDomain.CurrentDomain.AssemblyResolve
174:デフォルトの名無しさん
18/10/19 19:52:33.47 e848+/7OM.net
>>163
Windows3.1かな?
既にMFCは出てたはずだけどCのほうが慣れてる(て言うかC++はわけワカメな)ので最初はC+SDKのパターンもあったとか聞いたことある
175:デフォルトの名無しさん
18/10/19 21:50:14.52 geknAxVx0.net
ジジイばかりじゃねーかw
って俺も孫が先月産まれた訳だがw
176:デフォルトの名無しさん
18/10/20 00:24:18.19 HWFrLtjLH.net
さすが5ch
インターネット老人会そのものだ
177:デフォルトの名無しさん
18/10/20 02:23:01.29 ccQVPHU20.net
DataGridViewは便利だけどデータの絞込とか実装できないんよねぇ・・・
178:デフォルトの名無しさん
18/10/20 08:01:18.87 Bcjmv4pla.net
>>168
MFC(VC)以前のWindows3.0から
179:デフォルトの名無しさん
18/10/20 08:03:50.86 vp6V3Xy/M.net
>>169
今更何を言ってるんだよ w
掲示板と言うメディア自体が爺しかいなくなってる
180:デフォルトの名無しさん
18/10/20 08:13:45.80 /P2yZ5cia.net
今の若者は顕示欲が強いく批判もされたくないから実名でブログの方が理にかなってるのだろう
181:デフォルトの名無しさん
18/10/20 08:18:20.72 vp6V3Xy/M.net
>>172
おお、Windows3.0を使ってた人なんて初めて見たわ
3.1から使い始めた俺はまだまだ若造なんだな w
182:デフォルトの名無しさん
18/10/20 08:20:31.03 Nttc2RvPa.net
⒊0は日本じゃ売られなかったって誰か教えてやれよ。。。
183:デフォルトの名無しさん
18/10/20 08:59:16.77 8XvHu+iJ0.net
>>176
え?
URLリンク(www.betaarchive.com)
Windows for Workgroupsと勘違いしてるのかな?
184:デフォルトの名無しさん
18/10/20 09:17:14.34 Nttc2RvPa.net
悪かったよ。
B何てあったんか。
PC98懐かし過ぎて二度見したわw
185:デフォルトの名無しさん
18/10/20 09:22:24.86 8XvHu+iJ0.net
>>174
そう言うのもあるだろうけど、俺等の世代はテキスト主体だったけど今の若い奴等は画像メインって言うのが大きい気がする
俺だけかも知れないけど640KBでやりくりして56Kbpsがスゲーって言ってた世代の記憶は一生消えないと思う
186:デフォルトの名無しさん
18/10/20 10:03:32.03 qexLty9p0.net
Task.Delay()の時間設定ってかなりテキトーですか?
0と1msがあまりにも差がありすぎる気がス
187:デフォルトの名無しさん
18/10/20 10:54:16.89 ODHHe6QF0.net
>>180
そりゃ「"最小***ms以降"で目を覚まして」ぐらいの意味だからねそれ
1ms単位できっちりスレッド切り替えを保証できるOSでは無いのだ
状況次第だけどMMCSSやtimeBeginPeriod(非推奨)を設定すればある程度改善できる場合もある
188:デフォルトの名無しさん
18/10/20 12:57:53.42 qexLty9p0.net
>>181
そうなのか
正確に測ったわけじゃないけど1msに設定しても
体感的に10msくらい止まってる気がする
短い停止はThread.Sleepのほうがレスポンス速いな
でもこっちは長くするとデッドロック?しちゃう
でTass.Delayにしてみたんだけど・・・
あちらを立てればこちらが立たずだな
189:デフォルトの名無しさん
18/10/20 13:07:38.97 dg5LoPsJ0.net
10ms ぐらいだろ
組み込みみたいな、リアルタイムOS じゃないから
190:デフォルトの名無しさん
18/10/20 13:28:52.22 fOofNO0j0.net
>>179
DOS=HIGH
これも未だに覚えてるわ
オフセットとセグメントというめんどくさいもののおかげで
+64K-36バイト余分があるという
191:デフォルトの名無しさん
18/10/20 15:48:18.27 sxRx8jfWd.net
絶対パスなら(先頭に¥マークを含む)相対パスに変換するって処理って何か関数あるかな?
192:デフォルトの名無しさん
18/10/20 15:51:44.06 HNej4b9n0.net
c# 絶対パス 相対パス
で検索すれば一発じゃん
193:デフォルトの名無しさん
18/10/20 15:55:52.46 Nttc2RvPa.net
大分離れたけど、何年か前のC#6か、それより前で文字列に@付けたりなんだりで解決してなかったか?
194:デフォルトの名無しさん
18/10/20 15:56:22.36 /P2yZ5cia.net
>>185
Path.GetRelativePath
195:デフォルトの名無しさん
18/10/20 16:00:52.98 Nttc2RvPa.net
>>187
すまん。
的外れだった。
196:デフォルトの名無しさん
18/10/21 23:07:31.83 gVzxUBHM0.net
配列の次元を動的に決める方法ってあります?
例えばHairetsuっていう名前のオブジェクトがあったとして、
コンストラクタでhoge(int x)が呼び出された時は1次元配列、
hoge(int x, int y)が呼び出された時は2次元配列にしたい。
197:デフォルトの名無しさん
18/10/21 23:43:26.15 hj9/4JnXa.net
>>190
Array.CreateInstance?
198:デフォルトの名無しさん
18/10/22 00:21:30.44 KsYG64zi0.net
>>165
一行で書くとこんな感じ?
worksheet.Columns("A").First().Cells(true).Max(cell => cell.Address.RowNumber);
199:デフォルトの名無しさん
18/10/22 03:54:32.49 lcyNLVRb0.net
sizeof(char) は 2 なのに Marshal.SizeOf<char>() が 1 になるのは何故ですか?
200:デフォルトの名無しさん
18/10/22 04:57:46.04 DedBSVU60.net
ANSI扱いで計算されてるから
201:デフォルトの名無しさん
18/10/22 14:42:05.76 z/eoCJYy0.net
ダブルクリックするとデフォルト値に戻るTrackBarを作りたいのですが
Trackbar.DoubleClickイベントを追加してもクリックイベントが動くだけで反応してくれません……
ググった情報を参考に継承クラスにしてからSetStyleでStandardDoubleClickを追加しても無反応でした
よければご教授よろしくお願いします……
202:デフォルトの名無しさん
18/10/22 16:42:10.00 NGaoO2J9d.net
サブクラス化でダブルクリックのメッセージを盗む
203:デフォルトの名無しさん
18/10/22 16:49:58.28 PhEYlXMOa.net
>>195
簡単だろ...と思ったけどそうでもないみたいね
CreateParamsオーバーライドしても出来なかった
URLリンク(bytes.com)
ダブルクリックの成立条件がOSの設定と別になるのは諦めて
自分でダブルクリックを実装するしかない
204:気がする。知らんけど private Stopwatch mStopWatch = new Stopwatch(); protected override void OnClick(EventArgs e) { base.OnClick(e); const int maxDoubleClickInterval = 500; if (mStopWatch.IsRunning && mStopWatch.ElapsedMilliseconds <= maxDoubleClickInterval) { OnDoubleClick(e); mStopWatch.Stop(); } else mStopWatch.Restart(); }
205:デフォルトの名無しさん
18/10/22 16:50:32.09 PhEYlXMOa.net
>>196
メッセージ自体が飛んでこないのよ
206:デフォルトの名無しさん
18/10/22 17:10:21.59 z/eoCJYy0.net
>>197
あーーやはり根本から用意されてないんですね……
自分の初歩が間違ってるのかなと思っていたのですが少し安心しました
ありがとうございます!
207:デフォルトの名無しさん
18/10/23 08:10:29.01 WlOKeoDJ0.net
素人のボヤキで恐縮ですが
何度も書いては直しを繰り返し書き足したコードが
最後の最後、どうしてもデバッグが通らなくなりまして
いくら調べても動かない原因か分からず
もう考えるの面倒くさくなって
新規のFormに一から同じコード書き直してみたら・・・動くじゃん!
たぶん何度もトライ&エラーしたから何処かで操作間違えて
IDEが自動で生成したコードにゴミが混じったんじゃないかと思ったのですが
この動くコードと動かないコードの違いを簡単に発見できませんかね?
今、全ての.csファイルを一行ずつ比較してますが・・・もう飽きましたwww
メインのコードは全く同じでした
ちなみにデバッグで出るエラーは、あるクラスのメソッドの定義が無いというやつです
208:デフォルトの名無しさん
18/10/23 08:58:05.56 4KRTdb+90.net
定義がなくてエラーを吐くところまで分かるなら
動くほうのコードをその定義名で検索してコピペすればいいのでは……?
209:デフォルトの名無しさん
18/10/23 09:16:11.92 WlOKeoDJ0.net
自作のメソッドじゃないのです
usingでちゃんとクラス指定してますし
少なくとも手で入力したコードは同じなので
210:デフォルトの名無しさん
18/10/23 09:37:53.24 4KRTdb+90.net
いや、だから自動生成のコードも比較してるんだよね
普通にそこにヤマ当てて検索すればいいのでは…………???
211:デフォルトの名無しさん
18/10/23 10:00:22.54 XCdCnqpbd.net
List<int>型をカンマ区切りの文字列にしたいんだけども一個ずつforeachで要素取り出して繋げるしかないかな?
212:デフォルトの名無しさん
18/10/23 10:03:28.47 XCdCnqpbd.net
joinをレスかいた後に見つけました!
すみません
213:デフォルトの名無しさん
18/10/23 10:43:05.65 IN4ounIY0.net
質問した直後に答えが見つかるのはありがちである
214:デフォルトの名無しさん
18/10/23 10:55:13.88 cDc5Fd7gM.net
質問する際に文字に起こすことによって頭が整理されるためである
215:デフォルトの名無しさん
18/10/23 11:08:35.71 mgVace2od.net
staring[] strLine = system.IO.File.ReadAllLines(tarTxtPath,System.Text.・・・)
strLine = strLine[0].Split(chrCut)
return strLine;
フォーム1で一回通ったあとフォーム2で2回目通るときにエラーで別のプロセスで使用されているって出るんですがどういったエラーですか?
ファイル開いてるってことですか?
216:デフォルトの名無しさん
18/10/23 11:14:39.42 Vkutn+dk0.net
>>207
あるある
217:デフォルトの名無しさん
18/10/23 11:29:22.32 IN4ounIY0.net
探すのをやめたとき見つかることもよくある話で
218:デフォルトの名無しさん
18/10/23 14:06:54.25 GxUzOGox0.net
>>208
そう
ただFile.ReadAllLinesはオープンからクローズまでやってくれるので普通は発生しない
他でそのファイルを触ってない?
あと自プログラム上はクローズしたけどアンチウィルスソフトがまだ触ってるってケースがある
219:デフォルトの名無しさん
18/10/23 21:57:42.31 H4AFqJh00.net
>>211
原因を探る方法ってなんかあります?
220:デフォルトの名無しさん
18/10/23 22:47:02.21 beMFeyu90.net
>>208
Readだとそもそも他でロックしていても別のプロセスで使用されているってエラーにならないはずなんだけど
書き込みモードで開いたままとかよっぽど変なことしていないか?
>>212
とりあえずダミーで
string[] strLine = system.IO.File.ReadAllLines(tarTxtPath,System.Text.・・・)
のすぐ下に別の配列への読込み
string[] strLine2 = system.IO.File.ReadAllLines(tarTxtPath,System.Text.・・・)
を入れて見てエラーになるかならないか確認してエラーが出たらお手上げ
エラーが出ないのならstring[] strLine = system.IO.File.ReadAllLines(tarTxtPath,System.Text.・・・)から2回目の実行時にエラーの原因がある
221:デフォルトの名無しさん
18/10/23 22:54:16.72 t0pM1C750.net
Windowsで簡単なデスクトップアプリ、コマンドプロンプトアプリを作るのが目的で
無料のVisual Studio 2013 for Desktopをインストールしている
最近調べたらVisual Studio 2017 Community版なるものが無料でリリースされてるようだけど
2013 for Desktopから乗り換える価値あると思う?
それとも2013 for Desktopをそのまま使い続けていた方がいい?
222:デフォルトの名無しさん
18/10/23 23:19:13.87 beMFeyu90.net
>>214
2013だと最新のC#や.NetFrameWorkwpターゲットにしたものが作れないと思うけどVisualStudioのスレで聞いて
メリットとデメリット詳細に説明するのは難しいと思うから
223:デフォルトの名無しさん
18/10/23 23:37:40.87 EnOD72ofM.net
>>214
VS communityは商用利用に制約が有ります。
Express 2017 for Windows Desktopを利用しましょう。
Express 2017 for webはないのでwebはVSCODEに移行しました。
224:デフォルトの名無しさん
18/10/24 00:13:22.70 mtZGy2HS0.net
㌧㌧
2017 for Windows Desktopに乗り換えまつ
225:デフォルトの名無しさん
18/10/24 00:29:43.28 XKgg3tJUa.net
>>216は間違い
VS Communityは組織の規模に制限があるが用途に制限はない
226:デフォルトの名無しさん
18/10/24 07:44:57.85 s6gpcYwid.net
>>213
書き込みモードで放置してました。
お手数おかけしました!
227:デフォルトの名無しさん
18/10/24 10:07:14.94 3/mFq1HRd.net
>>216
5人以上での開発からじゃなかったっけ
228:デフォルトの名無しさん
18/10/24 13:09:57.36 AbQuJmTL0.net
プログラマーとして転職するにはどんな本までマスターしてれば大丈夫ですか?
ゴールからはじめるC#は読めました。
229:デフォルトの名無しさん
18/10/24 13:24:18.69 pa4PW987a.net
基礎としては入門で十分。
読んでから作るのではなく、作りながら読む。
必要だと感じないと頭に入らない。
230:デフォルトの名無しさん
18/10/24 13:34:18.54 KNarJnl6M.net
C#ってあんまり未経験OKの仕事ないからJavaから入るのがいいと思うよ
JavaならFizBuz書ければ十分仕事できる
231:デフォルトの名無しさん
18/10/24 13:46:07.47 uTlH1PNGr.net
まじかよ
232:デフォルトの名無しさん
18/10/24 13:53:12.06 8s24r2uo0.net
>>221
本ならEssential C#
まぁ作った物を見せるのが一番だけどな
233:デフォルトの名無しさん
18/10/24 18:41:34.40 HJod1vGPM.net
VS2013でweb formを作っています。
以前VS2008の時代、AjaxControlToolkitのModalPopupExtenderを使って設定用のポップアップを作っていました。
今回同じような事をしたいのですが、VS2013の環境で、同等の事を簡単にできるよい方法はありませんか。
234:デフォルトの名無しさん
18/10/24 19:08:39.26 KNarJnl6M.net
>>226
WebFormsに頼るのはやめてBootstrapを使ってください
235:デフォルトの名無しさん
18/10/24 20:20:05.07 a4OXlgOjM.net
>>220
開発者の数じゃない
でかい企業は開発者の人数関係なく使っちゃダメ
小さい企業は5人までならいいってこと
なので会社が小さくても3人の開発者が2チームいたらアウト
■個人開発者
あらゆる個人開発者は Visual Studio Community を利用でき、無償または有償のアプリケーションを作成できます。
■ 組織
以下のシナリオでは Visual Studio Community を利用者数に制限なく利用することができます: 教室の研修環境、学術的調査、オープン ソース プロジェクトへの貢献
■その他のすべての利用シナリオ:
●エンタープライズではない組織において 5 ユーザーまでは Visual Studio Community を利用できます。
●エンタープライズ組織 (PC 台数 250 台以上または年商 100 万ドル以上) は上記の教室の研修環境、学術的調査、オープン ソース プロジェクトへの貢献以外では従業員や請負契約者ともに利用を認められません。
URLリンク(visualstudio.microsoft.com)
236:デフォルトの名無しさん
18/10/24 20:23:21.79 pUZreFeO0.net
リリース用のビルドマシンは1台で
他は全部expressや
ってやったらどうなるの?
237:デフォルトの名無しさん
18/10/24 20:24:41.18 j9WcSB4FH.net
年商1億って結構安いよな
ケチ
238:デフォルトの名無しさん
18/10/24 20:28:06.50 mBAz6liX0.net
>オープン ソース プロジェクトへの貢献
ってすごい曖昧な定義だよな
239:デフォルトの名無しさん
18/10/24 20:43:45.15 lYnaZc560.net
Javaは設定ファイル多すぎて挫折したけどdotnet new mvcですぐ始められるのは良いね
サーバーもいらないし
240:デフォルトの名無しさん
18/10/24 20:45:46.94 FS+T0WbLa.net
>>229
意味ない
ビルドだけなら.NETさえ入ってればmsbuild一発でできる
241:デフォルトの名無しさん
18/10/24 21:02:31.52 uTlH1PNGr.net
MSが委託請負が開発したCommunityでビルドしたアプリまで特定できるの?
242:デフォルトの名無しさん
18/10/24 21:04:15.38 3/mFq1HRd.net
tiff画像をBitmapクラスを使って読み込みたい
読み込みはできたのだけど、1ピクセル辺りに要するバイト数が想定と違って困ってます
Bitmap b = new Bitmap(file)
BitmapData d = b.LockBits(new Rectangle(0,0,b.width,b.height),ImageLockMode.ReadWrite,b.PixelFormat)
b.pixelFormatがどうやらサイズが間違っているようなんだけども
ここってどう指定すべきなのでしょうか
2バイトのところ4バイトのARGBが入ってるのでサイズがめちゃことなってしまって
243:デフォルトの名無しさん
18/10/24 21:39:43.47 pUZreFeO0.net
>>233
Visualstudioのお金払う必要無いって言ってる?
ライセンスの話ね
244:デフォルトの名無しさん
18/10/24 21:55:47.42 0ETaBBAFa.net
>>235
tiff使ったことはないけどここ参考になったりしない?
URLリンク(teratail.com)
245:デフォルトの名無しさん
18/10/24 22:47:55.18 FS+T0WbLa.net
>>236
ビルドだけが目的ならVSなんか全く必要ないよ
246:デフォルトの名無しさん
18/10/24 23:48:44.98 sUnPoBu6d.net
>>237
回答があるようでない感じやねありがとう
ファイルの先頭ポインタから何番目ってをIntPtrで変換とかはStreamReaderでできるんかな?
247:デフォルトの名無しさん
18/10/25 00:00:10.59 6CwUNa2j0.net
>>238
じゃ、Visualstudioって実質金出さんでもいいの?
248:デフォルトの名無しさん
18/10/25 00:02:26.32 bJEmGRRpM.net
>>240
開発生産性を度外視するならその通り
249:デフォルトの名無しさん
18/10/25 02:14:51.71 LTnIM1RR0.net
最近ほぼVisualStudioCodeしか使ってないわ
250:デフォルトの名無しさん
18/10/25 09:35:23.68 BG3PZmBX0.net
>>235
まずその想定してるっていうPixelFormatは正しいのかExplorerからプロパティ>詳細のビットの深さ見て確認する
> 2バイトのところ4バイトのARGBが入ってる
想定とBitmapDataでどっちがどっちなのか読み取れないけど1ピクセル2バイトってRGB565とかその辺なの?
251:デフォルトの名無しさん
18/10/25 11:59:33.09 dYjhTuUoa.net
たぶん直接の原因は>>237にある通りじゃないのかな
文面を見る限り質問者はあまり注意深い人に思えないしw
252:デフォルトの名無しさん
18/10/25 12:11:30.07 dYjhTuUoa.net
ところで、LockBitsってインスタンスメソッドなのに何で自分自身のPixelFormatを
引数で要求するんだろう。
253:デフォルトの名無しさん
18/10/25 13:07:15.03 r31i+JfIM.net
GDI+のAPIがそうなっているから、それを何も考えずに猿のようにラップしてそうなっただけ
254:デフォルトの名無しさん
18/10/25 19:40:29.60 gTpJa4iN0.net
>>246
Q. では何故GDI+のAPIはそうなっているのですか?
A. The pixel format of the temporary buffer does not have to be the same as the pixel format of this Bitmap object.
[URLリンク(docs.microsoft.com)
255:デフォルトの名無しさん
18/10/25 20:44:40.21 n3Rz+F82a.net
>>247
フルカラーをトゥルーカラーにしたり、アルファーチャンネルを付け加えたり、
そういうフォーマットの変換機能も兼ねてるってことなのかな
MSDNのLockBitsの解説にはそんなこと書いてないけど。
不細工な設計だねw
256:デフォルトの名無しさん
18/10/25 21:41:33.94 JIQ6DfsAp.net
>>248
> 不細工な設計だねw
なんで?
257:デフォルトの名無しさん
18/10/25 22:26:50.74 n3Rz+F82a.net
>>248
フォーマットの変換機能は別に持たせた方がスマートでしょ
(現にCloneでできるみたいだし)
少なくともLockBitsにPixelFormatを引数にとらないバージョンがあってしかるべき。
GDI+はやっつけで作ったのかこういう不条理な実装他でも見た記憶があるなあ
258:デフォルトの名無しさん
18/10/25 22:33:36.48 mF3BZxvh0.net
GDI+は処理の遅さが致命的
259:デフォルトの名無しさん
18/10/25 23:29:37.31 JIQ6DfsAp.net
>>250
ソース元のフォーマットに制限されず指定のフォーマットで読み書きできた方が普通に便利でしょ
別のビットマップが欲しいわけじゃないのにCloneを仲介する方が意味わからん
(LockBits自体は自動的に複製を作るようなもんだけどね)
260:デフォルトの名無しさん
18/10/25 23:30:45.76 oh52xQKG0.net
cbo1のテキストと同じものを3行目の3列目から右に同じものを見つかるまで探し、見つかったセルから下へループし、「※」印がある場合のみ「※」印の行の1列目の氏名を配列に入れ、cbo2にADD。
注)入れる際に同一氏名がすでに配列にある場合除外。
これをやるために、closedxmlで書いて見ましたがちょっと処理が遅い。
コードの書き方的には右にforで最終列までループ処理→ifで一致
forで一致した列の最終行まで下へループ処理→ifで一致したら配列に詰め込む。
現在ここで重複排除のやり方が分からないのでとりあえず全て配列にいれてます。
どうやって、書くのが最善ですか?
URLリンク(i.imgur.com)
261:デフォルトの名無しさん
18/10/26 00:14:26.87 mydHUNdj0.net
>>253
格納するときに現在あるやつ全部とダブリチェックでいーじゃん
262:デフォルトの名無しさん
18/10/26 00:36:10.18 pE8f1AMra.net
>>253
低い抽象度でものを考えすぎている
お前がやりたいのはExcelの操作を自動することではなくて目的とする結果を得ることだろ?
まず要件を明確にし、それをそのままコードに落とすだけだ
カーソルだのセルだのは最後の最後に出てくるどうでもいい瑣末な部分だ
263:デフォルトの名無しさん
18/10/27 08:30:41.59 F8L6v78S0.net
複数の.csvファイルを一つの.xlsxファイルに簡単に纏められる?
264:デフォルトの名無しさん
18/10/27 08:55:21.44 BNqfM2zkM.net
VBAでできることはC#でも全く同じ方法でできる
C#ではなく "VBA CSV 複数 結合" でググったら一発でサンプルは出てくる
そして "C# Excel 操作" でググって出てきたサンプルを真似してC#に機械的に書き直せ
それ以上細かいことはスレ違い
265:デフォルトの名無しさん
18/10/27 09:14:14.56 if75aWaZ0.net
>>256
できる
266:デフォルトの名無しさん
18/10/27 11:23:15.72 AkygrdAXM.net
>>256
やればできる
267:デフォルトの名無しさん
18/10/27 15:22:42.49 GAIyH11Qr.net
やれば出来るだろうが、手間は掛けられん。
簡単に出来るなら、ちょっと考えてみるかな。
ありがとう。
268:デフォルトの名無しさん
18/10/27 15:42:55.29 QwPOuwmq0.net
>>256
テキストの状態で全ファイル連結して一つのcsvファイルを作り、それをExcelで開いてxlsxで保存。
というローテクな方法でもできる。
269:デフォルトの名無しさん
18/10/27 15:57:45.83 if75aWaZ0.net
>>260
普通にc#からエクセルファイル操作できるから
270:デフォルトの名無しさん
18/10/27 15:58:58.91 ntx2HiKDa.net
便所掃除ができることをドヤ顔で言わなくてよろしい
271:デフォルトの名無しさん
18/10/27 22:41:19.36 Qgr0BHqv0.net
>>262
お前の「普通に」って何だよwww
初心者用なんだしやり方を詳しく教えろやくださいませ
まさかopenXMLのAPIのことじゃないよね
272:デフォルトの名無しさん
18/10/27 23:31:57.17 /aRXu6mM0.net
VBEでC#書けたりするの?
273:デフォルトの名無しさん
18/10/27 23:56:23.88 cqzal98J0.net
C#のクラスを考えるときにテストのことを考えるとさ
privateの関数や変数は持たない方が望ましいと聞いたんだがそこまで意識してプログラミングしてる?
役割を逸脱してる可能性が高いと言われてるのだがコード的にそうはさせない方法とかあるのだろうか
274:デフォルトの名無しさん
18/10/28 00:27:12.07 hf5/u8050.net
えなにそれ
publicな変数にしろってこと?
275:デフォルトの名無しさん
18/10/28 01:01:32.10 sLs9tkqy0.net
>>267
全部パブリックにしろって話ではないと思うのだが、
クラスとしてちゃんと機能してるかをテストしやすくするものとして確認しやすいように設計をするようにと言われた
アクセッサを準備しろってことなのか
、protectedで作って継承してテストをしやすくしろってことなのかはわかってない
276:デフォルトの名無しさん
18/10/28 01:01:48.04 z9u8vCUJ0.net
>>266
なにそのキチガイ発言
277:デフォルトの名無しさん
18/10/28 01:05:59.90 sLs9tkqy0.net
>>269
たぶん本質は内部所持して扱う変数を極力減らしましょうってことなんかなって思ってる
クラスを使うのにA・B・Cを事前に呼び出して内部変数の設定をしないと使えないですとかだと
バグのもととかになるから条件縛りを減らしましょうとかってことなんじゃないかと
278:デフォルトの名無しさん
18/10/28 06:10:51.67 e0hkCJOP0.net
全部public staticにしろ
279:デフォルトの名無しさん
18/10/28 08:05:20.34 3RT+wTpd0.net
日曜プログラマです
理屈に疎いので教えてください
Win32APIをマーシャリングしてプログラムを作成中なのですが
コールバックをデリゲートでやってるので
これは必然的にFormとは別のスレッド(マルチスレッド)という理解で正しいでしょうか?
このコールバックからの信号をトリガーにForm上のコントロールを触ると
「別スレッドからアクセスした」と怒られます
これを回避するために別のデリゲートを挟んでコントロールを触っていますが
これ以外に方法ないでしょうか?
デリゲート挟むと時々信号取りこぼすみたいで
上手くコントロールが反応しないことがあるんで改良したいのです
280:デフォルトの名無しさん
18/10/28 08:25:18.25 SibvNmKY0.net
どうでもいいけどココって本当に初心者用スレなのかね
281:デフォルトの名無しさん
18/10/28 08:56:08.45 kvhoQsiz0.net
>>272
> コールバックをデリゲートでやってるので
> これは必然的にFormとは別のスレッド(マルチスレッド)という理解で正しいでしょうか?
どこのなんのコールバックなのかこっちは知らんのだが
「別スレッドからアクセスした」と怒られるんならそうなんでそ
> これを回避するために別のデリゲートを挟んでコントロールを触っていますが
デリゲートを挟んでとあるけど、前提としてコントロールを触る処理はInvokeメソッドにちゃんと投げてる?
282:デフォルトの名無しさん
18/10/28 10:44:38.69 zjm6bfwn0.net
すみません、c#の初心者です。UnityでRPGを製作しているのですが、質問があります。
if (条件式1) {
条件式1が真の時のダメージ処理;
...;
}else if(条件式2) {
条件式1が偽で条件式2が真の時のダメージ処理;
...;
これに、ダメージを999以下に抑えたいので<=999を入れたいのですが、どこに入れればいいのでしょうか?
簡単な質問で申し訳ありませんがよろしくお願いします。
283:デフォルトの名無しさん
18/10/28 10:51:17.84 JM6DGBKw0.net
>>275
ダメージ処理終わった最後
int dmg=0;
if (条件式1) {
条件式1が真の時のダメージ処理;dmg+=a;
...;
}
}else if(条件式2) {
条件式1が偽で条件式2が真の時のダメージ処理;dmg+=b;
...;
}
dmg=dmg>999?999:dmg;//またはif (dmg>999) dmg=999;
284:デフォルトの名無しさん
18/10/28 10:59:20.84 zjm6bfwn0.net
>>276
早速のご回答ありがとうございます!やってみます!
285:デフォルトの名無しさん
18/10/28 11:20:25.94 zjm6bfwn0.net
無事反映されました!ありがとうございます。
286:デフォルトの名無しさん
18/10/28 11:48:33.54 3RT+wTpd0.net
>>274
Invokeメソッドに投げるとはこういうことでしょうか?
private void _TS()
{
TextShowDelegate dlgTS = new TextShowDelegate(TextShow);
IAsyncResult ar1 = BeginInvoke(dlgTS, null);
}
Tipsの寄せ集めでやってるので理屈はあまりよくわかってませんwww
287:デフォルトの名無しさん
18/10/28 11:54:36.96 Lzmpvi1g0.net
FXのEA(自動売買ツール)を提供しています。
興味がありましたら見てみてください。
URLリンク(hbgfvtgvfvr.weblog.to)
288:デフォルトの名無しさん
18/10/28 13:12:56.47 sLs9tkqy0.net
>>271
クラス化してる意味がほぼ無さそう....
コンストラクタで引数渡してメンバ変数にデータを覚えさせて使うのと
ことあるごとに内部関数の引数にデータを渡すのってどちらのが良いのだろう?
影響範囲とか小さくすることを考えると後者なのかなって思うけども
289:デフォルトの名無しさん
18/10/28 16:02:02.80 gvAysy2V0.net
>>281
あるメソッドで使うからコンストラクタで渡すって考え方自体おかしいかな
メンバはそのクラスが持つ必要があるから持っているわけでメソッドで使うから持っている訳では無い
例えば体クラスでBMIを計算するときは体重、身長は体情報だからクラスのメンバで持たせる
身長クラスでBMI計算するときは身長はメンバで持って体重はメソッドの引数で渡す
290:デフォルトの名無しさん
18/10/28 17:25:54.20 sLs9tkqy0.net
>>282
クラスの役割的にはそれであってるのだと思う
聞きたかったのは例えばその身長クラスに特化した話で
身長をそもそもメンバに持つ必要性はあるのだろうか?って話
291:デフォルトの名無しさん
18/10/28 17:38:11.82 ISWax1KhM.net
何か正しいかはユースケース次第
クラス単独での設計の正解なんか存在しない
292:デフォルトの名無しさん
18/10/28 18:47:58.26 VnMv7Anc0.net
身長クラスではなくBMI計算機クラスがいいのかな
293:デフォルトの名無しさん
18/10/28 20:53:14.99 c1Io2A4L0.net
>>279
URLリンク(qiita.com)
自分は上のに近いのでやってる
InvokeRequiedで判定してスレッドセーフにするのが定石みたいだね
294:デフォルトの名無しさん
18/10/29 11:51:55.81 IQ5w1AIM0.net
>>286
情報ありがとうございます
勉強させていただきます
295:デフォルトの名無しさん
18/10/29 13:34:23.83 09l7CDuO0.net
C#ではnumpy.randomみたいにSeed値を指定するようなことってできるんでしょうか?
296:デフォルトの名無しさん
18/10/29 13:36:55.22 f3zS/OjjM.net
できる
297:デフォルトの名無しさん
18/10/29 14:41:55.61 xwSUZkbbd.net
とても初歩的な質問なんですが
protected AbBb _abbb;
こんな感じのプログラムってなんていいますか?
298:デフォルトの名無しさん
18/10/29 14:44:34.42 f3zS/OjjM.net
クソコードというんじゃない?
フィールドをprotectedにしているプログラムはC#では一般的にはそう呼ばれる
299:デフォルトの名無しさん
18/10/29 14:47:11.97 xwSUZkbbd.net
>>291
なんていうか、_と書くことで別のところから持ってこれるようになる方法のことです
300:デフォルトの名無しさん
18/10/29 14:52:04.17 oAZGLoeZ0.net
_から始まろうがそうでなかろうがC#では普通の識別子であって言語的に意味の違いはない
メタ的に意味はあるかもしれんがそれは文脈次第
なのでもうちょっと文脈を示してもらわないと意味分らん
301:デフォルトの名無しさん
18/10/29 14:52:15.80 ZsrJ9icq0.net
>>292
DIっていうんだよ
302:デフォルトの名無しさん
18/10/29 20:42:23.22 1yFXm6Bf0.net
>>294
初心者相手なんだから略してない名称も書いてあげたら
303:デフォルトの名無しさん
18/10/30 17:44:38.38 Vdu6vWjQ0.net
C#で組込み系ってできるの?
304:デフォルトの名無しさん
18/10/30 17:54:37.52 HzRny5oEM.net
最近は可能だが案件はなさげ
デバイスは限られるが自作なら余裕
305:デフォルトの名無しさん
18/10/30 17:59:29.99 Vdu6vWjQ0.net
>>297
案件あって戸惑ってる
また1から学ばないといけないのか...
306:デフォルトの名無しさん
18/10/30 18:45:34.87 E+8/TrgCM.net
C#で実務の組み込みって制御系だろ?
変なプロトコルで機器と通信する必要があるだけで、普通のWinPCだぞ
307:デフォルトの名無しさん
18/10/30 19:37:58.29 cJDinX9aa.net
ググったら.NET Micro Frameworkってのがあるらしい
どのくらい使われているかは知らん
308:デフォルトの名無しさん
18/10/30 20:17:27.88 HzRny5oEM.net
ラズパイにwindows IOT入れてUWPで作ったり unityからUWP吐くとかもできるぽよ
従来の組み込みの世界とは別物だろけど
沼っぽいけど実績になれば
キャリア的には面白いと思う
309:デフォルトの名無しさん
18/10/31 02:11:45.22 90i4Cfzn0.net
c#って何から覚えてけばいいのだろう?
今の知識としては、インスタンス化は何かnewする奴だっけ? 的なレベル、何というか世界が広大すぎるしネットで調べてもサイトは何書いてんのか分からないし……わりぃ、やっぱつれぇわ
310:デフォルトの名無しさん
18/10/31 02:34:46.39 YeNkIpaX0.net
作りたいものを作る
その過程で必要なものだけを調べる
道具の使い方だけ勉強しても意味がない
道具は使うためにある
311:デフォルトの名無しさん
18/10/31 03:38:24.10 OyhA4eFa0.net
>>302
C#は後発なだけあって負の遺産みたいのが少ないから
まずは自分に必要なところから覚えていけば大丈夫
やりたいことをやってるうちに疑問に思ったところを調べていけばおk
312:デフォルトの名無しさん
18/10/31 06:18:25.29 AV1WSlFbM.net
そのうち道具を使う為の道具を作り始める
負の遺産が溜まっていく
313:デフォルトの名無しさん
18/10/31 06:49:24.56 nRECWsn80.net
ラムダ式というのがよくわからないので教えてください
読んでる入門
314:書に例えば普通のメソッドで int add(int n){return n+2}; とあればラムダ式なら n=>n+2;と書けるとあるのですがどうやって使えばいいのか?が書かれていません どのように使えば良いのでしょうか?何が便利になってるのかも?です。
315:デフォルトの名無しさん
18/10/31 07:13:16.37 QxiZIYdtM.net
>>306
なんか色々説明が必要な時点でもうあんまよくない臭いしてるだろ?
316:デフォルトの名無しさん
18/10/31 07:29:35.90 xX3V2hUr0.net
間に合わせの説明として利便性をいうと
わざわざ関数addを明示的に作らなくてもその場で関数を作れる=関数名もつけるまでもない匿名関数として便利
ついでに引数と戻り値の型も省略できるからLINQの述語やプロパティ値をシンプルに記述できる
あとMVCのrazorでもヘルパーへの引数に、プロパティ値ではなくプロパティを渡すのに使われたり
317:デフォルトの名無しさん
18/10/31 07:57:27.30 AQSs4bkC0.net
>>306
書く方も別の場所にいちいち関数定義しなくて良い
読む方もそこに処理の内容が書いてあった方が良い
…とも一概に言えない場面は多いので、自分がコーディングしてて
脳が「ここラムダ式で書きたい」と自然に出てくるまでは封印しててもええんやで
void Do() {
int buffer = {1,2,3,4,5};
var q1 = buffer.Where(Even).Select(Plus2);
var q2 = buffer.Where(x => x % 2 == 0).Select(x => x + 2); // q1とやってることは同じ
}
bool Even(int x) { return x % 2 == 0; }
int Plus2(int x) { return x + 2; }
318:デフォルトの名無しさん
18/10/31 12:29:27.76 NuHnUQr6a.net
>>306
デリゲートは理解してるの?
まずそっちを先に理解しないと、いきなりラムダ式を理解するのは無理ですw
319:デフォルトの名無しさん
18/10/31 17:27:52.66 nRECWsn80.net
>>310
すいません理解できてないです
というかまだ読んでる本で説明がなされていないようです…
この章を取り敢えず読み切った後また読み返せば理解できるってことですね
LINQとラムダ式?とやらを使わずにメソッド使えばいいやって認識だとこの先苦労しますか?
回答くださった方ありがとうございます
320:デフォルトの名無しさん
18/10/31 17:53:59.42 kfZUY5yUM.net
ちょうど600ページのよさげな本が出たぞ
321:デフォルトの名無しさん
18/10/31 18:24:52.71 NuHnUQr6a.net
>>311
LINQはともかく、ラムダ式は必須の知識でしょうね。
少なくとも使えるとコードの書き方に大きな差が出るのは間違いない
ただ、デリゲート自体が初心者には理解しづらい概念とも思うので
よく分からない場合は固執せず後回しにした方がいいかもしれないね
本質的にはそんなに難しい話じゃないから、最初分からなくても時間が解決するはず
322:デフォルトの名無しさん
18/10/31 18:35:27.38 hTEse2SW0.net
>>313
移植するとき面倒だから使わないで
323:デフォルトの名無しさん
18/10/31 18:45:54.15 kfZUY5yUM.net
LINQもRxも他言語に移植されまくりだが
324:デフォルトの名無しさん
18/10/31 19:35:13.26 VqQq8o9J0.net
>>310
へえ、ラムダ式はデリゲートが基本にあるのか
325:デフォルトの名無しさん
18/10/31 20:19:37.23 hVPInHiK0.net
あるいは匿名メソッドを指して言ってるとか
記述が簡潔というのもあるけど肝はクロージャではなかろか
326:デフォルトの名無しさん
18/10/31 20:57:39.60 yW33Sn/GM.net
お前の知ってる言語とは限らんぞ
クソ会社特有の独自スクリプトとかな
327:デフォルトの名無しさん
18/10/31 21:09:44.33 N9TdgOC+0.net
>>315
MJD? KWSK