X



ふらっと C#,C♯,C#(初心者用) Part131 [無断転載禁止]©2ch.net

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
垢版 |
2017/09/08(金) 18:12:11.06ID:Ej7G00WU
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part130
https://mevius.2ch.net/test/read.cgi/tech/1500327645/
■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1492843013/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
2017/09/08(金) 21:39:46.11ID:mcCYyLIS
>>1

ボーリング処理だったか..
2017/09/08(金) 21:41:20.91ID:13cy/HVm
そうそうw
ボーリング処理ってなんだよ
わかるかよ

957 名前:デフォルトの名無しさん (ブーイモ MMba-d5PD)[sage] 投稿日:2017/09/07(木) 16:48:04.48 ID:CjGXGOTyM [2/2]
1秒毎にボーリング処理するなかであるクラスのメソッドを呼び出す場合、毎回newするのは悪手ですか?staticが基本でしょうか?
2017/09/08(金) 21:44:51.40ID:13cy/HVm
答え

普通のstaticで済む用途ならstaticで書いたほうがいい
負荷やリソースじゃなくて毎回newする意味がない

sin計算するとして毎回Mathインスタンスをnewしなくてはいけない設計だったら糞だなって思う
2017/09/08(金) 21:52:15.93ID:nZ7nhjDi
前スレ >>968 の ID:VpThhHIU0 さん。

助かりました。ありがとう。
その例外メッセージ後半が目に入っていませんでした。。おバカでした。

後半の方法で対応できたのですが。
この方法で派生先クラスをシリアライズすると、クラスの情報も一緒に出力されるんですね。
出力しない方法があったら知りたいです。もっと探せば見つかるかなあ。
2017/09/08(金) 22:04:57.94ID:5liNTHI5
前スレ>>975
> 1分以上止まっちゃってたことあるよ
その時の.Net Frameworkのバージョンいくつだったんだろ。
今はバックグラウンドGCとか、GCも改良されてて長期間止まり難くなってるけど。
2017/09/08(金) 22:10:04.29ID:5liNTHI5
改良されたとは言っても、全く止まらない訳じゃないから、
数100msecでも止まって欲しくない場合は、やっぱり手動でGCを制御する必要があるけどね。
2017/09/08(金) 22:45:19.27ID:Ej7G00WU
>>4
答になってないよw
staticで済む用途ならstaticで書いたほうがいい、ではなくてそれはstaticで書かなきゃだめw

最初から言ってるように、毎回newするのと対立する方法は、
フィールドでインスタンスを持っておこくと。
2017/09/08(金) 23:26:37.19ID:13cy/HVm
>>8

>普通のstaticで済む用途なら
2017/09/08(金) 23:50:16.96ID:Ej7G00WU
>>9
意味が分からない

普通であろうがなかろうが、staticで書けるメソッドをインスタンスメソッドで書く意味はないし
やってはダメだろうに
2017/09/08(金) 23:53:51.95ID:mcCYyLIS
気分はstaticになってきたな
2017/09/09(土) 02:26:05.00ID:QZscGhnQ
staticおじさんがまた大勝利してしまったと聞いて
2017/09/09(土) 03:16:09.56ID:ZyaEKkZw
前すれワッチョイとかいうのだったんだな
2chのシステムよく知らんので普通のスレで立てちゃったよ
やり方知らんしw

気に入らなかったら別のスレ立ててね
2017/09/09(土) 03:27:48.28ID:Dk6TKP7N
1月強で1000行くんだから我慢して使い切れよ
2017/09/09(土) 06:30:41.62ID:mbeKZ08U
おまいらに真実を話す。ポーリングって確かに打ったんだわ。スマホが勝手にボーリングに変換してたんだわ
ATOKあほすぎんだろ
2017/09/09(土) 08:37:40.24ID:GUslkcWv
変換はgoogleのが絶対いいな
流行りのワードも出てくるし
これ以外考えられないって性能になっちゃってないか?
2017/09/09(土) 10:04:18.06ID:m2qj4yLN
インスタンスをキープしたいのなら、ポーリングのクラスにフィールド設定してそこに置けば済むわけでstatic classは有り得ないわな
static classはグローバル参照がどうしても必要な設定値とか、拡張メソッドとか、Mathのようなライブラリで使うもので
不用意に使うとろくな事がない代物だ
18デフォルトの名無しさん
垢版 |
2017/09/09(土) 10:20:42.56ID:6JP7a1zU
>>5
DataContractSerializer系じゃ無理なはず
飽くまでシリアライザなんでデシリアライズできなきゃならない
型情報が無くなったら元のどの型にデシリアライズすればいいか分からなくなっちゃう
2017/09/09(土) 10:39:45.84ID:IbIBfPO7
それでも書いた処理によってガベコレまでの一時メモリリークは起こるので強制ガベコレの管理はどうせ必要になる

誰かのライブラリ使ってて中がブラックボックスだったときにガベコレまでの一時メモリリークは気づけない

staticで変数用意してもそれがすべてと言い切れないなら意味がない
無駄な努力じゃねーかな?
2017/09/09(土) 10:42:06.00ID:bgDvHBVU
>>17
だいたいあっているけどstaticにしようとしていたのはメソッド
2017/09/09(土) 11:56:12.29ID:usm4kYFG
ライブラリだったら内部の構造は考えられずガンガン使われるから
ポーリングクラスが1000個とか作られてつかえねーなって言われる
だったらstaticな要素にしといたほうがいい
2017/09/09(土) 13:29:46.77ID:WZb5jfgG
なんか昨日から変なところでstatic使えとか意味不明なこと言ってる人がいるけど、
Cのstatic付きのローカル変数と勘違いしてないか?w

それC#にはないよ
VBにはあるけどねw
2017/09/09(土) 13:49:42.28ID:mQdlpUO1
>>22
何の話をしているんだ
元の質問が別のclass内のメソッドを呼びたいが1秒ごとに呼び出すのに毎回インスタンスを作りたくないので
そのメソッドをstaticにしてインスタンス作らずに呼べるようにした方がいいかってものだった
だから上の方でそのインスタンスをフィールドで持っておけば済むって話になってんの
2017/09/09(土) 14:06:55.82ID:WZb5jfgG
>>23
だから、(これは質問者の質問のせいでもあるけど)話の最初からstaticなんて
まったく関係ない。そんなことは機能かれ俺自身が言ってるのよ

それとは別に、>>19とか>>21とか読むと、C#にもCのstaticなローカル変数が存在すると
勘違いしてるんじゃないかと
2017/09/09(土) 14:17:10.91ID:yizOjyJK
質問でも回答でもない雑談なら他でやれよ
2017/09/09(土) 15:31:26.30ID:mbeKZ08U
>>23
わかりやすい
2017/09/09(土) 15:55:44.10ID:usm4kYFG
>>24
誰もそんなことは言ってないのに
勝手にそう思ってるのはよくわかった

質問はstaticメソッドの話をしてるのはみんなわかってる
2017/09/09(土) 17:51:48.60ID:f8+hvMV6
>>27
じゃあ何の話をしてるの?
率直に言って>>21は何を言ってるのかさっぱり分からん

昨日から言ってるし>>23も言ってるように、そももも元の質問者の話とstaticは何の関係もない。
恐らく質問者は何か勘違いしてstaticと書いてるだけ
2017/09/09(土) 18:18:19.52ID:usm4kYFG
>>28
え?

憶測だけど
イベント内で毎回生成される
var a=new ClassA();
a.Do(b);

staticメソッドのClassA.Do(b)にしようかということじゃないのか?
;初心者の質問なんてその程度だろ
どこからc++のstaticと勘違いしてるなんて変な主張が出てくるのかわからない
2017/09/09(土) 18:24:38.82ID:usm4kYFG
インスタンスのフィールドでaを持てって話も出てるけど
そもそもインスタンス作る必要もないものをわざわざ保存しておく意味はないよ

それがなぜだか生成コストの話になりそっちに付き合って話したら妙な揚げ足取りみたいのに
絡まれていいことないわ
2017/09/09(土) 18:28:32.66ID:f8+hvMV6
>>29
何周遅れの話をしてるのよ。疲れるわ

だから、staticで書けるメソッドならstaticで書くのが当たり前で、
それをあえてインスタンスメソッドとして書くという選択肢は存在しない。

何が「え?」だよ。こっちが言いたいよw
2017/09/09(土) 18:30:13.39ID:usm4kYFG
だからそこでおわってんだよ
でなんでc++のstaticが出てきたり
質問者が勘違いしてstaticって言ってるみたいなトンチンカンな話になるのかと
もうおとなしくしてればいいのに
2017/09/09(土) 18:32:50.82ID:usm4kYFG
>昨日から言ってるし>>23も言ってるように、そももも元の質問者の話とstaticは何の関係もない。
>恐らく質問者は何か勘違いしてstaticと書いてるだけ

こういうこと書いててよく言えるな
2017/09/09(土) 18:34:06.78ID:xrlCaMPb
「staticは関係ない」って書いている奴はC#の前に日本語勉強しろよ
2017/09/09(土) 18:34:21.92ID:f8+hvMV6
なんか日本語「も」不自由な人みたいだね
何言ってるのかさっぱり分からんw
2017/09/09(土) 18:35:50.91ID:usm4kYFG
>>35

じゃあ
>>28の説明をまともにしてみろ
2017/09/09(土) 19:41:37.58ID:FYc/xt6+
荒れてるので、名のりにくいのですが、私が質問者です。
>>23
この記載で、最適解はこれだと認識しました。

で、質問した時点では
>>29の憶測通り。

とりあえず個人的にはもう納得してるので、これで終わりにしてほしい。

皆さんありがとう
2017/09/09(土) 19:47:52.23ID:m2qj4yLN
>>31
それは大間違い。staticで書かなくても良いものは極力インスタンスメソッドにするべきだな
2017/09/09(土) 19:52:01.12ID:GUslkcWv
>>38
理由を書けよw
いったいどういう育ち方したらそんな投げっぱなしのジャーマンなんだ?
2017/09/09(土) 19:55:18.70ID:G5uGYTR5
>>38-39
いつまで続けてるの?
質問者が終了を宣言してんだよ
2017/09/09(土) 19:59:42.49ID:GUslkcWv
>>40
は?お前はどうしたいの?
2017/09/09(土) 20:03:34.87ID:suZLJloi
ワッチョイが無いとこの一連全部同一人物なんじゃないのと勘ぐっちゃうわ
2017/09/09(土) 20:29:10.27ID:f8+hvMV6
>>39
>>38は釣りじゃなく本気で言ってるなら(恐らくそうw)
関わっても時間の無駄にしかならないお方だ。暇つぶしにはいいかもしれないけどw

時々対面の世界でもこういうガチで盛大な勘違いをやらかしてる人がいるから困るよ本当w
2017/09/09(土) 21:30:45.08ID:usm4kYFG
前に会ったRuby使いはクラスメソッド(c#のstaticメソッド)は極力使わないで
インスタンスメソッドを使うべきだって言ってたのを思い出した

何らかの理由があるんだろうけど無視した
2017/09/09(土) 22:09:15.56ID:wzTKK5fz
どっちがいいって話じゃないけど、あとで実装を差し替える可能性があるなら
クラスメソッドを直接使わずにシングルトンにするって手法はある。
2017/09/09(土) 22:28:01.73ID:m2qj4yLN
インスタンスってのは主に多重実行のための仕組みなんだから、ある程度適当に作ってもスレッドセーフな物が出来上がる
staticで作るなら、複数のスレッドから同時多数アクセスが有っても大丈夫なように組まないといけないし
それが面倒だから極力スタティックは避けるべきだと思うんだがな
47デフォルトの名無しさん
垢版 |
2017/09/09(土) 23:17:45.56ID:nwiyZr1T
Taskでも内部でThreadPoolを使うから
(ThreadPool.SetMinThreads(実行したい数))は必要だけど
ThreadPool実行で実行して待ち合わせ
とTaskで実行して、Task.WhenAll
は何が違いますか?
そもそも、ThreadPoolは必要ないですけど気になったので、質問します。
2017/09/09(土) 23:20:05.29ID:5C7c1QNW
極力staticメソッドを使うという方針を取ると
関数用クラスとデータ用クラスに分かれやすくオブジェクト指向の考え方からは離れやすい
OO的にはアンチパターンになる可能性もあるけどトレードオフを理解して方針を決めればいいと思うよ
2017/09/10(日) 00:19:09.54ID:0Cs8J57s
>>18
そうですね。
今回の場合、相手がアレで。向こうが予期しない要素を含むデータを送ると不正終了するらしく。
最初の質問前に時間がなかったのでデータクラスを完全に2つに分けて作ってしのいでたのですが、そのままにするしかないかも。。
50デフォルトの名無しさん
垢版 |
2017/09/10(日) 00:57:09.14ID:pV2ta4X5
>>47
既定ではスレッドプール使うってだけでTaskが後ろで何使うかは規定されてない
あとWhenAllはasync/await向けに作られてる
51デフォルトの名無しさん
垢版 |
2017/09/10(日) 01:13:53.87ID:dSp+Ezdg
>>50
規定なら同じですか?
async/await使わないならthread poolの方が良いのかな?
52デフォルトの名無しさん
垢版 |
2017/09/10(日) 01:40:04.99ID:pV2ta4X5
>>49
Json扱うならJson.NET使うのが良いよ
基本ライブラリ以外使っちゃダメとか言われてるならSystem.Web.Script.Serialization名前空間
2017/09/10(日) 01:42:59.22ID:MMSQKBM8
>>51
いや普通にTask実行Task.WhenAllで良いんじゃね
54デフォルトの名無しさん
垢版 |
2017/09/10(日) 02:11:55.78ID:dSp+Ezdg
>> 53
やっぱり、メソッド分けてasync/await使いたくなる気がする。
ThreadPoolの方がメソッド分けしない糞コードでも書きやすい。
2017/09/10(日) 03:56:30.01ID:6GasKA+m
わざわざ低位のThreadPoolを使うメリット無いだろ。
ちなみにTaskの方は生成時のオプションでThreadPool使わず専用スレッドを割り当てたりも出来る。
2017/09/10(日) 04:49:01.84ID:hdyOlPd+
超低レベルな質問ですみません
wpfで実験しています
ボタンを押すとLabelが回転するというテストです

ボタンはトグル処理してあって押すと回転、もう一度押すと止まっるという作動です

int band = 0;
DispatcherTimer tim = new DispatcherTimer();
public void Rotet()
{
label01.Content = "自動回転";
tim.Start();
tim.Interval = TimeSpan.FromMilliseconds(10);
tim.Tick += Tim_Tick1;
}
public void Rotstop()
{
label01.Content = "自動回転停止";
tim.Stop();
}
2017/09/10(日) 04:49:17.97ID:hdyOlPd+
public void Tim_Tick1(object sender, EventArgs e)
{

band++;
label01.RenderTransform = new RotateTransform
{
Angle = band
};
}

10ミリ秒毎に1度回転するという作動を希望しています
が、トグルボタンを押してRotetを呼び出すたびに、band++での増加量が加算されてしまいます
5回Rotetを呼び出すと10ミリ秒毎に5増えます
増加量は常に1であって欲しいのですが、これの根本原因はなんでしょうか?
2017/09/10(日) 05:21:45.40ID:6GasKA+m
>>56
Tickイベントのハンドラ登録だけを毎回してるから。
登録は1度だけにするか、毎回解除もするようにしないと。
後、質問とは関係ないけど、タイマーを開始するタイミングもおかしい。
2017/09/10(日) 07:49:42.90ID:hdyOlPd+
>>58
どうもありがとうございます
今VS立ち上げられないので確認はあとになりますが、教えていただいた内容は把握できました
後、たしかにstartのタイミングおかしかったですね
こっちも直してみます

どうもありがとうございました
2017/09/10(日) 08:59:57.01ID:hdyOlPd+
>>58
今VS2017C#で修正確認できました
ありがとうございました
61デフォルトの名無しさん
垢版 |
2017/09/10(日) 11:02:35.14ID:u2dcVsCu
>>55
既存のメソッドに手を加えずtaskにできますか?
62デフォルトの名無しさん
垢版 |
2017/09/10(日) 18:43:13.56ID:yZp0NmX3
Macで開発されている方がいましたら環境を教えて欲しいです
visual studio for macはwindowsアプリを作らなければ不便はありませんか?
2017/09/11(月) 03:02:17.61ID:OjrsKbwz
>>61
TaskでもThreadPoolでもThreadでも同じだけど、
既存メソッドがスレッドセーフでないなら、一般的なマルチスレッド対策は必要。
64デフォルトの名無しさん
垢版 |
2017/09/11(月) 04:22:03.43ID:xOd8/hnB
インターフェイス(ICollection)を実装しています。
例えば、.Clear() メソッドを実装するときに、

public void ICollection<String[]>.Clear()
{

のように、public を付けると、怒られます。
修飾子 public がこの項目に対して有効ではありません。

合理的な理由でもあるのでしょうか。
65デフォルトの名無しさん
垢版 |
2017/09/11(月) 06:00:48.58ID:dDtMImyT
>>63
ThreadPoolが長時間処理に向かないって書いてあったけど、それも嘘だと思う。
GUIアプリとかゲームなら表示を妨げるけど、データ処理だけやるなら変わらない。
2017/09/11(月) 08:29:53.19ID:qHOAMFMh
>>65
何言ってるのかさっぱりわからんね
2017/09/11(月) 08:52:59.26ID:OjrsKbwz
>>65
それはThreadPoolは実行されるスレッド数を少なく抑えて処理を順番にこなすための仕組みだから。
長時間の処理だとThreadPoolの少ない実行スレッドの1つを占有してしまう。
ThreadPoolの実行スレッド数の上限を増やしても良いけど、それより専用のスレッドを割り当てたら方が良いだろう。
Taskの場合は、LongRunningオプションを付ければ、ThreadPoolではなく専用スレッドになる。
2017/09/11(月) 09:22:14.90ID:/+/7clo/
>>64
publicを付けたければICollection<>.を外せばいい。
インターフェイス名.メソッド名 の形のメソッド定義はインターフェイスメンバの明示的実装といって、
クラスとして見ると不可視だけどインターフェイスを通せばアクセスできるメソッド定義方式。
なのでpublicでもprivateでもないということでアクセスレベルを指定できない。
69デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:29:45.93ID:dDtMImyT
>>67
その処理以外やらないなら、どうでもよくね?
70デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:44:26.27ID:pmpZkIs4
まあ小さいプログラムで全部把握できて問題ないと判断できるなら好きにすればいいだろ
2017/09/11(月) 11:38:40.59ID:8iugXZk3
書いてあった

これ馬鹿の証な
72デフォルトの名無しさん
垢版 |
2017/09/11(月) 12:59:45.47ID:dDtMImyT
馬鹿でも使えるってのは重要
async/awaitなんて頭の良い奴しか使えない
しかも必要のない簡単なレベルの処理もある
73デフォルトの名無しさん
垢版 |
2017/09/11(月) 15:25:28.66ID:4atU11H8
C#は馬鹿でもできちゃうけど
逆引きサンプルを適当に見つけてきてコピペするだけで完了
でもVC#使わないとGUIが作れない
VC#が作る雛形何なのかすら知らない
一からテキストエディタだけで作れるのはコマンドラインツールぐらいしかできない
2017/09/11(月) 15:41:22.50ID:n0q9WWLR
label内に複数行を表示すると、表示領域外にまで改行された行が表示されず、上部の行だけが表示されます
最下行基準で、入り切らない部分は上部の行をスクロールアウトさせて表示させたいのですがやり方が検索しても上手く探せませんでした
どういう方法がありますか?
2017/09/11(月) 16:01:55.79ID:D2XcMjyP
>>73
お前CLIでWebアプリ作れねーのかよ
2017/09/11(月) 16:17:45.12ID:1TpoY8sm
>>74
OnPaintをオーバーライドしてDrawString使って自分で実装するしかないでしょう
2017/09/11(月) 17:37:45.41ID:n0q9WWLR
>>76
ありがとうございます
自分にはかなり無理なんでtextboxの方でどうにかしてみます
2017/09/11(月) 18:57:43.16ID:JSNADtu1
リファクタリングしてくれるサービスないかな?
糞長いコード書いて可読性やばいんだわ
2017/09/11(月) 19:02:47.03ID:McMCGXVu
githubに上げてここにURL晒せばみんながボコボコに叩いてくれるよ
2017/09/11(月) 19:10:16.26ID:JSNADtu1
>>79
優しくしてくれないと発狂しそう
81デフォルトの名無しさん
垢版 |
2017/09/11(月) 21:03:26.89ID:9wMrToxf
class A{ public virtual void test(){} }
class B : A{ public override void test(){} }
var b = new B();
b.test();

bからAのtestを呼びたい場合はどうすればいいでしょうか。
2017/09/11(月) 21:11:05.30ID:McMCGXVu
>>81
まっとうな方法はない
MethodInfo使っても無理
ILGeneratorなどで(callvirtでなく)call命令を発行する必要がある
2017/09/11(月) 21:12:50.19ID:1TpoY8sm
>>81
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/base
2017/09/11(月) 21:26:34.21ID:wRb7h9Km
>>81
これを実現したいのって、具体的にどういうケースなの?
差し支えない範囲で用途を教えて
85デフォルトの名無しさん
垢版 |
2017/09/11(月) 21:31:06.84ID:9wMrToxf
>>84
状況によって派生された処理ではなくオリジナルの処理をしたいだけです
2017/09/11(月) 21:35:23.53ID:wRb7h9Km
>>85
それはわかってるよー
その中身を聞いてるんだ
2017/09/11(月) 21:36:40.45ID:zUMWcZ3H
日本語で無駄なやり取りするより>>83みたいにURL1つ貼ってコレ見ろでいいじゃないの
設計がどうのとか言ってもしゃーないし
88デフォルトの名無しさん
垢版 |
2017/09/11(月) 21:41:05.67ID:9wMrToxf
>>83
これを見てもよくわかりません。
メソッドの内部からbaseで基底クラスのメソッドにアクセスできる方法はしっています。
質問は変数bからAのtestを呼ぶ方法です。
2017/09/11(月) 21:45:55.36ID:mdk6iQ5T
できねえから考え方を改めろ
2017/09/11(月) 21:56:12.41ID:1TpoY8sm
>>88
Bにベースクラスのtestを呼ぶメソッドが用意されていなければ普通の方法では不可能でしょう
91デフォルトの名無しさん
垢版 |
2017/09/11(月) 21:58:07.40ID:9wMrToxf
>>90
その方法にすることにします
2017/09/11(月) 22:04:35.15ID:S1tKpOaB
>>52
それだ! < System.Web.Script.Serialization
ありがとう。
2017/09/11(月) 22:23:45.62ID:wRb7h9Km
overrideをnewに変えてBaseクラスにキャストしてから使えば
同じメソッド名でBaseクラスのを呼び出せる
2017/09/11(月) 23:37:21.39ID:adY5bmZu
overrideしなきゃいいだけじゃないの?
95デフォルトの名無しさん
垢版 |
2017/09/11(月) 23:48:23.10ID:xOd8/hnB
>>68
とてもわかりやすく有難うございました!
インターフェイスに実装方法が二種類あるとは知りませんでした。
明示的ではない方で実装したいと思います。

結構ぐぐったんですが、それについて述べられたページが見つからなかったし、
C#のハンドブックにも載っていなかったことなのでとてもためになりました。
2017/09/12(火) 09:00:44.91ID:EOOe72TQ
○次受けが多いほど退場率が早くなる。高くなる

直受けの50万 客:いつまでもうちにいていいよ
3次受けの50万(客は90万払ってる) 客:短期延長していい?
5次受けの50万(客は150万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ 
長時間労働 高稼働 高スキル要求が多い

フリーランスサイトを運営している零細ITの自称エージェントは労働市場から流れてくる案件を転売してるだけだった。
労働市場に加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む

エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×3 = 言い値50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×1 悪質な言い値で50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - JIETに加入して公表価格で応募できる

eJobgo JIET JISA で検索

優良エージェント・優良サイト

首都圏IT(PE-BANK) クラウドテック プログラマーズ
97デフォルトの名無しさん
垢版 |
2017/09/12(火) 09:41:27.60ID:BNnArjmm
Listのselectで入力された値に応じてPropertyを指定したいのですが、もっとスマートなやり方がありそうなので教えてください
今は↓のように手作業で全パターンをチェックしていて、

class Product {
string Field1 ...
string Field2 ...
...
}

List<Product> list = ...
string input = ...

switch (input) {
case "Field1":
result = list.select(p => p.Field1);
break;

case "Field2":
result = list.select(p => p.Field2);
break;
...
と、続いて長いくて見辛いし手間
}

これを
result = list.select(p => p[input]);
こんな感じで入力された値に応じて返す方法を知りたいです
2017/09/12(火) 10:57:43.00ID:3hDQXbkU
>>97
お前何なの?
初心者じゃねーなら自分で勝手にやれよ
2017/09/12(火) 11:24:21.98ID:0auESU8x
>>98
答えられないなら黙ってればいいのに
100デフォルトの名無しさん
垢版 |
2017/09/12(火) 11:26:42.14ID:FDETfUWp
>>97
Dictionaryは?
101デフォルトの名無しさん
垢版 |
2017/09/12(火) 11:29:54.29ID:FDETfUWp
Enum使う手もあるけど
用途次第
2017/09/12(火) 11:42:24.56ID:3hDQXbkU
>>97
linqは遅いので使わない方法に直す
2017/09/12(火) 12:06:09.15ID:vpJikBX5
>>102
その程度の差が問題になるくらいシビアなパフォーマンスを求められる場合ならばね
2017/09/12(火) 12:23:45.40ID:1FkmH3QI
class Product
{
  string Field1 ...
  string Field2 ...
  ...
  private static Dictionary<string, Func<Product, string>> mSelectorTable
  = new Dictionary<string, Func<Product, string>>()
  {
    {"Field1", p => p.Field1},
    {"Field2", p => p.Field2},
    ...
  }

  public static Func<Product, string> GetSelector(string key)
  { return mSelectorTable[key]; }
}

...

var s = Product.GetSelector(input);
var result = list.select(s);
2017/09/12(火) 12:27:58.67ID:3hDQXbkU
>>103
わざわざ遅い方法で書く必要もないだろ
2017/09/12(火) 12:31:47.09ID:UuTpmvic
また無駄な最適化野郎か
2017/09/12(火) 12:36:22.11ID:vpJikBX5
>>105
わざわざ冗長な方法で書く必要もないだろ
2017/09/12(火) 13:05:09.61ID:02LA08SS
無駄な時間ならいくらでもある人らが語る最適とは…?
2017/09/12(火) 13:11:24.60ID:3hDQXbkU
>>107
でも遅いのは問題だよね
2017/09/12(火) 13:12:12.91ID:3hDQXbkU
わざわざ変な書き方して遅いとか最悪だよね
2017/09/12(火) 14:33:34.10ID:FDETfUWp
>>97
とにかくswitch文をなくしたいならGetPropertyとGetValue
2017/09/12(火) 14:57:46.17ID:vpJikBX5
>>109
その遅さが問題になるくらいシビアなパフォーマンスを求められる場合ならね
2017/09/12(火) 14:58:53.99ID:DYcGerqT
>>110
もしlinq自体を変な書き方と言っているのであれば論外やな
2017/09/12(火) 15:54:15.87ID:PKo4ssy2
車輪やねん
115デフォルトの名無しさん
垢版 |
2017/09/12(火) 16:11:01.84ID:BNnArjmm
>>111
GetPropertyとGetValueで一行で出来ました!ありがとうございます
2017/09/12(火) 17:18:31.24ID:3hDQXbkU
>>113
え?
linq流行ってると思ってるの?
いつリストラされてもおかしくない機能
2017/09/12(火) 17:22:05.97ID:pxacDdSl
絶対構うなよ
2017/09/12(火) 17:33:49.59ID:3hDQXbkU
>>117
単発に言われてもね
2017/09/12(火) 17:42:06.71ID:ZIY9GNtc
Linqはいらないけどイテレーターパターンとλ式は要るよね
2017/09/12(火) 17:44:55.63ID:3hDQXbkU
>>119
俺はいらねぇ
使いたい奴は使えばいい
2017/09/12(火) 17:47:10.30ID:ZIY9GNtc
そうだね
じゃあこの話題は終わりだね
2017/09/12(火) 19:25:39.37ID:DYcGerqT
こいつASP.NET Coreのテンプレ見たら発狂しそうだな
2017/09/12(火) 19:37:32.63ID:DSJ7r+Sb
Linq使わないでどうやってんの?
毎回foreach回してんの?
2017/09/12(火) 19:52:04.69ID:3hDQXbkU
>>123
まあ、初心者には難しいよね
2017/09/12(火) 19:57:40.23ID:ymUUq88t
>>123
荒らしはスルー推奨
2017/09/12(火) 19:59:52.92ID:3hDQXbkU
>>125
単発に言われてもね
2017/09/12(火) 20:06:00.88ID:qnTxA+Nu
誰だアホの逆鱗に触れたのは
責任もって殺しとけよ
2017/09/12(火) 21:29:57.85ID:3hDQXbkU
>>127
単発に言われてもね
2017/09/12(火) 21:36:08.20ID:3hDQXbkU
こういう状況になると必ず単発ばっかりになるよねw
ビビリのくせに発言してんじゃねーよクズがw
2017/09/12(火) 21:44:26.71ID:8OQVQBrq
さすがにここまで幼稚で恥知らずだと引くね
2017/09/12(火) 21:45:04.44ID:JIE9XJ1l
for使っている会社のおっちゃんにforeach楽ですよとそれとなく言ったら、遅いしそれに添字使えねえだろと叱られた
2017/09/12(火) 21:49:02.28ID:3hDQXbkU
>>130
って単発で言うんだ?w
2017/09/12(火) 23:13:52.09ID:ZIY9GNtc
添え字っていつ使うんだ?
2017/09/12(火) 23:34:48.50ID:AR+my0wk
さいて〜
2017/09/12(火) 23:50:16.50ID:gWobfM7L
ID:3hDQXbkU(13)
2017/09/12(火) 23:55:21.70ID:3hDQXbkU
>>135
匿名掲示板でもそんなビビリで大丈夫なのかお前w
137デフォルトの名無しさん
垢版 |
2017/09/13(水) 02:42:40.26ID:LyfBWgxR
C#で使える軽量なWebブラウザコンポーネントを教えてください。
SHDocVwはAxImportしてもレジストリ編集しないとIE7相当でしか動作しないですし、Chromeだとインストールしないといけないので・・・・
exeと同じフォルダにdll置いておくだけで使えるのが欲しいのですが。
2017/09/13(水) 07:55:13.31ID:szmZ8wjk
>>131
foreachってコレクションのアクセス順序保証してるんだっけ?
2017/09/13(水) 08:05:28.36ID:RaLzloEv
質問です。よろしくお願いします。

システムカラーを変数で指定するにはどうしたら良いでしょう?
SystemColors defBGC;
defBGC = SystemColors.ActiveCaption;
簡単に言うと↑のような事をやりたいのですが、宣言ではローカル変数として扱われますが、代入でエラーが出てしまいます
どのようにして代入すればよいのでしょうか?
2017/09/13(水) 08:05:39.55ID:NbPbWVRY
Linqが遅いって言う馬鹿はなんでC#使ってるの?
機械語で直接プログラミングでもしてろw
2017/09/13(水) 08:20:31.29ID:efGCb2+a
>>140
そんな遅さじゃ無いよね?
下手すると10倍ってレベルだし
2017/09/13(水) 08:22:40.72ID:Lhui2ZmI
それがシステムのボトルネックになる場合のみ気にしろ
2017/09/13(水) 08:23:54.63ID:NbPbWVRY
>>141
はあ?
2017/09/13(水) 08:24:37.37ID:KoAlYIGF
10倍君って前にも暴れてたよーなと思ってログ検索したら100倍だった
IBMがどうとか言ってたから多分別人のバカだ
2017/09/13(水) 08:29:18.96ID:efGCb2+a
いや、流石にそこまで遅くなる処理わざわざ使う意味ねーし
俺は遠慮させてもらうわ
2017/09/13(水) 08:32:14.78ID:efGCb2+a
あ、ちょっと気になって
いまもそうなのかなぁと思って前書いたコードでやってみたけど
100倍も有り得る数字出るな
激遅いじゃん
これは普通に使ってると問題出るね
2017/09/13(水) 08:36:51.86ID:NbPbWVRY
>>145-146
そんなに遅いのが嫌なら別の言語やれよ低脳w
2017/09/13(水) 08:37:47.60ID:efGCb2+a
>>147
お前の作るものが欠陥品過ぎて気になってないだけ
2017/09/13(水) 08:40:07.14ID:NbPbWVRY
>>148
どうしてC#使ってるの?ねえ?なんで?w
150144
垢版 |
2017/09/13(水) 08:46:03.62ID:KoAlYIGF
IBMじゃなくてOracleだったわ
統計的結果がどーたらって

もう6年も前の話なんだなあ
いまだにこんなのが湧いてくるくらい、C#ユーザも新陳代謝してるんだな
感慨深い
2017/09/13(水) 08:51:52.43ID:2OL+AYLM
oracle()
2017/09/13(水) 09:00:16.82ID:jUJn8YC2
>>149
10倍も遅くならないから
でもlinqは普通に10倍ぐらいは遅いよ
2017/09/13(水) 09:08:49.90ID:NbPbWVRY
>>152
1ナノ秒が10倍遅いのと1秒が2倍遅いのとでは10倍の方が結果速いって例えは理解できる?
Linqは前者。てーのーくんにはわからないだろうな〜w
154デフォルトの名無しさん
垢版 |
2017/09/13(水) 09:10:16.92ID:NSWcHcOm
>>139
SystemColorsの各プロパティが返すのはColor型だよ
システム色だけを代入できる型ってのはSystem.Drawingには存在しない
全部Color構造体で扱われる
2017/09/13(水) 09:14:16.27ID:jUJn8YC2
>>153
問題は同じ処理だとしてもネックになる箇所で同じ処理でも別の処理書かなきゃいけないじゃん
それも面倒だし
全体に散りばめたときに10倍っていうと流石に問題が起きる遅さだよね

linq禁止のがぶっちゃけ楽だねぇ
2017/09/13(水) 09:18:11.66ID:AIHl3Jwd
>>150
C#は入りやすいし、色々作りやすいから好きだわ
GUIもちゃと作れるし、Unityでゲームも作れる
今後はxamarinでアプリ開発もできるようになるし
やったねC#!
2017/09/13(水) 09:22:17.18ID:uHFm/dQd
>>155
コード晒せ
2017/09/13(水) 09:24:03.36ID:RaLzloEv
>>154
ありがとうございます
できました
2017/09/13(水) 09:26:53.05ID:NbPbWVRY
>>155
え?処理のかき分けが面倒なんだw
Linq禁止する方が面倒なのにな〜wてーのーくんは世界の人々がどうしてLinq使ってるか考えたことないの?ねえ?
2017/09/13(水) 09:50:09.34ID:jUJn8YC2
>>159
だってかき分けの工数見積りに入ってねーし
2017/09/13(水) 10:04:51.90ID:a0xLHUjR
http://qiita.com/wilfrem/items/0cbece30e278353eb941
LINQが遅いと言われてたので速度比較してみた

結論
LINQは遅いっていうのは、ボトルネックの考え方的に間違いである。
ただし、LINQの一部関数は遅いので改良の余地はありそう。
162デフォルトの名無しさん
垢版 |
2017/09/13(水) 10:07:49.89ID:MBL3+jC1
売国安倍は憲法改正で国民主権と基本的人権
を奪うつもりだ。 ← 民主主義の崩壊

http://www.data-max.co.jp/280113_ymh_02/

↑ マスコミは 9条しか報道しないが 自民案
の真の恐怖は21条など言論の自由を奪うこと

http://blog.goo.ne.jp/kimito39/e/ec37220f64a8e1d6ed732dd0ab95cbf0

↑超危険な緊急事態条項で人権無視の内閣独裁に!

https://www.youtube.com/watch?v=h9x2n5CKhn8

上のビデオで 自民党は 国民に基本的人権
は必要ないと怖いことを平気で主張。

http://xn--nyqy26a13k.jp/archives/31687

↑ 都民ファーストも安倍と同じく 憲法改正で 人権
無視の大日本帝国憲法に戻すつもりだから
絶対に投票してはだめだ。 民主主義が崩壊する

http://blog.goo.ne.jp/ngc2497/e/8899f65988fe0f35496934dc972e2489

↑ ネトウヨ= 安倍サポーター工作員はネットで国民を騙す。

https://dot.asahi.com/aera/2016071100108.html?page=3
http://blog.goo.ne.jp/kimito39/e/c0dd73d58121b6446cf4165c96ebb674

↑ 安倍自民を操るカルト右翼「日本会議」は国民主権否定。
国民投票や選挙では自民党、維新、小池新党に絶対に入れるな。
2017/09/13(水) 10:20:15.53ID:NbPbWVRY
>>160
はー?そんなんだから底辺なだよ君はw
もっとさぁ勉強してきなさい
2017/09/13(水) 10:26:50.59ID:jUJn8YC2
>>163
実際二度手間じゃん
わざわざ遅い処理使う意味もよくわかんないし
2017/09/13(水) 10:28:43.32ID:uHFm/dQd
>>164
コード晒せ
2017/09/13(水) 10:35:04.05ID:NbPbWVRY
>>164
はあ?二度手間?これだから低脳はw
自分の考えとやってる事が手間になってるという現実にはやく気付こう?ね?
2017/09/13(水) 10:40:39.80ID:krw6K623
>>166
は?実際二度手間じゃん
使わなければそれに悩むこともないし
しかもこれを使ったからといってそんなに手間が減るわけじゃないよ

でも、10倍遅いんだよ
リスクばっかり高いよね
2017/09/13(水) 10:45:51.78ID:+YTT5det
>>166
君も自分が確信犯で荒らしてる寂しいバカの共犯にとっくになってることに早く気づけ。
っていうかこんな幼稚なバカ相手にして何が楽しいんだ
2017/09/13(水) 10:45:59.33ID:NbPbWVRY
>>167
使い分けができない底辺プログラマーですって自己紹介してるようなものだよ?
それとも自分はそうですって認めちゃってるのかな??
2017/09/13(水) 10:47:58.15ID:krw6K623
>>169
え?どうやって使い分けるの?
見積りに必要なのに見積り時に出てこないじゃん
かき分けの工数が
2017/09/13(水) 10:50:09.53ID:9sNAvSM9
>>138
これ見る限り大丈夫じゃね

https://msdn.microsoft.com/ja-jp/library/aa664754(v=vs.71).aspx
>foreach が配列の要素を走査する順序は、次のように定義されます。1 次元配列の場合、要素はインデックス 0 から始まってインデックス Length ? 1 で終わるインデックスの昇順に走査されます。
>多次元配列の場合、要素は、最初に右端の次元のインデックスが増加し、次にその左側の次元のインデックスが増加し、さらにその左側の次元のインデックスが増加する、というように走査されます。
2017/09/13(水) 10:51:21.99ID:NbPbWVRY
>>170
あ、やっぱり出来ないんだね
その歳で可哀想
2017/09/13(水) 11:14:56.36ID:rN6iPy1t
やばすぎワロリーヌ
2017/09/13(水) 11:21:14.85ID:dr0a1QEl
$"{num:D4}"
こういうふうに書式を指定して数字を表示したいときに、この4の部分を変数に変えるのってどうすればいいの?
2017/09/13(水) 11:46:51.07ID:szmZ8wjk
>>171
なる程、大丈夫そうだね。サンクス
176デフォルトの名無しさん
垢版 |
2017/09/13(水) 11:47:30.22ID:NSWcHcOm
>>174
多分無理
$"{num.ToString("D"+x)}"
みたいにそこだけToStringすれば?
2017/09/13(水) 11:48:53.98ID:krw6K623
>>172
ん?でどうやるの?
答えられないのに煽りだけは一丁前なの?
2017/09/13(水) 11:54:11.91ID:NbPbWVRY
>>177
あれあれ?
さっきからてーのーくんの言ってること全部ブーメランしてるよ
2017/09/13(水) 12:04:54.00ID:krw6K623
>>178
は?どこが?
このままだと負けちゃうからって変なこと言い出すなよw
2017/09/13(水) 12:08:41.80ID:+9qu6YUz
キチガイにさわんなすな
2017/09/13(水) 12:08:44.02ID:NbPbWVRY
>>179
負けるとか何言ってるのかな?本当に頭悪いね〜w
使い分けができないのを言い訳にしないでまずはちゃんと勉強しなさい
2017/09/13(水) 12:23:06.88ID:krw6K623
まあ、俺をやっつけたところでlinqがおっそいことは変わらないけどね

お前の作るものって全部ナチュラルに10倍遅いだろ
今時のPCだから大丈夫って?
いやー、俺の使うアプリでは遠慮して欲しいなw
メモ帳とかお前が作ると普通に起動に10倍かかるんだろ?w
2017/09/13(水) 12:23:18.90ID:+YTT5det
>>175
これ、前にも話題になったけど、
foreachが列挙する順序はコレクションの列挙子の実装に依存するよ。

>>171の記述は配列についてのもの
2017/09/13(水) 12:28:02.59ID:NbPbWVRY
>>182
Linq使うと起動に10倍も時間かかるんですか〜?w
無知を曝け出して恥ずかしくないの?あ、低脳だから気付いてないのかw
2017/09/13(水) 12:30:29.30ID:X5nLy4IB
private void Form1_Load(object sender, EventArgs e)
とForm1ロード時に実行されるイベントハンドラを
Form1上のボタンが押された時に再度実行したい時に
ボタンクリックのイベントハンドラに
Form1_Lord(null,null);
と書いて呼び出した場合、何かまずいことありますでしょうか?
今のところ、Form1_Load内でthis.はForm1として作動しているようですが、
Form1を明示的に指定したほうが良い気がしますが、
Form1_Lord(null,null);
のnullの部分にどう書くとForm1からの呼び出しという体になりますか?

やりたいことはボタンで追加した配列を再度読み込んでForm1_Lordを動かしたい
いわばForm1のリロードといった感じです

言葉を間違えてるかもしれませんが、よろしくお願いします
2017/09/13(水) 12:38:12.21ID:krw6K623
>>184
でもお前が作ったもんって普通に遅いと思うよ
どこでもそういう遅い処理書いて全体に散りばめちゃってるとネックになるとこしかみないっしょ?
でもロードとかちょっとしたとこでも処理使い回してるから
いまるところで微妙に遅いっしょw
積もり積もってクソ遅いけど比較対象がないからバレにくいって感じ
2017/09/13(水) 12:43:04.63ID:NbPbWVRY
>>186
そうやって事実でないことを思い込みで事実だとして今までの人生を生きてきたのかな?
君の頭の中ではLinq使うと起動が10倍遅いんだもんね〜
そろそろ現実を見ようよ?
2017/09/13(水) 12:52:48.02ID:U2Uyxd+B
マジキチの共演か
ただのプロレスか
2017/09/13(水) 13:04:29.12ID:xEywpSPi
>>185
よくやります。
自分は
Form1_Lord(this,null);
にして、呼ばれ側で e がNULLがどうか見て、自然なイベントか人為的イベントか区別したりしてます。
2017/09/13(水) 13:16:33.38ID:+YTT5det
>>185
>>189
いや、そういう場合は今Form1_Loadに書いている処理を別の独立したメソッドHogeに移して、
FormのLoad、ButtonのClickそれぞれのイベントからHogeが呼ばれるようにしましょうよ

方法はラムダ式使って
this.Load += (s, e) => Hoge();
Button1.Click += (s, e) => Hoge();

でもいいし、ラムダ式が分からないならデザイナで追加したイベントハンドラから
Hogeを呼んでもい
2017/09/13(水) 13:30:55.02ID:PNHj0wS/
決まった目的のために作られたイベントハンドラを別の目的に使うのはよくないよ

すでに書いたコードを実行したいだけなら別のメソッドにしたほうがいいというかすべきだよ
VSのリファクタリングが便利
メソッドにしたい部分を選んでおいてメソッドの抽出を行うだけ
2017/09/13(水) 13:53:58.18ID:efGCb2+a
>>187
いや、普通に遅いだろ
2017/09/13(水) 14:17:03.48ID:NbPbWVRY
>>192
起動が10倍遅いって本気で思ってるんだ?呆れた
2017/09/13(水) 14:23:53.02ID:GgMwIiBh
LINQに親を殺されたマン
2017/09/13(水) 14:35:06.35ID:X5nLy4IB
>>190
>>191
どうもありがとうございます
やはり行儀悪そうですよね。スッキリもしてないし、なんとなくロジカルじゃない。
別メソッドに移してソレを呼び出す方向でいきます

>>189
どうもありがとうございます
「あぁここでリロードかからないから更新されないんだぁ〜」と気づいた時に応急処置的に使ったんですが、
「あ、結構ちゃんと動くw」のでこれ良いのかな?ってっ感じでしたが、人為的呼び出しを区別するという使い方もできるんですね

今は勉強中なので、私には裏技的なものはまだ早いですね
2017/09/13(水) 16:56:12.13ID:bmJBLYID
このスレはラムダ、LINQ、デリゲート禁止なんで
2017/09/13(水) 16:57:28.21ID:szmZ8wjk
あとvarもな
2017/09/13(水) 16:59:44.77ID:Lhui2ZmI
varは宗教戦争
ラムダとlinqは新しい物に適応出来ない老害が喚いてるだけ
2017/09/13(水) 17:02:03.09ID:efGCb2+a
>>198
えーあの遅さを老害で片付けるってなくね?
10倍だぜ10倍
2017/09/13(水) 17:04:29.26ID:NbPbWVRY
頭の遅れも10倍のてーのーくんにはLinqが理解できないらしい
2017/09/13(水) 17:06:30.00ID:cy/tvTzl
することないからと言って初心者の質問スレで雑談するな。他行けよ
2017/09/13(水) 17:08:01.04ID:efGCb2+a
>>201
単発が言っちゃうんだ?
2017/09/13(水) 17:14:08.58ID:NbPbWVRY
Linq使うと起動が10倍遅くなると言う奴が言っちゃうんだ?
2017/09/13(水) 17:16:44.60ID:+9qu6YUz
だからお前らキチガイにさわんなって
205195
垢版 |
2017/09/13(水) 17:53:06.84ID:X5nLy4IB
>>191
うぉおお
リファクタリングスゴイ!
VSの機能もっとよく勉強しよう…
2017/09/13(水) 18:08:41.03ID:e8EuhLKE
DataGridViewのCellを複数行の文字列を表示するComboBoxにしようとしてるんですが
DataTableにComboBoxの列を挿入して
そのDataTableをViewのDataSourceとして使おうと思ってます
ここで困っているのですが、DataTableのComboBoxの列のDataTypeって
System.Stringでいいんでしょうか??
複数行の文字列をList<string>でまとめて渡そうとしてるんですが
「実行時にDataGridViewComboBoxCellの値が有効ではありません」エラーが出ます
DataTypeがListではなくstringなので当たり前の話のようにも思えますが
DataTypeで使えそうなのは他にSystem.Objectくらいで、これもエラーになります
2017/09/13(水) 20:38:23.16ID:DuSqV2km
とりあえずDataTableにはComboBoxは入れない
もうなんというか全体によく分からん
そもそもComboBoxは表示じゃなくて選択のためのコントロールだと思うんだけど
ひょっとして単に数行にわたるデータをドロップダウンで表示したいってこと?
2017/09/13(水) 20:42:22.41ID:bd/NJHl4
逆にDataTableにcomboboxで出力して型を確かめればいいんじゃないの
通常のcomboboxもObject.CollectionでList<string>は直に入れられない
2017/09/13(水) 20:45:55.39ID:e8EuhLKE
>>207
そうそうそんな感じです
2017/09/13(水) 20:48:04.62ID:e8EuhLKE
ComboBoxで複数選択肢を見せて
ユーザがドロップメニューから必要な選択肢を選んだときに
イベントハンドラでそれに対応する値を拾って・・・みたいな感じです
211デフォルトの名無しさん
垢版 |
2017/09/13(水) 21:15:35.44ID:Kb3sPxGP
Unityで以下のコードの[Dependency("Cat")]を
[Dependency("Dog")]や[Dependency("Fox")]のように
文字列の部分を動的に書き換えたいのですが
そのような事は可能でしょうか?

よろしくお願いします

public class Person
{
[Dependency("Cat")] //ここを動的に"Dog"や"Fox"に書き換えたいです
public IAnimal Pet { get; set; }
public void CallPet()
{
Pet.Cry();
}
}
2017/09/13(水) 22:13:13.17ID:DuSqV2km
>>210
もうちょっとシナリオを詳しく
2017/09/13(水) 22:18:36.37ID:DuSqV2km
>>211
http://tnakamura.hatenablog.com/entry/20081029/1225239230
このページ?

> 今回はコードで依存性を注入しました。
> 属性を使った方法では、クラスを切り替えるにはコードを修正して
> リビルドする必要があるので、使う場面は少ないでしょう。
> 次は構成ファイルを使って依存性を注入する予定。
2017/09/13(水) 22:41:09.81ID:n1InxPaY
>>211
アノテーションやめてResolveするときにクラス名渡すようにすればいい
Resolve<T>(String)やBuildUp<T>(T, String)の
Stringのところにマッピング登録時に指定した名前を渡す
2017/09/13(水) 23:01:12.47ID:bDhlqYix
実装の動的切り替えが必要ということはそれはDIパターンでやるべきじゃないってことだよ
せっかく依存性を断ち切った筈なのに選り好みしちゃダメでしょ
設計を間違えてるんだよ
こういう場合は素直にFactoryパターンを使う
FactoryそのものはDIすればOK
2017/09/13(水) 23:54:41.00ID:eqWbXMWw
datagridviewに、エクセルのデータバーみたいなの表示させたいんですが、できますか?
2017/09/14(木) 07:17:51.37ID:33e4FbzQ
>>213
そうです
そのページを見た時に、文字列の部分をXMLファイルに書けば呼ぶクラスを外部のファイルに書けると思ったんです

続きがある事に気付かなかったので合わせて読もうと思います

ありがとうございます
218デフォルトの名無しさん
垢版 |
2017/09/14(木) 14:49:16.54ID:pAH1a2kb
class hoge
{
public int a;
public void func(){++a;}
}
delegate void func();
var h = new hoge();
func f = h.func;
h = null;
f();

この場合f()は正常に実行されますか
hをnullにしただけではGCでお掃除されないのですか
219デフォルトの名無しさん
垢版 |
2017/09/14(木) 15:10:34.66ID:QdQxHVhn
コンソールへの表示についての質問です。
BackgroundColorなどを変更して文字の色を変えるのではなく、文字列自体に色をつけることはできないのでしょうか?

string str = MyColor.Red + "Red";
Console.WriteLine(str);
// 赤色で、Redと表示されるようにしたい
2017/09/14(木) 15:21:48.41ID:srSq6PT2
>>219
https://msdn.microsoft.com/ja-jp/library/cc708913.aspx
ここに書かれていることしかできない
2017/09/14(木) 15:33:35.47ID:FSouChj9
一旦現在の前景色を退避して、前景色を指定した色に変更、文字列出力、もとの前景色に戻す
っていう関数を自分でつくればいい
前景色は
Console.ForegroundColor = ConsoleColor.Red
のようにして変えられる
2017/09/14(木) 15:46:46.92ID:4pNC6iaA
>>218
デリゲート変数がインスタンスhのインスタンスメソッドへのデリゲートを握ってる間は、
間接的にhへの参照を持ってるのと同じことになるみたいよ。
もちろんデリゲート変数じゃなくてイベントでも同じ。
だからこれがリークの原因になることがある。

ググってみたけどMSDNだとここにちょろっと説明があるぐらいだなあ
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/events/how-to-subscribe-to-and-unsubscribe-from-events#unsubscribing
2017/09/14(木) 16:38:29.22ID:XVFgKdZv
>>218
class Hogeにファイナライザ実装して
h=nullの後にGC.Collect()呼べば自分で確かめられるよ
224デフォルトの名無しさん
垢版 |
2017/09/14(木) 17:43:05.75ID:QdQxHVhn
>>220 >>221
ありがとうございます。
2017/09/15(金) 00:42:42.05ID:Ay+AWdB+
配列に要素を追加するべく、検索で調べて、色々やってても希望の作動にならず、散々悩んでたのですが
参考にしたページの

>配列に要素を1つ追加した新しい配列を取得したい場合のメモ。
>
>配列でやる。
>
>int[] array = { 0, 1, 2 };
>int[] result = new int[array.Length + 1];
>result[array.Length] = 3;
>
これで最後にarray = result;
入れてもきませんよね?
初心者の私が文句言うわけじゃないですが、半日悩んでしまった
追加した分しか表示されないぃ〜とw
2017/09/15(金) 02:16:45.02ID:kDBNGlTT
result[array.Length] = 3の前か後ろにArray.Copy当たりが抜けているんだろうが
配列1 = 配列2
みたいな代入はまずやらない
2017/09/15(金) 04:20:57.10ID:Ay+AWdB+
そゆことでした
他のページ見て気づきました

このコードで行くと

int[] array = { 0, 1, 2 };
int[] result = new int[array.Length + 1];
array.CopyTo(result,0);
result[array.Length] = 3;
で行けたのでした

で今気づいたのですが、実装はstring[]だったんですが
要素数が違うもので代入しても大丈夫…なんですよね?
エラーも出ないし
arrayが全くresultと要素数含めておなじになると
2017/09/15(金) 04:39:07.14ID:pokoDkL3
質問内容と変わっちゃうけど、動的に配列使うなら、Listを使った方がいいような
Arrayにしないといけないなら、そのときだけToArray使えばいいし
2017/09/15(金) 08:11:43.44ID:eL7tpeWb
でもLinqまで使うと起動が10倍遅い君が暴れだすから気をつけろ
2017/09/15(金) 08:21:21.03ID:8bT15OBL
起動時間が気になるならUWP使えばいいのにな
ライブラリをスタティックリンクで、使わないクラスは実行ファイルから取り除かれる
だから笑っちまうほど起動は高速だ
2017/09/15(金) 11:32:01.43ID:E70gGXQb
そういえば前スレでもLINQが遅い遅い言ってるのいたけど同じ奴かな
Stack OverFlowの中の人が遅いからusing System.Linqを根こそぎ消したとか言ってたけど、
その情報のソース聞いても教えてくれなかった
2017/09/15(金) 11:58:09.79ID:U5HKHjh0
>>231
そんな細かい情報知らないよ
俺は自分が試したことしか言わない系
2017/09/15(金) 12:03:46.69ID:U5HKHjh0
しかも英語読めないのでソースに英語サイト紹介されても無視するのでよろ
2017/09/15(金) 12:13:29.77ID:Y21IVLhl
根こそぎ消したのはEFだろ
あれもいちおLinqな
2017/09/15(金) 12:16:10.74ID:2JmbV9iR
>>227
まず参照型がどういうものか理解した方がいいね。
配列は参照型。

参照型の変数に入っている値はオブジェクトの参照(とりあえずオブジェクトのメモリー上の位置を表す値だと思えばいい)
であってオブジェクトそのものではない。

array = result;
だからこれは、変数resultの中に入ってる「配列への参照(位置情報)」をarrayにコピーしてるだけ。

webで言えばarrayやresulに入ってる値はただのURIであってドキュメントやファイルそのものではない。

https://msdn.microsoft.com/ja-jp/library/cc406735.aspx
2017/09/15(金) 12:21:40.65ID:eL7tpeWb
Linq使うとプログラムの起動が10倍遅いソースはまだ?
2017/09/15(金) 13:11:40.52ID:U5HKHjh0
>>236
自分で測ってみれば?
テストプログラムじゃなくて会社で納品するようなプログラムでやってみるのオススメ
2017/09/15(金) 13:29:37.48ID:eL7tpeWb
>>237
測ってみても起動に10倍も遅くならないからソース出せよ
2017/09/15(金) 13:36:18.08ID:48fogf69
>>235
stringも参照型なので、そこだけだとその人はともかく変に勘違いする初心者もいるかもしれない
http://okwakatta.net/topic/topic051.html
このサイトが分かりやすいと思った
>>228
var array = new List<string>(new string[] { "0", "1", "2" });
array.Add("3");//要素の追加
string[] result = array.ToArray();//string[] に変換
こんな感じだよな
参照型に同じ型代入するのはだめじゃないけどなんか気持ち悪い
2017/09/15(金) 13:38:43.47ID:DZnU5fjo
>>238
マジで
10倍が控えめに見えるぐらいの数字出るけど?
2017/09/15(金) 13:46:22.35ID:eL7tpeWb
>>240
その根拠を見せてみろ
ん?どうした?はやくしろよ
2017/09/15(金) 14:04:27.63ID:DZnU5fjo
>>241
いいよ別にw
お前が納得したってしなくたってw
俺の人生にはなんの肥やしにもならない
ただ、お前の作るプログラムはナチュラルに遅いw
2017/09/15(金) 14:06:57.75ID:eL7tpeWb
>>242
はい逃げた
2017/09/15(金) 14:09:01.17ID:DZnU5fjo
>>243
ハイハイw
逃げるw逃げるw
2017/09/15(金) 14:17:25.98ID:eL7tpeWb
>>244
プログラムの起動が10倍遅いって嘘を喚いても誰も信じてないんだよ?可哀想
2017/09/15(金) 14:34:30.37ID:DZnU5fjo
>>245
いや、お前の作るものは遅いだろ
2017/09/15(金) 14:46:47.67ID:eL7tpeWb
>>246
いや全然?
起動が10倍遅いとか言っちゃう頭悪い底辺の方が遅いよ。みんなそう思ってる
2017/09/15(金) 14:49:09.47ID:DZnU5fjo
>>247
じゃあ、ここまで食い下がることないじゃん
満足しとけよw
俺は使わないけどねw
2017/09/15(金) 14:49:55.78ID:eL7tpeWb
>>248
頭悪い底辺プログラマーを助けてあげたいんだよ?だからまず自分が間違ってるってことに気付こうね
2017/09/15(金) 14:58:01.14ID:DZnU5fjo
>>249
そんなのどっちでもいいよw
linq使って速くなることはないんだし
2017/09/15(金) 15:02:22.39ID:eL7tpeWb
>>250
あー自分の誤ちを認められないパーソナル障害なんだろうな
そうじゃないと起動が10倍遅くなるなんて言えないもんね
2017/09/15(金) 15:03:30.41ID:DZnU5fjo
>>251
だからいいよそれでw
linqは遅いから使わないけどね
2017/09/15(金) 15:05:20.69ID:eL7tpeWb
>>252
まーだLinqについて理解できないのか
Linq使うと起動が10倍遅いから使わないって本当に底辺だからもう二度と言わない方がいいよ
2017/09/15(金) 15:09:54.13ID:3/LXnd4x
もう夏休みって終わったんじゃねえの・・・?
2017/09/15(金) 15:17:40.95ID:DZnU5fjo
>>253
そうやって言論弾圧をするのはなんか意味あるの?
まあ、linqは遅いから使わないけどね
2017/09/15(金) 15:20:27.93ID:eL7tpeWb
>>255
どうしてLinq使うと起動が10倍遅いって信じてるの?
根拠まだ?
2017/09/15(金) 15:35:48.45ID:axyMTLT4
とんでもない低スペックパソコン使ったら10倍遅くなるんじゃねーの(笑)
2017/09/15(金) 16:01:37.67ID:2773lCIl
>>231
Nick Craverのtweetやで
259
垢版 |
2017/09/15(金) 18:56:08.86ID:Or0Hv36R
linq使って重いって言う奴は、explain一度もせずSQL書いて重いって言う奴ときれいにカブる。
2017/09/15(金) 18:59:10.29ID:nPRjnf/b
またやってる
ワッチョイ有りでも無しでもヒマな基地外には関係ないのか
2017/09/15(金) 19:26:35.57ID:9COQlrBX
>>260
ワッチョイ無いから一人で自演しているんじゃないの?
まあ付けてもスマホと自宅だからバレないと思うけどさ
2017/09/15(金) 20:05:35.57ID:uW7EI8ic
結局2chでは幼稚で恥知らずな奴が最強で絶対に「勝つ」ことになってる。
北朝鮮と同じだ。
恥も自尊心も持たない奴には物理的な暴力以外何も抑止力にならないからね
2017/09/15(金) 20:43:53.62ID:JbFuM7sY
2chに勝ち負けなんてあるの?
2017/09/15(金) 20:45:16.31ID:OqF1Hiig
ここでバカ晒している俺らが負け組
ROMって知識蓄えている人たちが勝ち組
265227
垢版 |
2017/09/15(金) 21:36:21.07ID:Ay+AWdB+
>>235さん>>239さん
どうもありがとうございます
配列によって、動的にボタンを追加する方法を勉強するtestプロジェクトで、ボタン追加方法のテストだったんで
配列は適当でいいやとstring[]でやってたんですが、後々、配列に追加したら…とか色々実験していく内に
「あ…List<string>でやっときゃよかった…とは思ってみたものの、string[]ベースでいろいろな処理書いちゃったんで、
後に引けずにパッチ当ててるみたいなみっともないことになってしまいました
List<string>ならadd〜で簡単に追加できてたんでちょっと戸惑ってしまいました

参照型というものの性質がなんとなくわかりました


別の質問を
フォームデザイナーでContextMenuStrip(cms1)を作って
Form1_Loadの中にcms1.Show();
を書いても表示されないのに
Form1のクリックイベントでForm1_Loadを呼び出すとcms1が表示されるのはどうしてでしょう?
2017/09/15(金) 21:43:39.81ID:2gj3jaOv
>>262
5年10年粘着を続けられる奴には負けるだろ
2017/09/15(金) 21:46:05.55ID:Z/MvErxh
10年2ちゃんに粘着とかまるでネトウヨみたいなやつだな
2017/09/15(金) 22:00:17.38ID:OqF1Hiig
>>265
Loadはフォームの表示前(this.Shownの前)だからコントロールが表示されない
フォームの表示後に呼び出したいものはShownのイベントメソッド内に書く
2017/09/15(金) 23:55:27.93ID:Ay+AWdB+
>>268
ありがとうございます
できました
2017/09/16(土) 09:20:56.65ID:z+cPNeEM
Linqで起動10倍遅い君はみんなから無視されてるにも気付かず調子こいて嘘ついてたから
これからはちゃんと指摘してあげる
2017/09/16(土) 09:23:02.03ID:S4dTswZ/
ただの鎌ってちゃんなので、無視して普通にlinqの話をするのが吉
2017/09/16(土) 09:45:23.81ID:S/6lhX5d
そんなに俺のリサイタルが聞きたいのか?

linqを使う奴は遅いかもしれないからコアな処理では使わないでねってゴミクラスを量産する
○○ファイルの読み込み?たしか□さんのところでやってたよね?

しかし、残念なことにそのクラスはlinqが使われていたのです

   おっそwwww
2017/09/16(土) 09:55:29.87ID:z+cPNeEM
つまんね
2017/09/16(土) 17:14:50.61ID:onYOCQSE
俺もstring遅いから全部byteで処理してる
StringBuilderも遅すぎる
2017/09/16(土) 17:18:29.80ID:NmFgsGO2
>>274
C++ を検討することを勧める


って言いたいけどこんなことを言い出す奴に技術力のあったためしはないから好きにしろ
2017/09/16(土) 17:26:44.23ID:ONgAFYB5
Cそのレベルで高速化したいならC++だろw
2017/09/16(土) 19:25:48.53ID:W42Z2QXo
Cそのレベルって何
2017/09/16(土) 19:27:34.42ID:YNlal7Li
プログラミング未経験の人向けのC#入門書を探してるんだが、お勧めの本があれば教えて頂きたい
2017/09/16(土) 19:31:37.12ID:QE5Dhgdp
独習C♯
猫でもわかるC♯

本屋で適当にプログラム本捲って自分が読める感じの探すのがいいけど
2017/09/16(土) 19:40:33.90ID:3905ntF4
C#の絵本

概念掴むのにはコレは分かりやすいよ
2017/09/16(土) 19:46:57.37ID:QE5Dhgdp
>>280
俺もこれ持ってるわ
読みやすいから導入としてはこれも良い
2017/09/16(土) 19:51:03.57ID:QOgyryHO
絵本シリーズか、悪くない
2017/09/16(土) 20:04:58.39ID:YNlal7Li
C#の絵本買ってみようかな
来月中旬に出る第2版を読んで良かったら買うよ
2017/09/16(土) 20:23:42.33ID:5Re80ay8
回り道に思っても一度Cを勉強した方が結局早いような気もするけど、どうかね。

構造化プログラミングやポインタの理解を経由せずに
いきなりC#で概念の洪水に晒されてちゃんと消化できるのか。
2017/09/16(土) 20:26:47.21ID:W42Z2QXo
ぜひ実験して教えてくれよ
思うレベルのご意見は要らねえからよ
2017/09/16(土) 20:27:49.29ID:ikTXova5
Cの余計な知識なんていらないでしょ
2017/09/16(土) 20:44:59.49ID:3905ntF4
C#をやってみようって決意したんだろうからそれを踏まえて指南すれば良いのでは?
デリゲート使う時に壁を感じたらそれはその時考えれば良い事で、その時だったら今よりはCに浮気するハードルは高くないはずだと思う
2017/09/16(土) 20:45:44.36ID:Zk6Irz58
んー、もちろんいらないといえばいらないんだけどね
C#あたりの今時のプログラミング言語になってくると、できることが多すぎるから
プログラミングまったく初めての人は、Cなどの昔ながらの言語で初歩を勉強してから
入門したほうが挫折のリスクは少ないし、それからのほうがC#の理解も容易だろうとは思う
で、もしポインタでつまづくようなら、全然むいてないってことだしw
2017/09/16(土) 20:48:46.79ID:hF16Uo8A
物理的なメモリレイアウトが見えてるほうがイメージしやすくて逆に簡単という意見もある
標準ライブラリも貧弱だから覚えること少ないし
TMPの誘惑に取り憑かれなければ回り道というほどでもないだろう
290デフォルトの名無しさん
垢版 |
2017/09/16(土) 20:49:57.29ID:ikQV5H4G
プログラミング初心者でC#やりたいならCの構造化は邪魔になるだけだと思うけどなぁ
2017/09/16(土) 20:54:04.12ID:SMlIDWsJ
Cから入ると変な癖がつくからお勧めしないな
C自体がダメというわけじゃないがコーディングスタイルが古い
モダンな言語への移行を前提として古臭い書き方を廃した入門書があればいいけど
2017/09/16(土) 21:03:11.30ID:5Re80ay8
>>290
構造化プログラミングの理解はC#であろうが必須事項ww

>>291
別にCを極める必要はないよ。
Cの方が覚えることが少ない分恐らくクイックスタートが切れるだろう、ということ

Cでも「stdioって何?」みたいな最初は「おまじない」としてやり過ごすしかない部分はあるけど、
C#だと桁違いにそれが増える
2017/09/16(土) 21:07:37.57ID:QE5Dhgdp
CやC♯から入らずにphpから入ったわ・・・
2017/09/16(土) 21:18:53.41ID:5uPi2u+e
>>292
C#だって、ラムダ式より前の基本的な文法だけなら、覚えることそんなに多くないだろ。
2017/09/16(土) 21:20:26.04ID:S4dTswZ/
出来る事が最初から多過ぎる、てのは解る気がするわ

C#でも、GUIをしばらくお預けにしてCUIから教える分には
そんな複雑でも無いとは思うけどね
2017/09/16(土) 21:22:07.89ID:5GJ5fljb
C#で構造化プログラミングを学べないわけもないだろう。
2017/09/16(土) 21:25:05.16ID:gxsdxxSU
ハードに近い所で仕事したいならともかく
本当に回り道にしかならん
2017/09/16(土) 21:25:11.68ID:Pzxpwiqj
「猫でもわかるC#〜」は初心者には絶対に勧めない
自分がC#を勉強しようとして最初に読んでえらく悶絶したので

もし書名が「ざっくり覚えるC#文法」とかだったら納得もできる
猫や初心者にわかるように丁寧に説明している本ではない
他のプログラミング言語を知っている人が、さっとC#の文法を理解するにはたぶん良いのだろう

例えば、版によるかもしれないがこの本には「文字列はダブルクォーテーションで囲む」
ということがどこにも書かれていなかった
なのになぜか「char型はシングルクォートで囲む」という説明はある
要するに、文字列をダブルクォートで囲むという「常識」を知らないような初心者目線では書かれていない
そういうのが他にも多数ある

書名の付け方を間違えたのか、作者に初心者を慮る能力が欠けているのかはわからないが
初心者向け参考書なのに読んでもわからずググってやっと理解する、という繰り返しになるので
超初心者は他の本を買った方がよい
2017/09/16(土) 21:45:24.46ID:YNlal7Li
絵本シリーズが一番いいんかな
300デフォルトの名無しさん
垢版 |
2017/09/16(土) 21:52:40.76ID:ikQV5H4G
>>292
もちろん理解しないといけないのは当然だけど、普通にプログラミングを重ねれば自然とそうなるでしょ
初心者で下手ゆ構造化プログラミングに慣れてしまうとオブジェクト指向の考え方が理解しづらくなるかなと思って
書籍は個人的に「実戦で役立つ C#プログラミングのイディオム/定石&パターン」がおすすめ出来るかな
2017/09/16(土) 22:00:36.81ID:S4dTswZ/
まず、「構造化プログラミング」と聞いて何を連想するかが人によってかなり異なるので
もっと別の言葉に置き換えた方が良いぞ

その上で、「プログラミングその物の入門に」という話なので
ンな手癖が付くほどがっつり深くやれって話でなく、触り程度に概念を理解するくらいで終わる話じゃないの
2017/09/16(土) 22:05:19.42ID:Zk6Irz58
>>300
とゆーか、オブジェクト指向自体が今時のプログラミング言語で初心者を挫折させる
元凶のひとつだからなw
オブジェクト指向がすんなり理解できるような人だったら、いきなりC#からで別段
問題ないし、よくわからないうちはとりあえずはわかったふりで無理して使わなくて
いーよと適切なアドバイスできる人が近くにいるなら心配ないんだけど
2017/09/16(土) 22:13:07.82ID:QE5Dhgdp
>>300
今読んでるけどおすすめだと思う
ただ未経験からいきなりそれ読んでも分からなそうな感じ
独習C♯で写経して、イディオムでパターン覚える感じというか、俺がそんな感じで進めてるところ
2017/09/16(土) 22:19:26.45ID:fBWSyi5J
俺が最初に読んだプログラミング本ってK&Rだったけど、アレはいい本だったな
2017/09/16(土) 22:19:46.48ID:ja70x9oy
スッキリわかる Java入門 第2版、2014

本当の初心者は、スッキリから行かないと、
オブジェクト指向が理解できない
2017/09/16(土) 22:37:39.28ID:ajkFqLJv
VS2017でC#勉強中です
ソースエディタでクラスやメソッドは折りたためますが、この折りたためる要素のソース内での表記の順番を入れ替えたいのですが、
動かす部分を全行選択して切り取ってペーストする以外に方法はないでしょうか?
気の利くエディタなので、この程度の事は一発でできそうな気もするのですが…
2017/09/16(土) 22:47:31.05ID:I8TGF8JO
>>306
折りたたんで切り取れば一行で済むのにそんなのいるか?
2017/09/16(土) 22:55:08.96ID:ajkFqLJv
ありがとうございます
折りたたんだ状態で全部を切り取れるんですね
気づかなかったです
更に
折りたたんで選択しとけばドラッグも出来ました
2017/09/16(土) 22:59:15.21ID:+xkFVGQp
Wordもいつからかそれが出来るようになって便利になったなーと思った
2017/09/17(日) 02:13:43.86ID:sWVhSEDv
ジェネリックなインターフェースってどうなんですか?できることはわかっているのですがどういうメリットデメリットがありますか?
string型もしくはUri型を引数にしてWebスクレイピングを行うメソッドなのですが、返り値はList<>で返したり、データクラスで返したりしたいのですがインターフェース化するとどういうメリットがありますか?
2017/09/17(日) 03:14:43.81ID:laU7wNws
そんな奇形メソッドに使ってもメリットはねーだろ
2017/09/17(日) 06:00:39.78ID:CHXibXnz
その要件でインターフェイスを使うこと自体には意味がある。けどそれがジェネリックなものである必要性はない。
2017/09/17(日) 09:28:39.99ID:rBV8stJp
>>306
行を選択(複数行可)して Alt + カーソル で移動、という方法もある
Shift + カーソルで行選択すればキーボードから手を離さず操作できる
2017/09/17(日) 10:01:53.64ID:TKU7DvDW
>>310
メリットを生み出すのは自分自身だ
どう使うかは自分がきめることだよ

無理にインターフェイスするとして考えられるのは
スクレイピングの結果の戻り値がIList<T>でとかそんな感じ
2017/09/17(日) 13:08:39.84ID:KkY0e3DN
C#でWindowsフォームアプリケーションじゃないものを(VC++でいうSDI)を作る場合って
Visual Studioでどのテンプレートを選択すべきなんでしょうか?

VC++はMFCのSDIテンプレートなんかあってとっかかりやすかったんですが、
C#はWindowsフォームアプリケーションかWPFぐらいしか
すぐに使えそうなテンプレートが見当たらなくて。。。
2017/09/17(日) 13:20:54.70ID:bn1LOyuD
>>315
wpfならhttps://github.com/ButchersBoy/MaterialDesignInXamlToolkitを使ってみるのも良いかもしれん
2017/09/17(日) 14:02:47.82ID:FKLlCzPO
>>315
VC++はフォームの作り方に難があるから目的別テンプレートが必要なので当って
winformsやWPFは自由にデザインしやすいから別に出来合いのテンプレートが必要ないと思う
2017/09/17(日) 16:57:27.84ID:KkY0e3DN
>>316,317
WPFとWindowsFormsというフレームワーク?を使わずにその他の「何か」を想像していたんですが、
そもそもその考えが間違っているようですね。出直してきます。
2017/09/17(日) 17:25:07.29ID:sWVhSEDv
>>312
やっぱりインターフェースだとジェネリックメソッドは意味はないのでしょうか?

>>314
設計が悪いのか返り値がIList<>オンリーじゃないですね
2017/09/17(日) 17:42:10.34ID:CHXibXnz
>>319
なぜ意味があると思った?
2017/09/17(日) 18:08:20.43ID:MRaZ3EJn
>>319
特定のコードじゃなく一般論の話をしてるなら、ちょっと短絡的過ぎない?w
IEnumerable<T>.Castなんかジェネリックだし、場合によっては使い道あるんじゃないの?

それと、前スレでもちょっと出てた話だけど、
個人的には必要もないのにインターフェイスかぶせても
生産性と可読性が下がるだけで何もメリットないと思うよむしろ
2017/09/17(日) 22:38:37.23ID:AtDn9PVi
Visual Studio 2017 Community
エディタ上の変数の色を変えるにはどうしたら良いのでしょうか?

http://qiita.com/hima_zinn/items/1a58309201ca8d616332
C++では↑のような方法でできるようなのですが
2017/09/17(日) 22:47:20.64ID:MRaZ3EJn
>>322
オプションの画面に検索機能がついてるんだからそれらしいワード入れれば見つかるでしょ
とりあえず「フィールド」でやってみたら?
2017/09/17(日) 23:17:30.87ID:AtDn9PVi
すみません見つからないんです
例えば『フィールド』で検索しても出てくるのはC#→コードスタイル→前半の中のものだけ
『フォント及び色』→にはC++用のいろいろな設定はあるんですが、C#の変数の表示を変えるようなものがどれかわからないんです
それっぽいな?というものを変更しても変わらず
変えられたのは行番号とコメントの色だけ

変えられないってことありますか?

ネット検索してもC++の例はあってもC#での例が見つからない
2017/09/18(月) 00:41:29.71ID:EYlFP7gd
>>324
VSはC#のために作られてるので()
c#の○○という表記じゃないだけ
下のほうにキーワードとか文字列とかいろいろあるでしょ
そのうちのどれかですとしか言いようがない
2017/09/18(月) 00:47:59.35ID:EYlFP7gd
あ、わかった
識別子だ
変数だけは無理だな
2017/09/18(月) 00:49:52.49ID:EYlFP7gd
眠い中探した俺を誉めろ
2017/09/18(月) 02:20:01.85ID:ozgak7o7
>>327
若年性老害候補、一直線!おめでとう
2017/09/18(月) 05:39:51.27ID:8KP9vlA9
>>327
眠い中どうもありがとうございます
雷鳴ってPC落としてたら…

やはり他の部分も変わってしまいますね
変数だけ色分けできたら使いやすいのに…
2017/09/18(月) 06:00:31.65ID:Yvok/w5K
クラスでListや配列を扱う勉強してます
以下はテキストボックスを使ってListをどう扱えば良いのかを考えている実験用ソースです

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
string hyouji;
TextBox textbox01 = new TextBox();
this.Controls.Add(textbox01);
hyouji = Test01();
textbox01.Text = hyouji;
}

private string Test01()//テスト用オブジェ作成メソッド
{
List<string> testList = new List<string> { "a", "b" ,"あ","ん"};
Testclass jikken;
jikken = new Testclass();
jikken.youso = testList;
return jikken.test();
}
}
2017/09/18(月) 06:00:51.39ID:Yvok/w5K
public class Testclass//クラスと配列のテスト用
{
public List<string> youso = new List<string>();
string modori;
public string test()
{
modori = string.Join(",", youso);
modori = modori + "-" + modori;
return modori;
}

};

class Testclassの中のtestメソッドで文字列に変換したものを
stringの戻り値を多段経由してテキストボックスに表示しています
クラス跨いでのControlの扱いが分かってないのですが、
のソースで戻り値を経由せず、Testclassのtestメソッドからtextbox01.textに直接書き込むにはどうしたら良いでしょうか?
2017/09/18(月) 06:02:16.29ID:Yvok/w5K
色々余計なことや面倒くさい宣言、ダサいことしてたりしますが、試行錯誤の名残なのでご容赦ください
2017/09/18(月) 06:12:51.82ID:Yvok/w5K
https://ideone.com/aopoUw
すみません コード貼る…の使い方が分かってなかったです
コード貼っときました
2017/09/18(月) 08:33:57.39ID:7QJzTfH9
どっちかというと外に追い出すべきは
textBox.Textへの書き込みでは無くて
Test01メソッドの方
2017/09/18(月) 10:54:18.79ID:g7YoyWj5
WebBrowserのNavigating、Navigated、DocumentCompleteイベントがわかりません
ログ見てるとNavigatingが一度しか呼ばれていないのにNavigatedが2回呼ばれてDocumentCompleteが呼ばれる
自分の頭の中ではNavigating→Navigated→DocumentCompleteの順番だと思っているのですが違うのでしょうか?
参考になるページありましたらご教示お願いします
2017/09/18(月) 21:27:10.73ID:HjSStS87
初歩的かもですが、下記例の書き方で、Objectで引数を受け取るのにクラス変数の型に合わせてキャストして受け取る形が少し不自然に感じます。
この様な書き方で問題ないのでしょうか?
それとも他にいい感じの書き方がありますでしょうか?
class Test
{
private int a;
private string b;

public Test(params object[] param)
{
a = (int)param[0];
b = param[1].ToString;
}
}
2017/09/18(月) 21:31:12.97ID:IcOpWHLw
>>336
動けばいいだろカス
2017/09/18(月) 21:35:23.03ID:BIiVnPJO
>>336
object型で引数を受け取る必要あるの?

public Test( int a, string b )
{
 this.a = a;
 this.b = b;
}
2017/09/18(月) 21:35:57.16ID:JMdJN0yq
>>336
何を求めているのかいまいちわからないけど、その文だとparam[0]がキャストできないときにエラーで止まる
なので例えば
bool result = Int32.TryParse(param[0], out a);
に変える
この場合キャストできないときにresultにfalseが入る
2017/09/18(月) 21:38:06.59ID:HjSStS87
>>338
あくまで例って言う通り、実際はもっと多い引数だったり、場合によっては一部値を渡さない実装(デフォルト値設定)するつもりなんですよね
paramsって名前付き引数にできるのか?とか今調べてます
無理そうならDictionary使おうかとか考えてるところです
2017/09/18(月) 21:40:19.22ID:HjSStS87
>>339
ありがとうございます
TryParseの存在は知ってましたが、例外処理書いて載せるのめんどいのでとりあえずキャストだけ書いとけってやりました
すいません
2017/09/18(月) 21:43:00.12ID:xV3zBIyo
他人にエスパー能力を求めてる自覚がない人は困っちゃうねw
2017/09/18(月) 21:47:27.13ID:nAoTSCTK
>>340
型を作る
用途次第だけど
344デフォルトの名無しさん
垢版 |
2017/09/18(月) 21:48:03.01ID:HjSStS87
実際はこの画像の感じで色んな型の変数をセットしていくのに、コンストラクタにparamsで渡していって、受け取ってない場合は初期値入れるってのをやるつもりです。
https://imgur.com/a/f5Xg7
元々rubyで書いてあるプログラムなんですが、C#で移植しながら書こうとしています。
2017/09/18(月) 21:52:25.02ID:IcOpWHLw
>>344
なんでそんな賽の河原の石積みみたいなことしてんの?
2017/09/18(月) 21:52:57.70ID:k38CZIuV
paramsは可変長引数だからその例には適さないぞ
2017/09/18(月) 21:59:58.66ID:HjSStS87
>>346
rubyだと
def Initialize(params)
@stock_code = params[:stock_code]
@trade_type = params[:trade_type]
な感じで実装されてたので、C♯でも可変長変数と名前付きで渡せるかなーって考えてました・・・
それが無理なら変数をまとめて型にするか、Dictionaryかなって感じです
2017/09/18(月) 22:04:11.24ID:xV3zBIyo
なぜ素直にオーバーロードとかオプション引数&名前付き引数を使わないんだろう...
2017/09/18(月) 22:09:33.77ID:nAoTSCTK
>>344
コンストラクタでTryParseとかはアレなんでFactory使う

あと各データのできるタイミングやまとまりが違うものがフラットに混ざってるので
DBの正規化的なアプローチで少しデータ構造を考えといたほうがいいかもね
とりあえず移植したいだけなら型つくって移植して
後で困ってからリファクタリングしたのでもいいと思う
2017/09/18(月) 22:09:51.89ID:vOYXlSBd
dynamicと匿名型使えば?
2017/09/18(月) 22:10:50.50ID:BIiVnPJO
>>344
コンストラクタでは初期値だけ入れて、newする時にプロパティに代入するのが良いと思う。

var trade = new Trade()
{
 stock_code = X,
 trace_type = Y,
....
};
2017/09/18(月) 22:21:57.04ID:HjSStS87
>>348
確かにそっちのが簡潔ですね・・・
元々長いのと後々追加する時を想定して少しこの辺りいい方法無いかなって模索してたので
>>349
Factoryは知りませんでした、調べてみます
>>351
こういうやり方のがすっきりしてそうですね、見た目も分かりやすそうな感じがします
ただsetはこれだとpublicですが、private運用のがいいのかとか考えていました。
プロパティ使って代入ってよくある使い方なのでしょうか?
2017/09/18(月) 22:25:06.53ID:HjSStS87
>>350
これも使い方調べてみます
2017/09/18(月) 22:42:34.01ID:HjSStS87
>>352
一先ず、プロパティのset使って運用しようかと思います
後々何かいい形に出来そうなら変更していこうかと思います
回答下さった皆様、ありがとうございました
2017/09/18(月) 22:49:09.22ID:IKMu/QN7
パラメータークラス作ってそれに全部値入れて渡せば?
2017/09/18(月) 22:51:27.14ID:IKMu/QN7
object[]で渡すなんてバグの温床だよそんなもん
自分で呼び出すときと処理書くときに困るだけだ

初心者なら普通に関数書くほうがいい
2017/09/18(月) 23:04:27.54ID:vOYXlSBd
直接プロパティを設定するのはあまり良くないよ
いつ外から書き換えられるかわからず、それに対応できるように作るのは無駄に手間がかかるしテストもクソ面倒になる
結局、いつでもプロパティを書き換えられるように見えるくせに初期化時以外に書き換えたら壊れる糞みたいなクラスが出来上がる
2017/09/19(火) 00:12:55.89ID:UFvzWEfw
>>344
証券会社どこに対応?
2017/09/19(火) 01:11:24.64ID:OkajuEzq
>>358
そういうのとは違うみたいよ
https://books.google.co.jp/books?id=HOiNAwAAQBAJ&;pg=PT87#v=onepage
2017/09/19(火) 06:59:39.45ID:+o0BYr/j
>>359
なるほど
2017/09/19(火) 20:36:01.35ID:dvJOAkmr
メソッドの戻り値がListで、その中身を可変にした定義がしたいのですができますか?

インターフェースで List<Type> Select<Type>() と定義して
具象クラスで同じように定義、return List<string>(); とかやっても
"List<string>をList<Type>に暗黙的に変換できません。"とエラーになってしまいました。
362デフォルトの名無しさん
垢版 |
2017/09/19(火) 20:38:26.15ID:sbE0HbQy
linuxサーバーに好きな言語使ってwebアプリ作れって言われたら、言語何使う?
2017/09/19(火) 20:46:10.64ID:HSXd4/vW
>>361
何言ってるのか分からないけど、自分で(メソッドの戻り値の型を)可変にしたいといいつつ、
List<string>という非ジェネリックな型を返すのは何なの?

意味がわからないよ
2017/09/19(火) 21:37:01.96ID:oUqqEkrK
>>362
それをなぜここで聞く?
2017/09/19(火) 22:12:23.33ID:ekU6MC2y
>>361
まずTypeじゃなくてT使うように

メソッドのシグネチャーが
List<T> Select<T>()
なら実装は
return new List<T>();
2017/09/19(火) 23:49:48.63ID:WGzo2g/5
TabPageクラスを拡張してTabPageExクラスを作ったんですがTabControl.TabPages[index].Foo()を呼ぼうとしても呼べません
どうやったら呼べるようになりますか?TabPageCollectionを派生したクラスを作らないとダメですか?
2017/09/19(火) 23:53:29.45ID:3bAYaO8L
どうやっても呼べるようにはならないですよ
2017/09/20(水) 00:00:37.73ID:pKHwkxOR
>>366
拡張した内容が分からない
まず拡張したクラスでなく元のコントロールで呼び出していないか確認
その上で拡張した内容を張らないと誰もわからない
2017/09/20(水) 00:05:28.12ID:pKHwkxOR
あ、TabControl.TabPages[index].Foo()の時点で元のコントロールだな
それはだめだ
2017/09/20(水) 00:21:20.04ID:OL4nI+z3
失礼しました。拡張した内容ですが以下のとおりです
タブブラウザを作りたいのでこういう風にしました
TabPageクラスにGoBack、GoForwardメソッドを実装しそれをメインフォームのボタンから呼びたいのです
そのためにはtabControlでどのタブが選択されているか取得しないといけないので苦労しているところなのです


TabControl
https://ideone.com/5QXD2p
TabPage
https://ideone.com/d9v3vu
MainForm
https://ideone.com/bByZtw
2017/09/20(水) 03:50:11.03ID:OL4nI+z3
無理なんですね、わかりました
やりたいことは各TabPage上にWebBrowserがあるのですがその進む戻るボタンをToolStrip上に実装したいのです
どうにか実装する方法ってないでしょうか?
2017/09/20(水) 06:47:27.86ID:f7lGjoxP
グローバルフックの事を学びたく、
http://d.hatena.ne.jp/myugaru/20071130/1196434749
にあるソースを実行したいと思います

新規でコンソールアプリのプロジェクトを作り
Formを追加し
ソースをネームスペース以外コピペして、エラー無くデバッグで立ち上がるも、コンソールとFromは出るものの、なんの反応もありません
「Visual Studio ホスティングプロセスを有効にする」を外せとのことですがVS2017Communityではその項目が見当たりません
デバッグでなくビルドしたexeでも同様です

どう改変したら動くようになりますでしょうか?
よろしくお願いいたします
373デフォルトの名無しさん
垢版 |
2017/09/20(水) 09:28:35.33ID:QOv/22JC
>>370
まあ単純には、
var tabex = TabControl1.TabPages[x] as TabPageEx;
if (tabex != null) {
...
}
でもいいんじゃね
2017/09/20(水) 10:09:23.61ID:QOv/22JC
>>374
普通に動いたわ
新規プロジェクト作成でWindows Formsアプリケーションを選択
Form1.csを削除
Program.csを開いて既存のコードは削除してからリンク先のコードをペースト
F5
VSをアクティブにして出力ウィンドウにフォーカス移動して適当にキー入力するとmessage=KEYDOWNとか出力される

VS2017はホスティングプロセスがなくなったっぽい
ちなみにホスティングプロセスで動いてるかどうかは
デバッグ実行中にタスクマネージャ開いて
hoge.exeの代わりにhoge.vshost.exeが動いてるかどうかで判断できる
2017/09/20(水) 18:54:31.86ID:EHoWpSXt
>>374
ありがとうございます
できました
2017/09/20(水) 21:35:02.01ID:PQ6KY/LI
test
2017/09/20(水) 21:35:49.94ID:PQ6KY/LI
https://github.com/chomado/Xamalist/commit/1422a3eb2a80bba53b43afa3ea8afdb5d689cf55
このコードについて質問です

StringExtentions っていうのをなぜ改めて作っているのかわからないんですが
クラスの中にString型のオブジェクトがあれば、IsNullOrEmptyを呼び出せないの?
2017/09/20(水) 22:16:03.45ID:DOSxYj0U
>>377
static methodだからインスタンスメソッドとしては呼び出せない
String.IsNullOrEmpty(foo) と foo.IsNullOrEmpty の違い
379デフォルトの名無しさん
垢版 |
2017/09/20(水) 22:42:10.58ID:eNb8jX7J
今となってはFormアプリケーションの作り方を覚えても無駄でしょうか?
現場でGUIアプリケーションはどのように作りますか?
2017/09/20(水) 22:54:26.15ID:JtkVUIC7
その現場による
2017/09/20(水) 22:55:28.94ID:eNb8jX7J
防衛省案件とかはどうでしょうか?
2017/09/20(水) 22:56:02.60ID:eNb8jX7J
Qt?
2017/09/20(水) 23:13:28.76ID:FueCi3Km
>>379
未だにそれよ
無駄にはならないよ
なんだかんだいって仕組みは一緒だから
2017/09/21(木) 08:27:22.37ID:3ejzg6/y
>>373
できました。ありがとうございます。

>>370を作る過程でマウスの中クリックでWebBrowserのタブ追加を行う際にTabControlクラスのメソッドを呼ばないと行けないんですが、この場合どうするのがいいのでしょうか?
・TabControlクラスのメソッドをTabPageクラスのコンストラクタに渡し、さらにWebBrowserのコンストラクタに渡す
・TabControlクラス内でパブリックな静的インスタンスを保持するプロパティを作成し、その静的インスタンスを介しWebBrowserクラスからメソッドを呼び出す
2017/09/21(木) 08:29:37.61ID:3ejzg6/y
>>384
途中送信してしまいました
設計上はどちらが優れているのか教えてほしいです
また他にいい案ありましたらお願いします
2017/09/21(木) 10:32:53.97ID:qZmCICJB
Parent.Parent
2017/09/21(木) 18:06:25.21ID:JtwQpz4i
>>383
それ聞いて安心したよ。ありがとう。
まずはFormアプリケーションを勉強することにした。
2017/09/22(金) 07:06:24.08ID:2m2DZ4nM
質問です
宜しくお願いしいます

アプリ設定の保存の最も初歩的な所から勉強しようと思っているのですが
http://qiita.com/taigaaa2/items/7f05ad950a57033892ae
↑が一番単純な構造で分かりやすいと思い、記述通りに設定し、ソースも必要部分をコピペで入力
エラーもでずにアプリも走りますが、設定を読み込んでいない(Projects\Hoge\Hoge\bin\Debug内のHoge.exe.configを弄っても何も反映されない)
保存もされていない(user.configがどこにも作成されていない)という状況です

どこか他に設定箇所があるのでしょうか?
よろしくお願いします
2017/09/22(金) 08:12:54.86ID:+YP/tqCe
>>388
ありがちなのは
Properties.Settings.Default.Save();
が抜けている
2017/09/22(金) 08:34:32.57ID:VB7mr2jw
ありがとうございます

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Properties.Settings.Default.HozonString = this.txtHogeString.Text;
Properties.Settings.Default.HozonInt = int.Parse(this.txtHogeInt.Text);
Properties.Settings.Default.Save();
}
この部分の最終行ですよね?
書いてあります
2017/09/22(金) 08:50:55.65ID:VB7mr2jw
HozonStringに値を入れても反映されません…
なんかこのシステム自体が動いてないような…
2017/09/22(金) 08:52:07.52ID:KxUIJ/0F
>>388
そのページはデザイナの設定が書いてないがLoadとFormClosingのイベントの設定はしてある?
2017/09/22(金) 09:06:14.05ID:VB7mr2jw
>>392
ありがとうございます
それでした!
Formのプロパティーとかもデザイナー使わないで設定する方法ばかりやってたんで、
デザイナーの方でハンドラの設定してないのすっかり忘れてました

LoadもFormダブルクリックするのすっかり忘れて…お恥ずかしい

ありがとうございました
凄く助かりました
2017/09/22(金) 09:10:59.92ID:KxUIJ/0F
>>393
初心者向きのようで初心者が書いて大事な部分が抜けているページだな
面倒でも他の所参考にした方がいい
https://dobon.net/vb/dotnet/programing/mysettings.html
とか
2017/09/22(金) 09:13:00.30ID:XETG01Ra
データベース接続文字列ってあんな長いの手動で書くものなんでしょうか?
自動出力とかないのですか?
2017/09/22(金) 09:19:19.37ID:L886aacT
長いか?
長い奴でも2〜3行程度しか書いたことないけど
2017/09/22(金) 10:29:26.18ID:/H9tPbO8
データベースへの接続のウィザードとか使えば接続文字列勝手に作ってくれるだろ
2017/09/22(金) 10:33:15.19ID:eYJEmi08
>>395
DbConnectionStringBuilderからの派生クラス使うとか
Dictionary形式だから項目多いなら管理楽になるけど
2017/09/22(金) 10:37:52.34ID:usj2bMF0
接続文字列は全世代の遺物なんだけど
誰も改善しようとしない

ローカルルールだからけの文字列をわざわざ考えて
それをまたどこかでわざわざパースしてるんだから馬鹿らしい

connectionStringBuilderとかあるけどあれは文字列作って
それをまたパースしてるんだから同じく馬鹿らしい
2017/09/24(日) 07:01:15.21ID:fnb/dDo2
>>386
ありがとうございます
取り掛かっているのですがマウスのホイールクリックで新たなタブとして開きたいのですが
WebBrowser.Document.Clickイベントで躓いています
WebBrowser_DocumentCompletedイベントに「Document.Click += Document_Click」をの一文を追加し
Document_ClickイベントのマウスのHtmlElementEventArgs.MouseButtonPressedでホイールクリックを検知しようとしたところ
左クリックでも中クリックでも右クリックでもNoneと表示されています
WebBrowserのDocument上で中クリックを検出するにはどうすればいいでしょうか?
2017/09/24(日) 07:46:57.15ID:0E5Ac8qe
すみません
変な質問かもしれませんが、宜しくお願いします

Label hogehoge = new Label
とhogehogeというインスタンスのLabelを作ったとします
プロパティーで名前は指定していません
他のプロパティーも空という前提でお願いします

このLabelのダブルクリックでイベントハンドラーを作り
イベントの中に
Console.WriteLine(((Label)sender).Name);
としても当然名前は出てきません
この時、hogehogeというLabelを識別する文字列を取得したいのですが(この場合hogehogeが一番良い)、インスタンス名を取得 と検索しても出てこずです
名前の付いてないControlを識別する文字列を取得するにはどうしたら良いでしょうか?
Console.WriteLine(((Label)sender).〜のところに使えるいろんなコードをスニペットで調べてもそれっぽいものが無いのですが
そもそも名前を付けとけというのは別として、なんらかの方法で識別する文字列を取得できますか?

よろしくお願いします
2017/09/24(日) 07:59:04.31ID:8QRYtBFv
nameofじゃね
2017/09/24(日) 08:19:31.40ID:Iu73uVEK
ないよ
欲しいなら自分で付けとけとしか言いようがないね
というかそもそも識別するのに名前である必要がある? ってところから検討しないと
2017/09/24(日) 08:20:29.03ID:8QRYtBFv
デバッグ用に出したいときあるじゃん
2017/09/24(日) 09:00:09.85ID:N5BpuRhH
>>401
名前以外で固有ってハンドルくらいじゃね?
自動生成とかで名前を付ける手間を省きたいとかなら>>403の通り名前である必要が無いし
2017/09/24(日) 09:27:14.32ID:0E5Ac8qe
>>404
自分もデバッグ用にと思ったんです

>>403>>405
どうもありがとうございます
やはりなさそうですね

色々実験している時に、一度何かの間違いで、forのLoopの中で、インスタンス名?も名前も変えないControlを複数作って配置したことが有って、
何故かそのまま動いて、それぞれ個別に識別してるようなので、何が別の識別要素でもあるのかな?と思ってお伺いしました
ありがとうございました

>>402
nameofは新しいものらしく、情報が少なくて私には使い方がよくわからず
ちょこっと説明みたところ「メンバ hogeの名前は"hoge"」…みたいな使い方?
入り口の入り口にいる自分には何が何やら
nameof(sender)をやってみたら"sender"出ましたw
nameof((Label)sender)は受け付けてもらえませんでした
2017/09/24(日) 11:36:28.18ID:T/MiKQPL
変数名を取得したいんじゃなくて
インスタンス作成時にコントロールのNameプロパティに変数名を自動でセットしたいの?

そんな機能は存在しないから自分でシコシコ手書きでやっとけ
2017/09/24(日) 11:55:06.77ID:1OC4vxE7
リフレクションでもないんかな?
msのコントロールにもインスタンス突っ込むとメンバ名が出てくるのあるけどね
変数名は無いのか
2017/09/24(日) 11:55:11.39ID:E+MF96aa
リフレクションでもないんかな?
msのコントロールにもインスタンス突っ込むとメンバ名が出てくるのあるけどね
変数名は無いのか
2017/09/24(日) 12:00:44.73ID:NHAiERWm
ローカル変数名なんてILに残らないし流石にリフレクションは無理なのでは
2017/09/24(日) 12:27:00.23ID:N5BpuRhH
Name属性がなくてもsender==label1とかの識別ならできるけど中でハンドル比較しているんじゃないかな
だからどうしても出したかったらフィールドの一覧から一致するハンドルを探せばできなくはない
2017/09/24(日) 12:40:22.57ID:g05veIjA
>>406
Formに配置したコントロールは、Controlsプロパティで取得出来る。
Controls.Where( x => x is Label )とかやればLabelコントロールに絞り込めるけど、それ以上は判別しようがないな。
2017/09/24(日) 12:41:57.70ID:6oSExpao
設計が間違ってる
2017/09/24(日) 13:12:02.52ID:U4nAGnPY
設計なんて大げさなものじゃなく、考え方が間違ってるねw
なんか盛大に勘違いしてるというか

なぜNameをIDにしたいなら素直にNameを設定しないのか意味が分からない
何がしたいの
2017/09/24(日) 15:12:59.43ID:KcVpSqdX
変数名とNameで2回hogeと書くのが冗長だってんでしょ
是非についてはどうでもよすぎるのでコメントしない
鼻くそでもほじってる方がマシ
2017/09/24(日) 16:08:08.69ID:F2yzHt0b
変数名は前まではプログラムする人のためにあって
実行環境まで残ってないものだった

最近は変数名が残るようになったので使おうとする人が多いけど
もともとそういう種類のものじゃないんだよ
2017/09/24(日) 22:08:09.82ID:fnb/dDo2
>>400もどなたかお願いします
2017/09/25(月) 01:09:43.42ID:T67/GWI3
自己解決しました。
Document.ClickイベントではなくDocument.Linksのほうに一つずつMouseDownイベントを追加することでできました
これは解決済みなのですが、すっきりしないので確認させてください
Document.LinksのMouseDownイベント内でDocument.GetElementFromPointメソッドに渡す引数ですが、
MousePositionやOffsetMousePositionを渡すようにしているページがかなりあったのですが、どっちも使えずでClientMousePositionを渡すようにしたのですが
.NETのバージョンがあがるにつれ、変わったのでしょうか?
2017/09/25(月) 02:40:11.77ID:60Ft387g
パネルに画像などを追加していった際、描画範囲より外に出てしまった場合に
AutoScrollをtureにするとスクロールバーが表示されますよね?
縦方向のスクロールバーが本来は右側に出ると思うのですが、左側に出てしまいます。
すごく違和感があるので右側にしたいのですが、調べてみても特に設定する方法がみつからないのですが、
なぜなんでしょうか?
2017/09/25(月) 02:44:47.14ID:1vb5e8br
RightToLeftとRightToLeftLayoutのプロパティをいじったとか
2017/09/25(月) 02:47:25.81ID:60Ft387g
>>420
無事解決しました。
プロパティを触っているときにうっかりRightToLeftをYesにしてしまっていたようです、ありがとうございました。
2017/09/25(月) 08:12:41.42ID:OL/9MGvm
質問です。ボタンの外観が変わらないのです。
http://or2.mobi/data/img/171707.png

画像の左側がデザイン時、右側がデバッグ時です。
左側のデザイン時にしたいのですがどうしたらいいですか?
FlatStyleを変更しても変わりませんでした。
2017/09/25(月) 08:37:25.13ID:mAOi1uCH
右もカッコイイよ
2017/09/25(月) 09:02:15.47ID:IwLQLx8X
Application.Runする前にApplication.EnableVisualStyles()呼んでる?
2017/09/25(月) 09:09:36.99ID:OL/9MGvm
>>423 >>424
ありがとうございました。解決しました。
2017/09/25(月) 13:11:47.58ID:T67/GWI3
何度もすいません
TabControlとWebBrowserを使用し、タブブラウザを作っているのですがFirefoxのアドオンにあるツリー型タブのようにツリー構造(親タブ子タブ)みたいにしたいのですが
どのようにすればできるのでしょうか?TabControlでは無理なのでしょうか?
2017/09/25(月) 13:49:11.12ID:IwLQLx8X
無理ではないかもしれんが一から作ったほうが早そうというかストレス少なそう
2017/09/25(月) 14:09:40.48ID:mAOi1uCH
よし、じゃあ、TabControlのラベルのフォントを大きくして見るんだ!
2017/09/25(月) 14:52:47.35ID:jVT7FFhT
みんな苦労して勉強して自分の作りたいものを作ってんじゃないの?
それを一言でどうすればいいんですかって虫が良すぎる気がする

ツリー型タブってどういうものか知らないけどちょっと画像見たら
ただアイテムが親子関係がありそうに見えるように作ってあるだけに見える

あああ
いいい
うううう



あああ
 いいい
 うううう
にしただけ
まあタブの機能は自分でなんとかするしかないね
2017/09/25(月) 15:20:54.06ID:WRsfbJvs
コレのことかー
https://addons.mozilla.org/ja/firefox/addon/tree-style-tab/

wpfのtreeviewのスタイル作り込めば何とか成るかもしれんね
2017/09/25(月) 18:10:02.71ID:T67/GWI3
一から作るということが想像できませんでした。
インデント?ツリー構造?どうやって作ればいいんだろうという感じです。
どういったことを勉強すればよいでしょうか?
2017/09/25(月) 18:42:41.37ID:ZfFz64Lf
>>431
上に書いてもらってるじゃん
ツリー構造はTabControlじゃどう考えても無理だから「一から作ったほうが早そう」ってなるんだよ
2017/09/25(月) 18:55:16.09ID:ON9Li960
自分でやったことないのに無責任に言うけど、Windows FormならTreeViewを
継承して拡張でいけるんじゃない?

なんなら素のTreeViewでも機能的な要件は満たせるよねたぶん
2017/09/25(月) 23:37:09.27ID:y0MyGTE+
Linqについてなのですが
List<int> list = new List<int> {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
のようなListを
{0, 1, 2} {1, 2, 3}{2, 3, 4}・・・{8, 9, 10}
のような感じで取得しながらLinqを記述する方法ってあるのでしょうか?

Take(3)やWhereの組み合わせで出来るのか、Indexをあらかじめ列挙して対応させるしかないのかと考えています
Linqで書かない場合はコードは長くなりますが書ける状態です
2017/09/26(火) 00:05:24.65ID:lY8FoU4I
>>434
Ix(Interactive Extensions)のBufferに似てるけどそのまま使えないので、
自作の拡張メソッドでも作れば?
2017/09/26(火) 00:37:08.59ID:fvF/8EVL
>>434
これ
https://stackoverflow.com/a/4660669
2017/09/26(火) 00:42:46.55ID:9BhvI/Vw
>>435
>>436
forとYieldでこの形に出来るんですね
望み通りの動きの上、コードもスッキリしてて凄いです
ありがとうございました
438デフォルトの名無しさん
垢版 |
2017/09/26(火) 02:27:19.94ID:WWZ5IF5C
VisualStudio2017でスニッペトが壊れました。
cw tab tabでConsole.WriteLine()となるべきがconstになっちゃいます!
どうすれば直りますか?
2017/09/26(火) 03:52:06.10ID:jDIKRy4A
VS2017で勉強してます
https://msdn.microsoft.com/ja-jp/library/bb546972(v=vs.110).aspx
このページのドキュメントアウトラインでColumnDefinitionsなどの要素が表示されません
https://i.imgur.com/I7U1sSH.jpg
Glidを展開しても3個の配置したControlしか表示されません
バージョンの違いなのかとも思うのですが、詳細を表示するにはどうしたら良いでしょうか?
2017/09/26(火) 08:27:29.19ID:Vyr7hCJe
LINQが使えるって言えるのってどのくらいから?
Select、Where、Orderbyが使えたら使えるって言ってもいいんかな?
2017/09/26(火) 09:26:15.62ID:po+Ovxs3
>>440
joinもgroup byも必須
SQLは開発者の常識だから、一通り使いこなせないとできるとは見做されないよ
まずはSQLの本で普通にSQL覚えるのがいいのでは
LINQより遥かに重要だよ
2017/09/26(火) 09:51:36.95ID:QFKO2nVy
テーブルレイアウトパネルを動的に追加し
列の幅をパーセントで指定しようと思ってます
https://ideone.com/lK68fg
の16行目で
インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。
とエラーが出て止まってしまいます
同行を
testLayoutPanel.ColumnStyles[0] = new ColumnStyle(SizeType.Percent, 50);
と置き換えても同じです

ColumnCount = 2;
としているので、インデックス0でエラーが出るのがよくわかりません
何を間違えているのでしょうか?
よろしくお願いします
2017/09/26(火) 10:48:03.73ID:Qq96jDlV
>>441
LINQは別にSQLの代わりじゃないのだが
2017/09/26(火) 10:54:58.16ID:pyoVGWZW
LINQ=クエリと勘違いしてLINQ毛嫌いする人多いから困るわ
2017/09/26(火) 11:06:45.24ID:iExFW+NQ
LINQのQはqueryなんですが...
どうでもいいんだけどメソッド形式をLINQと呼ぶのも変だよね
MSって昔から用語をないがしろにしてるよね。
2017/09/26(火) 11:19:38.72ID:yUnVCaTy
???
447デフォルトの名無しさん
垢版 |
2017/09/26(火) 11:24:26.71ID:KX2+W8jQ
LINQは検索とソートと重複除去でとっても便利!みんなも使ってね!
2017/09/26(火) 12:02:41.55ID:Vyr7hCJe
なるほどありがとう
今思い出しながらGroupByとJoin戦ってるけど使い方わからん
SQLのやつならわかるけどLINQでどう書くんだ?

var list = new[] {
new {Name = "A", Uri = 150},
new {Name = "A", Uri = 160},
new {Name = "B", Uri = 16},
new {Name = "B", Uri = 1000},
new {Name = "B", Uri = 1000}

};

var query = list.Where(x => x.Name == "A").GroupBy(x => x.Uri);

foreach(var union in query)
{
Console.WriteLine("Name = {0}", union);
}
2017/09/26(火) 12:11:59.40ID:Qq96jDlV
>>445
なぜ変なの?言語(language)に統合された(integrated)クエリ(query)だろ?
2017/09/26(火) 12:39:26.31ID:iExFW+NQ
>>449
説明必要?
統合された結果出来たのはクエリ式。

ただのメソッド呼び出しが「言語に統合」なんかされてるわけないでしょ
2017/09/26(火) 12:46:44.63ID:Qq96jDlV
>>450
言語に統合されてるからこそ、c#らしい構文のままでクエリ書けるんだよ
2017/09/26(火) 13:01:09.22ID:iExFW+NQ
だからそれはクエリ式。
メソッド形式とクエリ式の違い分かります?
ボケてるのかマジボケなのかどっちよ
453
垢版 |
2017/09/26(火) 13:07:09.76ID:9oRLnNit
queryってクエリ式だけではなくて、問い合わせの意そのものを指してんじゃ無いの?
2017/09/26(火) 13:07:46.10ID:fvF/8EVL
>>452
メソッド形式をクエリと呼んじゃダメな理由でもあるの?
2017/09/26(火) 13:15:07.21ID:iExFW+NQ
だめだなこりゃw
2017/09/26(火) 13:27:00.90ID:po+Ovxs3
>>448
group by と join はクエリ式で書いた方がいい
可読性最悪
2017/09/26(火) 14:20:04.31ID:Qq96jDlV
>>452
こいつクエリが何かわかってないな
2017/09/26(火) 14:33:54.98ID:iExFW+NQ
もういいよ馬鹿。一生やってろ
2017/09/26(火) 14:36:37.31ID:Qq96jDlV
>>458
マジボケさんさようなら
460
垢版 |
2017/09/26(火) 14:46:26.80ID:9oRLnNit
クエリ式に関してはQuery expressionときちんと明記しとるな、英語版MSDNは。
461デフォルトの名無しさん
垢版 |
2017/09/26(火) 15:18:00.49ID:SDiSqFpw
###HUM###
000-K,AZ,0,1,
001-KI,L,I.T,DEF,11.2,TE,F,0.12235,
002-EM,OBLA,7##END
2017/09/26(火) 18:57:00.26ID:ibL24X8W
>>442
testLayoutPanel.ColumnStylesのコレクションが無い
まずデザイナで作ってみて要素確認してから動的に追加する方法を考えるべき
2017/09/26(火) 19:42:11.94ID:QFKO2nVy
>>462
ありがとうございます!
https://ideone.com/GBSGtn
デザイナを参考にこうしたところ、テーブルレイアウトパネルを動的に追加することはできました

で、ご指摘のコレクションですが、
ColumnStyle(SizeType.Percent, 33F)をnewでaddしてるということは、
テーブルレイアウトパネルには、わざわざ指定して追加しないとコレクションそのものが空で、
それを指定する形だったのでインデックスの範囲を超えていたという解釈で良いのでしょうか?

まだこういうコレクション(プロパティーが入ってる)を扱ったことがなかったので、完全には把握してませんがなんとなく、ふわっとした感じですが理解できた気がします
とりあえず行も列も動的に追加すること無く、この設定時のパーセンテージで表示できればいいので、今のところこの表記方法で目的達成できました
助かりました

ありがとうございました

( ・ω・ )。o(初心者にはMSのサイトも、他の検索に出てくるサイトもわかりにくずらかった…)
2017/09/26(火) 19:54:05.45ID:QFKO2nVy
ちなみに、
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.tablelayoutpanel.columnstyles(v=vs.110).aspx
これを改造して色々やっても
style.SizeType = SizeType.Percent;
style.Width = 33;
が上手く作動してない様子でした
2017/09/26(火) 20:59:46.14ID:ErS49Y5u
Rxで過去N回に渡って発行された値を列挙する方法ってないですかね?
2回分取るだけなら同じストリームのSkip(1)とZipすれば行けるらしいんだけど
2017/09/26(火) 21:30:49.54ID:fvF/8EVL
>>465
BufferかWindow
2017/09/26(火) 22:05:27.53ID:ErS49Y5u
>>466
イマイチ理解が追いついてないんだけど、例えば0,1,2,3,4,5って値が流れてくるストリームをBuffer(3)で待つと、

{0,1,2} <- OnNext(2)のとき
{3,4,5} <- OnNext(5)のとき

って流れてくると理解してるんですが、

{2,1,0} <- OnNext(2)のとき
{3,2,1} <- OnNext(3)のとき
{4,3,2} <- OnNext(4)のとき
{5,4,3} <- OnNext(5)のとき

っていうのもBuffer/Windowできるんですか?
2017/09/26(火) 22:30:14.01ID:fvF/8EVL
>>467
Buffer(3, 1)で
{0,1,2}
{1,2,3}
{2,3,4}


Overlapping Bufferとかで検索して
2017/09/26(火) 23:01:36.61ID:ErS49Y5u
>>468
なるほど、そういうオーバーロードがあるんですね!
助かりましたありがとうございます
2017/09/27(水) 18:03:24.23ID:t8u46Wok
>>456
めちゃくちゃ悪いですね
group byとjoinだけではなくLINQは全てクエリ式で書くようにしたほうがいいんですかね?
2017/09/27(水) 18:19:20.44ID:I+73OQfD
group byも他も全部メソッド形式でいいよ
2017/09/27(水) 18:47:03.77ID:dVQpfUDY
>>470
やめとけ
2017/09/27(水) 21:06:07.02ID:Z70BqHKV
LINQの話はするなって言わなかったっけ?
このスレで取り扱うのはC#2.0までですよっと
2017/09/27(水) 21:20:20.37ID:BDhjrTHp
>>473
初心者は縛りプレイはできないから
縛りプレイする上級者は他に行ってどうぞ?
2017/09/27(水) 21:39:31.74ID:x0z96+G9
linqの話題って話した後の
だからなんだよ感が強いな
99%がlinq使わなきゃ書ける
みたいな奴が質問しにくんの

使わなきゃいいじゃんw

自分もよくわからないし
おそらく他人もそのコードみても
よくわからんよなw

言語として駄目じゃねぇ?
わかりにくいし
実際わからなくてお前質問してんじゃん

でもわざわざlinqで書こうとするんだよな
実行速度も遅いのに

えー?なんでー?そんなことするのー?

って俺は思う
2017/09/27(水) 21:48:50.02ID:qdOMIpVQ
徹底無視で
2017/09/27(水) 21:51:41.07ID:Bof8gFB+
Linq使うと起動が10倍遅い君はま〜だ同じこと言ってるの?
はやく勉強しなさい
2017/09/27(水) 21:56:38.19ID:H0NxW0zY
>>477
ばっちいから触っちゃ駄目よ
2017/09/27(水) 21:59:47.93ID:TLU7WwAh
Linq遅い君は
.net使う奴はダメだ
アセンブラで全部かける、1000倍速いって言ってるのと同じ
2017/09/27(水) 22:04:23.68ID:Bof8gFB+
>>479
ほんとそれ

以前もなんでC#使ってるの?って皮肉込めて言ってあげたのに
無知すぎて自分が馬鹿なこと言ってるって気付いていないんだよなぁ
2017/09/27(水) 22:06:16.57ID:x0z96+G9
>>479
その言い分もなんかズレてる気がするんだよなー

お客さんにメリットないし
アプリの品質って面でもぶっちゃけ微妙だよね
上がってるのか下がってるのか
甲乙つけがたい
2017/09/27(水) 22:10:21.74ID:Bof8gFB+
ズレてるのはお前の小さな脳みそだろ
2017/09/27(水) 22:13:05.64ID:x0z96+G9
>>482
いやー
でもこの労力を支払ってまで覚えることか?
っていうと絶対その価値はないような?
2017/09/27(水) 22:16:10.53ID:Bof8gFB+
>>483
はい馬鹿
お前の頭の中だけだぞ、Linqは10倍起動が遅いのは。
2017/09/27(水) 22:23:00.06ID:x0z96+G9
>>484
要はお前ら何か作りたいものがあるわけじゃなくて
ただ、暇なんだよな
プログラムって組めるようになっちまえば差なんか無いもんな
2017/09/27(水) 22:26:43.20ID:Bof8gFB+
>>485
馬鹿が何言っても戯言でしか扱われないよ
だからお前は底辺なんだよ
はやく勉強しなさい
2017/09/27(水) 22:30:37.27ID:Cy9euBKG
統計的結果に基づいて遅いって言ってんだよ分かれよ
2017/09/27(水) 22:32:14.93ID:Bof8gFB+
Linqで起動が10倍遅いソースはやく出せよ
2017/09/27(水) 22:43:09.62ID:TLU7WwAh
労力?
Linqって苦労して身に着けることなのか?
いくつか覚えることあるけどその後は使うだけだぞ?
2017/09/27(水) 22:50:51.57ID:BDhjrTHp
なんだこれマッチポンプ?
2017/09/27(水) 22:58:42.43ID:x0z96+G9
>>489
複雑なの書かれると理解不能だぜ
2017/09/27(水) 23:01:08.37ID:Bof8gFB+
>>491
それは自分の頭が悪いからって気付こう?
2017/09/27(水) 23:05:47.18ID:TLU7WwAh
複雑なのは置いといて
普通のは普通に使えるでしょ?

それじゃダメなのか?
494デフォルトの名無しさん
垢版 |
2017/09/27(水) 23:11:04.12ID:L0g4oP1E
>>493
こんな簡単に理屈を捻じ曲げるのが大得意
否定こそ正義みたいなのが未だに文化だよな
疲れないんかな?
2017/09/27(水) 23:39:15.53ID:x0z96+G9
>>493
だったらlinq使ってない普通のが読みやすくてデバッグもし易いんだけど?
2017/09/27(水) 23:42:46.84ID:Bof8gFB+
>>495
じゃあなんで世界中で使われてるのかな?ん?
その理由答えてみなよ
2017/09/27(水) 23:44:59.89ID:Ijn3FQKR
お前ら本当にLINQ大好きだな
2017/09/27(水) 23:56:02.90ID:yfRQCwYR
コードろくに書けない連中がここでデカい顔しているだけだろ。みっともない
2017/09/28(木) 00:27:03.29ID:sNRbvHHL
>>496
え?誰か使ってるの?
2017/09/28(木) 00:37:18.50ID:3FmP7sWc
>>499
stackoverflowだけでもLinqについてこれだけの質問が出てるのに誰も使ってないと思ってるの?
https://stackoverflow.com/search?q=c%23+linq
2017/09/28(木) 00:52:55.75ID:sNRbvHHL
>>500
少ない
2017/09/28(木) 00:58:57.04ID:3FmP7sWc
>>501
何を持って少ないと言ってるのか明示してみろ
どうせ出来ないんだろ無能
2017/09/28(木) 01:11:11.82ID:3FmP7sWc
> ID:sNRbvHHL

世界中で使われてる現実を直視できず否定するなら
世界で使われてない証拠を出せよ
こいつの頭はお花畑か?プログラマー失格。向いてないから肉体労働でもやってろ
2017/09/28(木) 01:29:22.33ID:sNRbvHHL
>>502
何をもって多いって言ってるの?
c言語ユーザより多いの?
2017/09/28(木) 01:53:55.48ID:sNRbvHHL
>>503
はぁ?
そんなに大盛況ならlinqスレ使えよ
友の会解散したのか?w
2017/09/28(木) 02:22:00.21ID:QT+OhU18
>>503
キチガイに触んなすな
2017/09/28(木) 06:24:42.04ID:3FmP7sWc
>>504-505
なんでいきなりC言語が出て来るの?
答えられないからって逃げるなよ
2017/09/28(木) 09:19:39.28ID:lt1k4/jx
質問しなきゃ使えないような、難しいものじゃないしな
2017/09/28(木) 09:25:32.06ID:sNRbvHHL
>>507
他との比較がないと多いってのは表現できないよね?
2017/09/28(木) 09:31:09.75ID:lt1k4/jx
クラスなんか使うなとか、 正規表現なんかイラネとか 昔からこういうのずっといるじゃん。
そんなやつを叩く必要は全くない。 そっすねって言っとけばいい。
2017/09/28(木) 09:31:45.87ID:sNRbvHHL
linq友の会スレもうすぐ十周年じゃねーか!w
10年かけて1スレも消費できずに要るとかwwww
2017/09/28(木) 09:34:00.36ID:lt1k4/jx
そっすね
2017/09/28(木) 09:36:58.47ID:lt1k4/jx
for (int i = 0; i < array.Length; i++) みたいなほうが見やすいって人も世の中にはいるんだよ。
理解はしなくてもいいけど、 そういう人がいることは現実なので受け入れなくてはならない。
2017/09/28(木) 09:37:16.85ID:sNRbvHHL
やっぱ、誰も使ってないよねw
2017/09/28(木) 09:39:01.33ID:lt1k4/jx
使わない言い訳も、昔からの決まり文句があって、
こんなの誰も読めない、使ってないって言うんだ。
2017/09/28(木) 09:40:05.55ID:lt1k4/jx
上司だったら会社辞めたり、部下だったらまあ、それなりのことは言うだろうけど

まあ、他人なら そっすねー で終わり。
2017/09/28(木) 09:40:21.54ID:sNRbvHHL
でも友の会あのザマじゃん
2017/09/28(木) 09:40:39.47ID:lt1k4/jx
そっすね
2017/09/28(木) 09:42:40.66ID:sNRbvHHL
>>503
友の会過疎ってるけど?(笑)
2017/09/28(木) 09:43:12.34ID:Pf6KZt6F
そうだね統計的にね
2017/09/28(木) 09:45:02.79ID:sNRbvHHL
linqは産業廃棄物
2017/09/28(木) 10:00:57.75ID:6PyDG+uC
ID:sNRbvHHL

いつになったら証拠提示するの?底辺無職君
2017/09/28(木) 10:02:37.59ID:6PyDG+uC
ID:sNRbvHHL

こいつみたいな出来の悪い子供を産んでしまって両親はさぞ悔やんでるだろうな
2017/09/28(木) 10:04:30.45ID:6PyDG+uC
ID:sNRbvHHL

現実を直視できないガチの障害者
Linqで起動が10倍遅い異世界の住人だろ
2017/09/28(木) 10:05:13.86ID:6PyDG+uC
ID:sNRbvHHL

親に生まれてきてごめんなさいしてこいよ
それか親も障害者か?だからお前みたいなキチガイが産まれたわけ?
2017/09/28(木) 10:13:24.71ID:sNRbvHHL
え、でも、友の会過疎ってるし
2017/09/28(木) 10:17:26.27ID:9VSk5cgV
>>526
2chのスレをソースにする馬鹿って未だ居るんだ
2017/09/28(木) 10:18:34.60ID:9VSk5cgV
この馬鹿、例えば俺がスレ立てて自演でスレ埋めたらどうするんだ?(笑)
2017/09/28(木) 10:31:26.12ID:q4X2x56w
どなたかこれを…>>439
2017/09/28(木) 13:32:50.85ID:gLDY8O4C
>>529
2013からドキュメントアウトラインが変わったみたいね
まあ気にしなくてもいいよ いちいちドキュメントアウトライン見に行くとかむしろ面倒だし
2017/09/28(木) 14:04:14.61ID:FxuZ7FTb
>>513
入門者の方へ

forはバグの温床だからiがいらない場合は
なるべくforは使わない方がいいです

10年前では考えられなかったけど
2017/09/28(木) 14:40:34.06ID:8NzBr0qn
でもListの要素とか複数削除したいときすぐ必要になるよね
2017/09/28(木) 14:47:19.91ID:45VEntxR
>>532
ToArray()すればforeachでも消せるよ

foreach(var hage in hoge.ToArray())
{
hoge.Remove(hage);
}
で大丈夫
2017/09/28(木) 14:53:50.63ID:FxuZ7FTb
頭が痛くなる
2017/09/28(木) 14:57:45.66ID:11fK+yCz
forが禁止で>>533でClear()も禁止ですか
何も書けなくなるね
2017/09/28(木) 14:58:44.65ID:8NzBr0qn
素数番目の要素を消したい
2017/09/28(木) 15:15:19.51ID:FxuZ7FTb
RemoveAt
2017/09/28(木) 15:42:42.74ID:8/kuet0U
もう配列自体なくしてほしい
AddRangeみたいに配列を引数にするやつも
IEnumerable入れられるようにしてほしい
2017/09/28(木) 16:15:13.05ID:s3Uec9FD
パフォーマンス上必要だったりアンマネージド呼び出しで必要だったりするので
それは無理。

って書くとまた馬鹿が暴れ出すかもしれんが、ケースバイケースで柔軟に考えなきゃ。
馬鹿の一つ覚えは頭が悪い
2017/09/28(木) 16:19:37.39ID:45VEntxR
>>535
消し方だから省略したが、通常はRemove行には何らかの条件付けるだろ
2017/09/28(木) 16:34:05.21ID:sNRbvHHL
>>537
ってやるとiが必要になるよねって話
2017/09/28(木) 16:49:01.01ID:9VSk5cgV
>>541
そうやってすぐ話から逃げるんだな害児
2017/09/28(木) 16:59:48.20ID:FxuZ7FTb
マジボケなのか
老化して意味がつたわらないのか?
2017/09/28(木) 17:05:35.41ID:bsxNaYZb
>>543
自分が>>513の意図を理解していないのは気付かないのか
Linqもまとめて
ふらっと C#,C♯,C#(議論用)
http://mevius.2ch.net/test/read.cgi/tech/1469538912/
に行け。スレ違い
2017/09/28(木) 21:52:52.56ID:lt1k4/jx
>>531
タダの嫌味にマジレスとかなぁ…
2017/09/28(木) 23:42:42.14ID:kVjhPNv5
キチガイにマジレスはオッケー
547デフォルトの名無しさん
垢版 |
2017/09/29(金) 01:29:49.55ID:ppl3WHHK
%%%3%%%
000-DOK<NAZE-0.8112162>
001-3800%\73NMB/1,81,2,NB"IKKI"%
002-91.81%ML7"8.122231746668193,43@ML.4@"%^23.1444
003-1.33321444718%"YLD""SO"%{71.%{62.1339816{331.422231765%<<<NL6
004-LOOP%Go To"000"%

VCL
2017/09/29(金) 05:59:25.49ID:+EJnnTQ3
ふと思い立ち、Release版の実行ファイルをバイナリで見たところ、
C:\Users\(ユーザ名)\Documents\Visual Studio 2017\Projects\CodeHelloWorld\CodeHelloWorld\obj\Release\CodeHelloWorld.pdb
という文字列が平文で入ってました。
コレでは個人情報がダダ漏れなので調べてみると、デバッグ情報でnoneを設定すると出なくなるという情報があったので、Releaseビルドではnoneを設定しリビルドしてみましたが、同様の文字列が入ります。
デバッグビルドの方もnoneにしてもでます、デバッグ版には入ってます(当然)
embeddedでビルドすると、平文ではでてこないようですが、コレもなんか変な気が…(難読化されて入ってる?そもそも埋め込みだからパスが入る必要性がない?)
Portableでも入るのを確認しています。
バイナリに平文でユーザー名(ソリューションの作成時のフォルダのフルパス)が入ることに対する情報があまりないのですが、皆さん気にしてないのでしょうか?
何か他に設定がいるのでしょうか?
よろしくお願いします。

情報
ttps://qiita.com/lainzero/items/27681ddc96638e33758b

中身は
簡素なhaloworldです
2017/09/29(金) 06:01:07.40ID:+EJnnTQ3
ミス:デバッグビルドの方もnoneにしてもでます、デバッグ版には入ってます(当然)
訂正:デバッグビルドの方もnoneにしてもでます。
2017/09/29(金) 07:20:04.98ID:IPuYHfok
VS2017ならpdb出さない設定でもパスが入っちゃうのは既知のバグ
修正待ち
2017/09/29(金) 07:37:19.51ID:+EJnnTQ3
>>550
ありがとうございます。
そうなんですか…
既知ならいずれ治るのかな。

embeddedでビルドすればとりあえず平文では見えないのでコレでやっちゃっていいのかな…

結構な大問題だと思うけど、日本語情報あまりないようだから、あまり皆さん気にしてない?
日本語でその手のバグ情報載ってる所ありますか?

とりあえずソリューションのフォルダ何処かへ移したほうがいいのかも?
2017/09/29(金) 10:21:05.14ID:crWKPnZy
そんなに気になるものかね

Buildアカウント作ってそれで作ればいい
2017/09/29(金) 10:45:04.63ID:Iou6ptZp
ドキュメントフォルダーを他のドライブに持っていっているから問題ないな
2017/09/29(金) 10:56:57.85ID:xvT00RM2
スレ違いだけどOSのユーザー名はただのIDだから
フルネームの実名を入れる必要はないし入れちゃダメだよw

オフィスなんかでドキュメントの作成者に入る名前は別の設定であったはずだし
2017/09/29(金) 12:06:49.41ID:L7twK2Cs
>>554
Microsoftアカウント名だったりするんだろ
2017/09/29(金) 19:29:35.92ID:ASjioBld
自分で便利な拡張メソッドやカスタムコントロール作ったんですが、いろいろなプロジェクトで参照したい場合dllファイルにするしかないんですか?
できればdllファイルを使用せずに参照追加したいのですが、できないのでしょうか?
2017/09/29(金) 19:34:42.63ID:5bNcT9xj
プロジェクト参照
2017/09/29(金) 19:49:14.80ID:L7twK2Cs
>>556
NuGetパッケージ化すれば?中身はdllだけど
なんでdllは嫌なの?
2017/09/29(金) 19:49:44.01ID:0RETi72f
>>556
EXEでもプロジェクトから参照出来るけど、プロジェクト分割してDLL化した方がその後楽になると思う
2017/09/29(金) 19:56:55.95ID:k8cuEG9P
>>556
ソースがあるのなら
using (名前空間) で取り込んでしまえばいいだけでは
2017/09/29(金) 20:23:16.47ID:ASjioBld
>>557
参照したいものはクラスライブラリで作成しましたが、参照の追加→プロジェクトを見ても何もないんですよね

>>559
大きいものならそれでいいのですが、わずか200行くらいのものなので・・・
2017/09/29(金) 20:24:19.41ID:f2TxCfjK
>>556
運用を考えてない雑魚の疑問

作成物Aと作成物Bと
共通dllの作成物Sがあったとして

作成物Bには不具合があって
使用している共通dllの作成物Sを修正しました

このとき作成物Aもリビルドすんの?

お前が言ってる共通ソースで運用すると過去に作ったもの全リビルド
誰にも金もらえないわ
客に納めた最終納品物と違う物できるわ
正直ヤバイ
企業だと100個や200個じゃすまへんで
2017/09/29(金) 20:30:58.17ID:k8cuEG9P
>>561
ソリューション->追加->既存のプロジェクト
をやってから
2017/09/29(金) 20:37:34.12ID:YWIP/X75
前もプロジェクト参照知らずにobjフォルダのバイナリを直接参照して
何かトラブってる人おったな
2017/09/30(土) 00:57:22.13ID:BaHp707U
nuget挙げてるやつが一人しかいないことに驚いたわ
2017/09/30(土) 07:45:43.46ID:gi2C/W9N
入れ子になったオブジェクトのListをファイルとして保存、読み込みするのに、
バイナリファイルにして保存、読み込みしていたのですが、List数が千近くになると、
読み込みに5秒以上かかるようになってしまったので、高速化したいと思ってます。

調べてみるとDataContractSerializerがいいかなーとも思ったのですが、
DataMemberAttribute.Orderプロパティを設定していないと、メンバの順番が
数値やアルファベット順になるため、逆シリアル化するときに、正しくできないですよね?
メンバ数が多いので1つ1つ今のコードに設定するのもかなり苦行なんですが、
何かいい方法はないものでしょうか?
2017/09/30(土) 07:54:58.14ID:BaHp707U
>>566
DB使えよ
2017/09/30(土) 08:30:00.41ID:soKv7w/a
>>566
MessagePack for C# いいよ爆速だよ
2017/09/30(土) 08:52:23.73ID:9JH7+33b
>>566
JSON.NETでいいよ
たかが1000件くらいテキストでも楽勝
BinaryFormatterとか昔からあるシリアライザは遅いので有名
2017/09/30(土) 09:03:00.42ID:B9VscmwP
>>566
> 数値やアルファベット順になるため、逆シリアル化するときに、正しくできないですよね?

大丈夫なはずだけどね。
2017/09/30(土) 09:05:50.60ID:B9VscmwP
自動実装プロパティとインスタンス変数の使い分けを教えてくれ。拙者には違いがわからぬ。
2017/09/30(土) 09:26:10.67ID:Np6DtGQS
基本的にpublic/protectedである"外に見せる"ものはフィールドでは書かない
2017/09/30(土) 09:26:41.66ID:soKv7w/a
外部に公開するのは基本プロパティでOK

複数プロジェクト環境だとメンバ変数からプロパティに変更すると
参照している側もビルドしなくちゃいけなくなる
2017/09/30(土) 09:42:51.44ID:B9VscmwP
もう、インスタンス変数は全部自動実装プロパティで良いんじゃないの?
コーディングの負担も{get;set;}だけだし。
2017/09/30(土) 10:45:34.67ID:Np6DtGQS
refで渡せないからInterlockedとかで困るんよ
2017/09/30(土) 12:04:04.74ID:B9VscmwP
>>575
そんなん使わないでget; set;の中でlockしとけば良いんじゃないの?
自動実装じゃできないけど。
2017/09/30(土) 13:48:17.11ID:Q01PrR7m
>>565
>>558
2017/09/30(土) 13:53:25.73ID:Q01PrR7m
>>565
>>558
nuget使うとver管理が逆に面倒になることもあるから
自分で管理したほうがいいかも
2017/09/30(土) 14:04:53.11ID:B9VscmwP
>>556
VS2017(VS2015以降?)には共有プロジェクトと言うのがある。
ソリューションに菱餅みたいなアイコンでプロジェクトが追加されて
他のプロジェクトから共有プロジェクトとして参照できる。
2017/09/30(土) 14:11:11.97ID:kOdc4YYr
>>578
最新getで動かなくなるよね
2017/09/30(土) 16:08:26.95ID:0VHr/jMd
nugetはlockないの
2017/09/30(土) 19:49:16.97ID:+pzyKNCv
console.WriteLineとconsole.Writeて何が違う?
2017/09/30(土) 19:55:11.12ID:++3Es+oD
Lineは改行される
2017/09/30(土) 23:27:46.64ID:TdF+hKVD
>>578
プライベートNuGetリポジトリのことやろあほか
2017/09/30(土) 23:34:38.68ID:+8+f7Kzi
>>584
なに言ってんだ?
その話以外何があるんだ?
自分だけならプライベートリポジトリ使う意味が薄い

会社とかで数人以上なら意味があるけど自分だけで使うなら管理コストが増えるだけ
2017/09/30(土) 23:37:55.27ID:9JH7+33b
自分のところで作ったものも含めて完全にNuGetで管理するのは
自社サービスの会社でない限り現実的ではないわな
2017/09/30(土) 23:39:59.32ID:+8+f7Kzi
DLLが嫌って言ってるんだから普通にソリューションにプロジェクトをインポートするだけでいい
それを知らないから質問してきたんだろ?
2017/10/01(日) 00:43:39.59ID:ly6P0KLu
フラットなのかシャープなのか
スレタイ
2017/10/01(日) 06:51:54.07ID:4KAT4caf
>>587
それだとDLLになるでしょ
2017/10/01(日) 07:38:59.49ID:t00k+6e7
>>585
NuGetパッケージ化したことのない人がこれです
2017/10/01(日) 14:55:40.54ID:vfm/Btvq
WPFわけわかんねぇええええええええええええええええええええ
動的に配置すんのめんどくせえええええええええええええ
なんじゃこれええええええええええええええええ

はぁスッキリした
Formの森に帰る・・・
2017/10/01(日) 18:47:48.34ID:qGSPhC6b
おつおつ
2017/10/01(日) 18:50:37.49ID:9SrqGqLT
普通にやると面倒だから
自分のやりやすいようにヘルパークラスでも作ればいいと思うよ
(MSの人はそういう考え方はないみたいだけど)

動的追加が身につけばそれを使えばいい
594デフォルトの名無しさん
垢版 |
2017/10/01(日) 20:18:09.95ID:jNXAXxmY
結局ASP.NET MVCはweb開発の市民権を得れたの?
2017/10/01(日) 20:30:42.79ID:tmbSNjLz
>>594
最近使ってる企業を見たことがない
しかもMVC自体が今後やって行けるのかどうか謎

asp.netシリーズは早く終息させたほうがいい
開発リソースの無駄
業務じゃASP.NET Coreはほとんど誰も使ってないんだから明日捨ててもほとんど支障がない
2017/10/01(日) 20:30:49.07ID:YXjJncWi
Web系にはね
ジャパニーズドカタには完全スルー
2017/10/01(日) 21:41:07.77ID:t00k+6e7
>>595
ただの引きこもりさんご苦労様です
2017/10/01(日) 21:41:52.69ID:gcWwR1VP
>>595
bitFlyer
はい論破
2017/10/01(日) 21:44:32.55ID:/bf2JU9V
雑談はマ板かせめて相談室でやれよ
2017/10/01(日) 22:26:04.18ID:tmbSNjLz
調べたぞ
IISのシェアが伸びてると言って喜んでるけど
欧米では下がってる

中国で小規模サイトが増えててそこでIISのシェアが高い
中国ではasp.netの技術者がそこそこいる
2017/10/02(月) 14:14:55.86ID:F+1BxcRZ
Windows FormでPictureBoxにプログラムで描画した画像の上に
マウスドラッグで選択範囲を表すラバーバンドを表示したいと思うんだけど、

(1) 画像はBitmapに描画してPictureBox.BAckgroundImageに設定。
ドラッグ時マウス移動で必要部分を無効化してPainrイベントでラバーバンドを描画

(2) 画像もラバーバンドもPaintイベントて描画。ドラッグ時マウス移動で必要部分を無効化する。

(3) 画像はPaintイベントて描画。ラバーバンドはドラッグ時にMouseMoveイベントでCreateGraphcs使って描画。
ラバーバンド描画時、ラバーバンドが描画される位置の画像をBitBltでBitmapにキャプチャーしておき、
ドラッグ時のマウス移動ごとに無効化する必要がないようにする。

これら3つの実装方法を思いつくけど、他にもっと簡単な方法あります?
DrawFocusRectはさすがにビジュアル的に却下で
2017/10/02(月) 14:54:34.78ID:j0IOuO2e
つボタン(範囲編集モードボタン)+トラックバー+テキストボックス
昔、得意気にそういうの作ったら

ああ、いや、数値でしか入力しないからw

って言われてボタン+トラックバーとテキストボックスになった
トラックバーはあんまり使わないらしい
2017/10/02(月) 15:07:15.72ID:g6h5uIo8
トラックバーってスライダーのことか?
2017/10/02(月) 15:19:06.18ID:j0IOuO2e
>>603
そうとも言う
2017/10/02(月) 15:32:48.09ID:g6h5uIo8
>>604
今まで一度も必要性を感じた事がない。
2017/10/02(月) 15:58:06.97ID:DB16o3JM
基底クラスでvirtual宣言したメソッドを
abstract付けた時のように派生クラスで必ずoverrideしないといけないようにする方法って、無いですかね?
2017/10/02(月) 16:36:15.51ID:rpp5PtTQ
>>606
abstractを付ける
必ずオーバーライドされるのに実装書く意味ないだろ?
superで呼びたいんなら代わりに別のprotectedメソッドにするか、
逆の発想でTemplateMethodパターンで差し替えたいところだけprotected abstractにして基底から呼べばいい
2017/10/02(月) 18:04:51.91ID:L+gIrVvB
継承は悪
2017/10/03(火) 07:22:33.28ID:ObXIbUik
C#やるならCなんて絶対にやっちゃダメだろ

十中八九手続き型プログラム書き始める
2017/10/03(火) 08:27:32.02ID:40an6g8d
>>609
cのポインタの概念を理解出来ないヤツがc#のオブジェクトを扱うと。
以下省略致します。
2017/10/03(火) 08:42:33.72ID:8vSQUt7l
別に問題ないやろ
2017/10/03(火) 08:48:00.46ID:WSVxY9HA
せめてC++くらいはやっとけ
2017/10/03(火) 09:16:05.26ID:40an6g8d
>>611
c#の変数はnewしなきゃいけないと思い込んてるヤツが少なからず居て、newした直後に別のインスタンスを代入とか。
参照と中身の区別の曖昧なやつ多すぎ。
2017/10/03(火) 09:18:07.47ID:eY/q0sas
>>613
それはC関係ないわ
c#理解してないだけ
2017/10/03(火) 09:24:35.82ID:40an6g8d
>>614
結構居るぞ。
cのポインタの概念がわかってりゃありえん。
2017/10/03(火) 09:34:53.80ID:3pqnorgz
いや、違う  ただのバカだ
2017/10/03(火) 09:36:26.96ID:C1bISep1
おまえがな
2017/10/03(火) 09:51:52.72ID:tK4uic5q
>615
それは、
・cのポインタの概念を理解していれば
・c#の参照の概念を理解していれば

が等価じゃないの?

なんにせよ個人の理解力不足で、cを先にの理由にはならなくない?
2017/10/03(火) 09:52:06.38ID:3UnO7l2m
>>613
インスタンスの概念にポインタの理解が必須とか本当にポインタやインスタンスの概念理解していないのはわかる
2017/10/03(火) 09:54:28.45ID:3pqnorgz
Cやったやつが こうに違いないみたいな思い込みしてんだから
そいつ自体が証明してんだよな
2017/10/03(火) 09:59:37.01ID:eY/q0sas
>>615
ただのバカです
2017/10/03(火) 10:01:30.91ID:+1Uci9uD
おまえがな
2017/10/03(火) 10:36:15.57ID:40an6g8d
>>618-619
お前ら、枝葉末節に拘りすぎじゃのう。
もっと森を見ろよな。
2017/10/03(火) 10:42:44.41ID:3pqnorgz
まあ、いまさら言い繕ったってなぁ
2017/10/03(火) 10:49:35.60ID:40an6g8d
物事の上っ面しか見えないお前らにとってc言語は害悪でしか無いのは認めようw
2017/10/03(火) 11:42:19.03ID:sQNA0cCL
要領を得ない例を挙げて「真意がわからないのか」というバカ
2017/10/03(火) 12:14:14.43ID:t6jmh8jv
またアルツハイマー患者の繰り言が始まった。

どうでもいいけど、もともとの話は、入門者がいきなりC#みたいな今時の言語から始めるより
一旦Cを経由した方が回り道のように思えて結局近道なんじゃないかって話だ。

いつもの馬鹿の「老害ガー、俺スゲー」っていう意味不明な被害妄想と
その裏返しの自己陶酔の開陳、みたいな間抜けな話じゃないよ
2017/10/03(火) 12:19:42.20ID:ffaQ93cm
まあ、大抵のやつはポインタでつっかえて終了確定だから
c#のがええよ
そのうちでかいメモリ扱ってるうちにポインタ的要素は理解できるっしょ
2017/10/03(火) 12:44:31.07ID:3pqnorgz
>>625
上っ面の認識で間違った人が言ってもなぁ
2017/10/03(火) 12:50:17.91ID:eY/q0sas
>>627
cわかる俺スゲー
2017/10/03(火) 12:56:03.36ID:xe3IBVNg
ポインタ知らないと出来ないことってなに?
632デフォルトの名無しさん
垢版 |
2017/10/03(火) 13:11:42.49ID:SsPk+8PU
特にない。ハードウェアを知ることはプログラミングに関して必要なだけ
2017/10/03(火) 13:12:52.65ID:I5/niSoP
>>628
ポインターで挫折するようなやつは他の言語でも駄目だ。
cの入門書のポインターの説明もたいがいだがな。
2017/10/03(火) 13:43:05.12ID:ffaQ93cm
>>633
じゃ、お前、なんかうまい解説サイトでも作れよ
2017/10/03(火) 14:28:59.55ID:nMyv2Tqx
>>631
c# unsafeメソッドはむりぽ
2017/10/03(火) 14:39:24.69ID:tdeEXDBR
ポインターとかメモリアロケートの概念に関わらなくてもいいようにC#作ったのに
利用者の頭が進化しないと言語開発者が泣くわ
2017/10/03(火) 14:46:28.17ID:ffaQ93cm
>>636
見えなくしたぶん余計深刻になってる気がするわ
2017/10/03(火) 15:26:44.64ID:aqsVlxub
>>636
ポインタとメモリアロケーションは全く別物
まともなコード書きたければ
C#でもメモリアロケーションの理解は必須
2017/10/03(火) 15:29:43.94ID:kRn3xKyN
>>638
そのためにはcのような低レベルの言語の理解が必要なのだ。
2017/10/03(火) 15:31:08.16ID:ffaQ93cm
>>639
それが最初である必要はねーよ
2017/10/03(火) 15:40:30.50ID:kRn3xKyN
>>640
じゃ、初めての人にオススメは?
2017/10/03(火) 15:45:40.67ID:ffaQ93cm
>>641
c#
だって入門書があって
簡単に画面が表示できる言語っていつの間にかこれしかねーし
2017/10/03(火) 15:54:35.81ID:kRn3xKyN
>>642
そんなこたぁない
2017/10/03(火) 16:01:14.23ID:ffaQ93cm
>>643
理由を書けよ
育ちが悪いな
2017/10/03(火) 16:09:58.24ID:hqS0jqGV
むしろ
入門書が無くて
簡単に画面が表示出来ない言語を知りたい
一般的なプログラミング言語でそんなのあんの?
2017/10/03(火) 16:11:02.55ID:kRn3xKyN
>>644
テンプレートを使ってWinFormなりWPFで画面は簡単に出ました。そこから先で頓挫する。c#は覚えなきゃいけない概念が多すぎる。msdnは奇怪翻訳でわけわからんし。
2017/10/03(火) 16:17:01.64ID:ffaQ93cm
>>645
最近書籍買ってねーだろ
結構苦労しないと他言語でGUIって難しいぞ
2017/10/03(火) 16:19:31.18ID:ffaQ93cm
>>646
ああ、他言語そこまで行かないから

そこまでできたら後はぶっちゃけなんでもできるな
WPFはさわんなくていい
winform覚えてな
直接納品しなくても
ちょっとしたツール作るときに
絶対役に立つから
2017/10/03(火) 16:22:37.95ID:JXAYZM0w
横から失礼
c#の入門書はまだ新刊が結構出てるよ

内容見たらどの本もWPFはなかったことになっててwinformsの使い方が出てる
2017/10/03(火) 16:24:26.51ID:HQuRK9/k
>>648
c#をvb6のように使うのならそれで良いかもね。
2017/10/03(火) 16:25:05.66ID:hqS0jqGV
>>647
普通に考えてJavaとかな
SceneBuilderで簡単に作れる

それとGtkのバインドある言語とかね
Gladeあるから簡単だし
Qtなんかもっと簡単だろ

むしろお前はC#しか知らないんじゃないのか?
2017/10/03(火) 16:27:40.64ID:eY/q0sas
>>651
JavaのGUIだとwww
2017/10/03(火) 16:27:51.55ID:JXAYZM0w
c#は覚えることが多いというのは間違いじゃないです
cなんかと比べると多いです
クラスに始まり event delegate プロパティ インデクサ

そこからLinq ラムダ式 Task async/await パラレルといっぱい概念が出てくるので迷いがち

GUIにこだわらないならpythonでもやればいいと思います
2017/10/03(火) 16:29:12.54ID:hqS0jqGV
>>652
JavaFXな
Swingと違って全然まともだよ
2017/10/03(火) 16:34:15.08ID:JXAYZM0w
新規でjavaを覚えるとしたらandroidがらみか
仕事で使うためとかそんなのじゃないですか?

ホビーでjava使う人ってほとんど死滅したと思う
java単体の入門書も全然でてない
2017/10/03(火) 16:37:37.09ID:ffaQ93cm
>>654
入門書一冊しか見たことないよ
まともなリソースエディタもなさそうだし
2017/10/03(火) 16:38:05.15ID:hqS0jqGV
>>655
俺の知り合いはkotlinやりたいけど
java知識無いとkotlinわからんって言って
今さらjava勉強し始めたよ

何事も決めつけは良くない
自分がそうだからって他人もそうだと思うのは良くない傾向
2017/10/03(火) 16:39:57.46ID:ffaQ93cm
初めにc#にたどり着いた人間は幸せだったということで
2017/10/03(火) 16:42:46.00ID:JXAYZM0w
>>657
ほとんど死滅したとどう違うんですか?
2017/10/03(火) 16:43:37.75ID:HQuRK9/k
残念な人向けにデザインされているgo言語はどうよ
2017/10/03(火) 16:46:08.26ID:JXAYZM0w
goは新しいjavaだと思う

機能制約してコードの品質を中程度に保つための言語
2017/10/03(火) 16:46:40.70ID:hqS0jqGV
>>656
「javafx 書籍」でググれば出てくるよ

別にC#が好きでC#をやるのは大いに結構だと思う
俺もC#好きでやってるからこのスレ見てるし
そこは否定しない

でも大して多言語のことを知らんのに
多言語より優れてるとか吹聴するのはどうかと思うよ
2017/10/03(火) 16:52:06.73ID:ffaQ93cm
>>662
全然ないじゃん
それとこれリソースエディタ動くの?
2017/10/03(火) 16:52:28.41ID:HQuRK9/k
>>658
c#の進化とともに歩めた人はでしょう。
今から乗り込むのは辛いだろ。
2017/10/03(火) 16:57:59.86ID:ffaQ93cm
>>662
駄目だよ
ブログとかだと
scenebuilderいいみたいに書いてあるけど
バグってるよこいつ
すぐ読めなくなるじゃん
何が原因かわかんないし調査する気もないけど
2017/10/03(火) 17:01:17.11ID:ffaQ93cm
>>664
ずっとこいつだと思うよ
さっきから言ってるように
他言語で簡単にGUIを作る方法が無くなりつつある
2017/10/03(火) 17:03:42.36ID:JXAYZM0w
GUIはHTML5でいいでしょ

そしてMSはtype scriptとnode.jsとexpressを使ったのでした
2017/10/03(火) 17:05:51.39ID:HQuRK9/k
>>666
xojoでも使ってれば?
2017/10/03(火) 17:06:18.93ID:ffaQ93cm
>>667
htmlのビジュアル編集って意外と敷居高くね?w
2017/10/03(火) 17:08:32.82ID:HY14P4NI
敷居高いけど、どのみち現代の開発者には必須のスキルだからな
2017/10/03(火) 17:08:37.95ID:+vmAcOd0
今日のこのスレのID全部NG
2017/10/03(火) 17:19:53.75ID:HQuRK9/k
>>669
DOM理解してないとむりぽ
2017/10/03(火) 17:28:32.83ID:HY14P4NI
DOMなんか何が難しいんだ
CSSはバッドノウハウ地獄で確かに難しいけどBootstrapみたいなのもある
2017/10/03(火) 17:34:54.89ID:QikjATz4
ちょっと思ったけど、web系の人って生産性が低い道具を擁護することで
自尊心と飯の種を得ている様は、昔のコボラーなんかと同じ構図だねw

本人たちは逆に俺様こそが時代の最先端だと思いたいところだろうけど
2017/10/03(火) 17:35:54.67ID:ffaQ93cm
いや、俺が欲しいのはhtmlやGUIのビジュアル編集ツールなんだけど
そういうのある言語ってc#ぐらいしか残ってないよねって感じ
2017/10/03(火) 17:38:07.05ID:HQuRK9/k
>>674
最先端過ぎて数ヶ月後には陳腐化する。
2017/10/03(火) 17:39:17.69ID:ffaQ93cm
ホームページビルダーとかDreamWeaverって最近どうなんだろ?
ってそんなもん入門プログラム作成するのに引っ張り出すぐらいなら
やっぱりc#だと思うが
2017/10/03(火) 17:40:06.52ID:QikjATz4
>>676
なんか、C++の開発者の例のジョークを連想させる状況だなw
2017/10/03(火) 18:25:06.32ID:3pqnorgz
あんなのをweb系の総意とか勘弁
2017/10/03(火) 18:32:56.40ID:Wv0pCR1x
DBへの接続や読み書き等をクラス化しようと思うのですが、関数化したい機能が多すぎてDB関連クラスの中身が膨大になると思います
いいサイズになるように分けていきたいところですがどのような感じでクラス設計してるのでしょうか?
設計関連でおすすめの参考書等もあればお聞きしたいです
2017/10/03(火) 18:34:33.06ID:HY14P4NI
>>674
Webのデザイナなんかゴミみたいな単価で山ほどいるからね
それに、特に米国で顕著なパッケージ化の流れで、不特定多数向けにクォリティを高める開発形態が増えている
GUIの生産性はそれほど重要ではなくなりつつあるんだよ
2017/10/03(火) 18:39:00.62ID:k1rl0nQk
>>680
リポジトリパターンを調べるといいよ
2017/10/03(火) 18:44:37.30ID:HY14P4NI
>>680
理想を言えば、エンティティクラス自体に関連する処理を実装する
いわゆるドメインモデルってやつだ
682のリポジトリパターンはDBからのエンティティの取り出しと保存だけを抽象化するもので、
細かいトランザクションロジックの整理には役立たないよ
2017/10/03(火) 18:53:07.80ID:3pqnorgz
いや、でかくなるけどどうしたらって回答がそんななの?
685デフォルトの名無しさん
垢版 |
2017/10/03(火) 18:56:05.82ID:+VByLN2Y
SQLはXMLに書いてるわ
2017/10/03(火) 19:00:21.32ID:Wv0pCR1x
>>682-685
ありがとうございます
デザインパターンに詳しく無いので、この形がいいって回答はかなり参考になります
ドメインモデル、リポジトリパターンについてどういうものか調べてみます
2017/10/03(火) 19:03:06.95ID:5oW9bJ2Q
>>645
インテルの黒本をディスったなぁ
ARMにもディスられた事無いのに〜
2017/10/03(火) 19:12:54.47ID:+U401EVt
>>684
頭おかしいよねw

一つのクラスめっちゃでかくなるわ
どーすんだ?これ

って質問なのに
質問に対して全く答えてねぇのが笑える

ミソが腐っているのだろうか?
2017/10/03(火) 19:20:03.80ID:HY14P4NI
>>688
クラスを分けることを目的にするのは典型的なアンチパターンだからな
レビューでフォームクラスの行数オーバーで弾かれたから、イベントハンドラをそっくり別のクラスに移動するような阿呆を生み出しかねない
2017/10/03(火) 19:24:55.15ID:+U401EVt
>>689
それで?
一つのクラスがでかくなるときはどうするって?
2017/10/03(火) 19:31:29.75ID:F9jUpGNo
>>690
設計を見直す
2017/10/03(火) 19:33:49.01ID:N5+yK7+U
>>680
何で車輪の再発明をするのだ?
Entity Frameworkを使えば良いだろう。
2017/10/03(火) 19:41:31.70ID:Wv0pCR1x
>>692
EntityFrameworkは最近使い方覚えて少し試してるところです
それでも基本的なところと機能別に実装したい中身ってあると思ったんですけど、自分の考え方のがおかしかったでしょうか?
2017/10/03(火) 19:44:24.49ID:tdeEXDBR
dapperを使え
2017/10/03(火) 19:53:17.11ID:N5+yK7+U
>>693
おかしくはないよ。
Entity Frameworkで不足だと思うところは補えば良い。
オレオレ実装(自己満足なだけの)にならなけりゃ。
2017/10/03(火) 20:31:15.57ID:mIjastOX
>>694
dapperのUnitTestどうしてる?EntityFrameworkならこのあたりだけど
https://msdn.microsoft.com/en-us/library/dn314429(v=vs.113).aspx
2017/10/03(火) 21:12:10.82ID:F9jUpGNo
>>696
普通に開発用のDBに繋げよ
DapperならSQL直書きだろ?
テスト対象はそのSQLそのものなんだからDBが本物でないと何の意味もない
2017/10/03(火) 21:22:08.49ID:F9jUpGNo
補足
Dapperを直接使用してる箇所のテストは上述の通りだけど、
それ以外の部分もDapperがないとテストできないと言うならDapper云々以前に設計が悪い。
それこそリポジトリパターンを使うなりしてDapperに依存しないように差し替えるべきだな
2017/10/03(火) 21:28:24.12ID:38m+PlJN
日曜大工プログラマー(書店の本見て勉強)だとテストってやつがわからんのですが
テスト関連の書籍ってでてますかね
プロの方と素人との大きな違いはテストとバグフィックスなのかなって思うとるんですが
2017/10/03(火) 21:38:27.79ID:F9jUpGNo
>>699
用途の違いじゃね?
日曜大工プログラミングならモデルのロジックなんかほとんど無くて入出力とシステム制御のコードほとんどでしょ
そんなのテスト書いてもあまり意味ない
2017/10/03(火) 21:42:25.34ID:TvjHrbVD
環境をたくさん用意するのは趣味だと無理だろうね

仕様や性能、精度を満たしているかとか
色々な耐久テストとか負荷テストとか
自動でやったり人海戦術だったり

まあいろいろと
2017/10/03(火) 21:44:15.68ID:TvjHrbVD
>>700
テストが意味無いとか
余程の自信家ですねwww
2017/10/03(火) 21:47:51.12ID:+GDO9heE
Nunitでググる
使う
終わり
2017/10/03(火) 21:55:20.87ID:N5+yK7+U
>>699
プロと素人の違い?
プロならクライアントに要求されたものが糞だとしても要求通りに作り上げる。
用意された環境が数世代前のPCに長机、パイプ椅子だとしてもひたすら我慢。
我慢こそがプロの必須要件。
2017/10/03(火) 21:56:38.94ID:N5+yK7+U
>>702
そう、T和田が目の前に居てもテストは不要なのだ。
2017/10/03(火) 22:04:18.65ID:F9jUpGNo
>>702
自動テストのことね
趣味でもそりゃ手動テストはやるでしょ
2017/10/03(火) 23:03:44.76ID:aqsVlxub
>>684
>>688
君たちもリポジトリパターン調べてみたほうがいいよ
2017/10/03(火) 23:07:42.74ID:TvjHrbVD
>>704
そういう底辺のプロもあるね
っていうか、ほとんどがそういうただのワーカーか
2017/10/04(水) 03:43:45.05ID:WBoZ4SYZ
>>707
ガイジ過ぎ
2017/10/04(水) 04:08:49.71ID:inVVPc+t
BindingContextの使い方がわからないのですが調べてみても記事がなく困っている状態です
DataGridViewのDataBingingと同じものなのでしょうか?教えてください
2017/10/04(水) 06:20:45.30ID:92yhAxWz
>>708
ワーカー?
日本のIT産業は奴隷産業なのだ。
奴隷からは何の新しい文化は生まれない。
韓国にさえ負けている日本がIT後進国である原因。
2017/10/04(水) 06:52:36.82ID:D0l3uaQA
奴隷みたいな働き方をさせられてる奴は結局その程度の能力なんだよ
そういう奴にも仕事があるか、そうでないかの違いだけ
欧米だと基本的にパッケージとオフショアだからね
2017/10/04(水) 08:37:31.27ID:AXmk8D8J
>>712
米国はプロジェクト毎に採用と解雇だよ。
エンジニアは常に流動的。
2017/10/04(水) 09:43:16.39ID:uEf1X1K/
>>707
よくある、手段と目的が違ってるのすら自分で分かってないパターン。
2017/10/04(水) 09:58:43.83ID:Jn2HeJe2
>>712
能力のせいもあるたろうが日本は至るところに奴隷市場がある。
産業構造が良くない。
2017/10/04(水) 10:17:41.36ID:4nywC7FJ
>>715
これは>>712が正しい。

むしろ本当は本人自身の能力にある問題を社会に問題があるかのようにすり替えて
自分を慰めている奴が多すぎるのが日本の問題。

簡単に言えばただの需給の問題。
アニメや映像制作の仕事もそうだけど、大幅に供給超過だから
質が低い者が買い叩かれているだけの話で、これは仕方がないどころか
むしろ社会的に好ましい。(そうでなければ需給のアンバランスの調整メカニズムにならないから)
2017/10/04(水) 10:21:58.39ID:Jn2HeJe2
>>716
IT産業って供給過多状態なんか?
2017/10/04(水) 10:40:25.08ID:65kSOn7U
>>717
人手不足ッスよ
2017/10/04(水) 10:46:01.75ID:65kSOn7U
いつでもいいからとりあえず請けてくれとか言って納期から2年過ぎてるタスクが手も付けないで積んだまま

よく怒らないで待ってるなぁって思う
しかもそういうタスク自分で持ってきてるくせに緊急だ緊急だってさらに積んでくる馬鹿な客

人もいないからプロジェクトが始まったら結構キツイ残業をさせられる
マジ、今もやめた方がいい
人がいないから一人に平気で2、3個プロジェクト投げてくる
出来もしないのに
2017/10/04(水) 10:54:14.08ID:Jn2HeJe2
>>718
だよね〜
SIer案件には近づかないようにしようw
2017/10/04(水) 11:00:00.61ID:4nywC7FJ
>>717
じっぱひとからげには言えない。

デキる人は足りてない。デキない人は大幅に青あってる。だから待遇が悪くなる。
それだけの話。
2017/10/04(水) 11:02:01.68ID:upJMOkRI
>>710
BindingSourceに役割を譲ってるから今から調べる意味はないと思うぞ
簡単に言えばデータソースを共有する範囲を決めるためのものだな
2017/10/04(水) 12:03:55.89ID:uEf1X1K/
他の業界と違って、必要な技能がなくても受け入れる懐の広さがあるよなwww
2017/10/04(水) 12:19:06.82ID:ePCNnyJm
>>723
Excelが使えないと駄目でしょwwww
2017/10/04(水) 12:31:20.71ID:zotkLvwh
下級SEはExcelにテストパターンをずっと書くだけの仕事を何年もするって聞いたけど
本当なんだろうか?
2017/10/04(水) 12:33:56.08ID:X/chSHNo
>>714
どっちもそう思ってるパターンだね。
2017/10/04(水) 12:34:31.64ID:zotkLvwh
IT業界でどんなお仕事なさってるのって聞かれたらなんて答えてるのかも気になる
2017/10/04(水) 12:36:21.87ID:zU1qviO4
>>725
定年までエクセル職人だよ
2017/10/04(水) 12:37:22.06ID:eKN2AIaa
>>724
正直、そこらへんの非IT会社の事務員でちょっとPC得意ですくらいの人間の方がExcel使えると思うわ
VBAどころか数式ちょっと使えば一瞬で終わるような単純作業を必死に手作業してる奴ばっか
ITプロフェッショナルって何なんだろうと思う
2017/10/04(水) 12:43:52.78ID:hBVSLcAI
うちの職場にはそんなヤツいないけど
2017/10/04(水) 12:48:23.25ID:zotkLvwh
日立とかにいそう
地元の工業高校出て死ぬまでエクセル職人
でも中小企業のPGより給料がいいみたいな
2017/10/04(水) 12:50:45.83ID:e2PGw4tF
>>729
商業高校でいまだに電卓早打ち競技やってるからな
2017/10/04(水) 12:56:32.70ID:ePCNnyJm
>>729
IT業界のExcelは表計算ソフトウェアではありません。単なる方眼紙です。
2017/10/04(水) 14:42:16.26ID:aFhVtil1
あるオブジェクトのプロパティを取得しようとして、もしそのプロパティを持っていないと例外出ますよね?
どうすれば回避出来ますか?
2017/10/04(水) 14:46:50.16ID:65kSOn7U
>>734
お前を外す
2017/10/04(水) 15:07:08.71ID:Mu1M4tJS
>>734
なんでそんなことしたいの?
2017/10/04(水) 15:17:21.66ID:vUJCH9qc
>>734
Type.GetProperty(hogehoge)
では
738デフォルトの名無しさん
垢版 |
2017/10/04(水) 15:32:21.88ID:mhZMhlTM
まずプロパティがあるかどうか訪ねないで、いきなりプロパティに繋げようとするからダメって事だよな?
いきなり知らない家にいって、ユマちんを出せって言っても通報されるみたいなもんだ。
2017/10/04(水) 15:39:22.84ID:ZtUzMtUQ
>>737
そもそも論としてそのプロパティ持ってないオブジェクトに
プロパティでアクセスできるコード書いてるのが問題なんだよ

そこじゃなくて違う所を見直そう
740デフォルトの名無しさん
垢版 |
2017/10/04(水) 15:40:19.16ID:PsbRicdP
public int aaa;
public int aaa{get; set;}

この2つって全く同じ動き?
741デフォルトの名無しさん
垢版 |
2017/10/04(水) 15:47:27.79ID:PsbRicdP
大したの組んだ時無いからわからないけど
get; set;で記述する利点ってなんですか?
2017/10/04(水) 15:48:28.56ID:X/chSHNo
>>734
object.GetType().GetProperty(propertyName) で確認
2017/10/04(水) 15:50:18.77ID:vUJCH9qc
>>739
dynamicでexcelとか使おうとしてるんじゃないの?
で、バージョン違いでプロパティが無いとか。
2017/10/04(水) 15:52:48.11ID:vUJCH9qc
>>740
set;getはファンクションなのでrefとかが使えない。他の動きは同じでは。
2017/10/04(水) 15:57:13.34ID:vUJCH9qc
>>741
get;setだとロジックが後で組み込める。
ても、単一アセンブリだと余り関係ないかも。
746デフォルトの名無しさん
垢版 |
2017/10/04(水) 15:59:30.46ID:PsbRicdP
>>744
>>745
あざす
Codelensも出るしファンクション?メソッド?のほう使ってこうと思います
2017/10/04(水) 16:04:29.61ID:vUJCH9qc
>>746
外部公開するのはget;setでプライベートなのは変数で良いと思うけど好きにすればw
2017/10/04(水) 16:05:33.70ID:inVVPc+t
>>722
わかりました

オブジェクト指向で詰まってしまったので聞きたいです
各コントロールのインスタンスを保持する変数って、親Formで基本は持っておくべきでしょうか?
タブ型ウェブブラウザーを作っているんですが、TabControl・TabPage・WebBrowserは各自TabPageの変数はTabControlの下、WebBrowserの変数はTabPageが持っています
これだと前回終了時のタブを次回起動時にリストアしようとするとすごい設計が悪くなります
どちらが良いのでしょうか?教えてください、ほんとはObserableCollectionを活用したいのですが、どう書けばいいのかわからず仕舞いです
2017/10/04(水) 16:15:55.36ID:BauJPwx0
>>748
Application.Current.Propertiesにでもぶちこんでおけば?
2017/10/04(水) 16:25:32.68ID:eKN2AIaa
>>748
大域的な設計はトップダウンで考えよう
例えば、現在表示しているページのURLを管理するクラスがあって、
フォームはその内容を画面に反映させる&ページ遷移時に新しいURLを管理クラスに伝えると考えればいい
管理クラスはUIの細かいことを気にせずに状態の管理と保存・復帰だけを考えればいいし、
フォームは管理クラスの状態と同期するだけでいい
2017/10/04(水) 17:53:53.15ID:inVVPc+t
>>750
ありがとうございます。話を自分なりに理解するとタブ現在表示しているUrlを別クラスPageページクラスが持ち
Pageクラスを内包したPageListクラスでファイルへの保存・復帰処理を行い、Formクラスでインスタンスを持ちTabControlに渡し、
各タブで何を表示するかのコントロールはTabControlで行おうと思うんですが、こういう感じですか?
2017/10/04(水) 17:57:11.27ID:65kSOn7U
タブコンはtabの文字にフォント最大でウンコって入力するとバグる
2017/10/04(水) 18:07:50.98ID:ZH15U2S2
>>751
全体の構造が憶測でしかわからないのに「これでいいですか」って聞かれても困ると思う
タブコントロールの各タブにPageListとかがぶら下がっていてそこを選択して表示するとかなんだろうけど
質問の仕方から見ても自分でもまとめられていないようだし、まず動くもの作ってから拡張していけば?
2017/10/04(水) 19:17:54.57ID:65kSOn7U
タブコンなんて使ってる時点でゴミ
とか言ってみる納品
2017/10/04(水) 20:10:16.69ID:+JSlwxf3
Rails, React, Electron, AngularJS などのフレームワークを参考にすれば?
2017/10/04(水) 20:35:25.42ID:i6quWUAT
プロパティってgetset関数毎回書くのアホらしいので省略しませんか?ってのかと思ってましたけど、レス読んでると他に意味があるんでしょうか?
浅い知識しかないので気になりました
2017/10/04(水) 20:44:18.31ID:0TdBJUYX
>>756
>>745に書いてあるようにメソッドのように扱える
必要ないのならpublicとかinternalとかの変数にして好きにしたらいいと思う
2017/10/04(水) 21:14:51.00ID:ULvxLO80
>>756
書くのが面倒って言うより、ゲッターとセッターは
オブジェクト指向におけるオブジェクトの属性って概念の素直な表現になってないのが
美しくないというか、直感的じゃないよね
2017/10/04(水) 21:53:15.88ID:D0l3uaQA
データクラスを除けば、最近は作ったプロパティの大半が読み取り専用だわ
セッターいらね
2017/10/04(水) 22:33:20.23ID:X/chSHNo
>>751
current urlのコレクションを管理するクラスを自前で作って、そのコレクションをシリアライズ/デシリアライズするイメージだよ
>>750はわかりやすく書いてくれてると思うぞ

current urlのコレクションはMVCのModel
Viewに依存すべきじゃない
2017/10/04(水) 22:37:19.76ID:inVVPc+t
イベント実装しようとしていますが難しいですね
全然勉強してこなかったことが身にしみてきます
2017/10/04(水) 23:32:25.16ID:inVVPc+t
自分でイベントを書くときに思ったのですが、
イベントを発生させるときは、そのイベントがnullではないことを確認するのはなぜでしょうか?
2017/10/05(木) 00:08:10.31ID:kvz6wfH4
例外になるから

nullチェックを避けるために何もしないラムダ式を登録しておく方法もあるけど、
なんか馬鹿くさいのは確かだね

VBみたに専用ステートメン用意した方がよかったかも。
でもこのVB方式はカスタムイベントで問題が出るそうだけど
2017/10/05(木) 00:20:49.58ID:w76cxVZ0
今は ?. があるからどうでもいい
ソースでイベントでnullチェックしてたら古いソースなんだなと思う

そうnullチェックは昔話
2017/10/05(木) 06:52:22.86ID:AIDxl0vl
>>762
イベントを使わない場合に落ちるから。
オレオレイベント実装で必ず使うのなら不要。
2017/10/05(木) 07:15:53.39ID:gKycoOZO
業務システムなんですが、今どきeachでもないfor文の多重ループ書く人って流石にマズいですか

それとも普通でしょうか

他人の四重ループを見て世間ではどうなのだろうと思いまして
2017/10/05(木) 07:25:17.32ID:lN/7t8RB
>>766
ixyzとかあると簡単に4重ループできるぞ
どうやって回避するんだ?
i=オブジェクト数、x方向、y方向、z方向
ってなってたら俺はこのままのがいいと思うが?

多重ループの数でPGの実力見ようとしてるお前がキチガイ過ぎてどうにもw
2017/10/05(木) 08:26:31.17ID:etvKz/hQ
行列計算とかなら普通
ビジネスアプリでやるとちょっと実力疑われるね
2017/10/05(木) 08:51:15.85ID:nBCW+G24
名前の隠蔽とオーバーライドの違い・意義について教えていただきたいです

名前の隠蔽: 同じ名前のメソッドを派生先で作ると基本クラスの同名メソッドは見えなくなる

オーバーライド: 派生先でオーバーライドメソッドを定義することによりインスタンス化したオブジェクトの基本クラスの内容を書き換えること

ということで間違いないですか?
オーバーライドメソッドのこの「インスタンス化した後に内容を変更する」というのが多態性であるとネットであったのですが名前の隠蔽で様々なメソッドを定義して使うのは多態性に当たらないのですか?どうしてもこの違いだけわかりません
どなたかお願いします(><)
2017/10/05(木) 08:52:36.97ID:lN/7t8RB
状況によるよ
多重ループ避ける程度でいちいち意味不明なメソッド作られても困る
2017/10/05(木) 08:53:18.07ID:lN/7t8RB
>>769
スレ違い
2017/10/05(木) 10:03:33.52ID:ImlnvRbs
>>766
numpyつかえよw pythonだけど。
2017/10/05(木) 11:22:55.40ID:URIOD7FQ
>>766
本当に四重ロープが必要な処理で
最適化した結果ならしょうがない
個人的には業務システムでそう言う状況に出会ったことはないが
2017/10/05(木) 11:30:16.11ID:Bb6+6uGp
>>769
多態って何だ?みたいな哲学論(笑)は後回しにして機能的な違いだけに注目した方がいいよ。

http://www.atmarkit.co.jp/ait/articles/0209/11/news001.html
↑の記事にある通り、隠蔽の場合はインスタンスとそのインスタンスの入っている変数の型が一致している
場合のみ隠蔽したメンバーが呼ばれるのがオーバーライドとの違い

上の記事、オーバーライドより隠蔽を使うのが普通って言ってるような印象を受けるけど
実際は逆だからそこは勘違いしない方がいいよ

隠蔽はベースクラスの設計がおかしい場合の回避策みたいな感じでしか使われないと思う。
だからとりあえずはオーバーライドだけ覚えれば問題ない
2017/10/05(木) 11:33:23.98ID:URIOD7FQ
>>769
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/knowing-when-to-use-override-and-new-keywords

shadowing(method hiding)もoverrideも多態性を実現する仕組みの一つ
2017/10/05(木) 11:33:40.95ID:tEO8Lw4y
何らかの集計作業だろうが、そういうのはDB使えば簡単だよな
2017/10/05(木) 13:06:50.48ID:SnoJeaOY
(入力して)と表示
oppaiと入力
入力したのはoppaiです。と出したいんだが
2017/10/05(木) 13:08:51.98ID:Bb6+6uGp
というポエム?
2017/10/05(木) 13:58:53.63ID:la6tU9bd
>>777
https://ideone.com/9aSQgU
2017/10/05(木) 15:06:06.29ID:iGkRBCV3
>>774
ありがとうございます!
2017/10/05(木) 23:14:11.64ID:Xseher3k
Console.WriteLine(“”);
string = Console.ReadLine();
の意味がわからんな。Console.ReadLineをstringに代入する所とか
2017/10/05(木) 23:51:04.92ID:HMECZ5+m
>>781
それだけ見せられても誰もわからない
エスパースレじゃないんで
2017/10/06(金) 00:39:00.40ID:HTxWyqCb
>>781
Console.ReadLine()で処理した結果の文字列を
stringという名前の変数に代入してる
name = Foo.GetName()と同じ
784デフォルトの名無しさん
垢版 |
2017/10/06(金) 00:44:39.70ID:BZdgO6jG
さすがにそれは説明せんでもいいやろw
2017/10/06(金) 01:04:12.92ID:HTxWyqCb
>>784
そうかな? わかってたら「Console.ReadLineをstringに代入する所」なんて書き方しないと思うんだが
2017/10/06(金) 06:57:53.28ID:R65vFnX0
>>781
1行目:画面に1行空行を書き込む
2行目:ユーザーの入力を受け取り、Enterが押される(=改行)と、その1行を変数stringに格納
2017/10/06(金) 06:59:00.06ID:/+rBbbka
Form1のlowLayoutPanelに他のクラスからボタンを追加したい
という場合には
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1434882684
この内容を理解すれば良いのでしょうか?
2017/10/06(金) 07:21:39.66ID:/+rBbbka
ごめんなさい。とりあえず別の方法でお茶濁して解決しました
まだ↑のは理解が及びません
2017/10/06(金) 07:24:15.11ID:/+rBbbka
解決したと思ってたの勘違いでした…すみません
>>787お願いします
2017/10/06(金) 08:38:15.32ID:R+OFu5Ep
>>789
Form1のインスタンスを他のクラスから参照てきる様にしとけはよいのさ
2017/10/06(金) 09:44:09.73ID:386xmGqT
>>762
なるほどです、イベントの中がNullの場合発生させないということなのですね
あと自分でイベントを定義するときInvokeメソッドを呼ぶのはなぜでしょうか?
792デフォルトの名無しさん
垢版 |
2017/10/06(金) 10:14:27.91ID:UT/zOTND
拝む為さ。
2017/10/06(金) 10:41:08.98ID:R+OFu5Ep
>>791
>>792 も言ってるようにお祈りおまじないの部類。invoke無くても同じ。
UIスレッドで実行するためのcontrol.invokeとは別もん。
794788
垢版 |
2017/10/06(金) 11:33:07.23ID:/+rBbbka
>>790
ありがとうございます

https://ideone.com/76njZo

public FlowLayoutPanel flowLayoutBase = new FlowLayoutPanel();
とForm1外に持ち出して、ボタン生成用のクラスをFrom1の継承クラスにしてもボタン現れず
で、こういうことじゃないだろう…ということで色々やってみて

外部クラスからインスタンス参照というのを参考に
https://ideone.com/TFCiQp
こんな形のメソッドに纏めて、そこを外部クラスから参照しようとするも、どう参照するのか…
恐らく何か的はずれなことしてると思いますが、何が駄目なんでしょうか?

よろしくお願いします
2017/10/06(金) 11:38:08.44ID:Pjx+vQ2Q
>>791
?.演算子を使いたいから
デリゲートを呼ぶときは普通はInvokeは省略してaction()のように書くけど、
nullのとき何もしたくない場合にClick?.()みたいな書き方はできないから、仕方なくInvokeを明示的に書いてる
2017/10/06(金) 11:46:30.70ID:kruj0zmW
windows form 上にIPカメラ(AXIS製)の動画を表示したいです。
どうすればよいでしょうか?

OpenCVとか使うのが一般的なのでしょうか?
環境的に、社外ソフトをインストールし辛いので、確証を得てから試したいと思っています。

dllを配置するだけのmjpegprocessorとかは違うのかな?

調べる手がかりでも教えてもらえればありがたいです。
2017/10/06(金) 11:55:14.52ID:Z91Qg1J2
>>794
Flpset()がなんでForm1_Load()の中に?
目眩がしてきた。。。
2017/10/06(金) 12:22:26.38ID:/+rBbbka
単純なテストで使い方を学ぶ段階なので、FlowrayoutpanelをForm_Load()の中で作るのが自然だと思ったからですが…なにか変ですか?
Form1にあるFlowrayoutpanelに外部クラスからボタン設置する方法を色々試してるので…
Flpset呼ばないとパネル無い状態ですし…
Flowrayoutpanelに外部クラス(ButtonRayout)から使うためにFlpsetを作った感じです(色々的外れかもしれませんが)
まだ色々よく分かっていないので、頓珍漢なことになってるとは思いますがすみません
2017/10/06(金) 12:50:09.21ID:aLvKLfqn
>>798
Flpsetをパブリックメソッドにすれは良いだけでしょ。
2017/10/06(金) 13:01:49.27ID:/+rBbbka
>>798
public void Flpset()←だとpublicがこの項目に対して有効ではありませんと出てしまいます
2017/10/06(金) 13:06:55.40ID:aLvKLfqn
>>800
Form1_Loadから出さないと
2017/10/06(金) 13:22:30.01ID:/+rBbbka
>>801
ありがとうございます
Form1_Lordがタダのイベント(メソッド)だったというの、頭からすっかり飛んでました
今は時間無いので別クラスからControl配置は試せませんが、あとで色々やってみます
とりあえず、外に持ち出してpublicは適応できて、前と変わらぬ作動は出来ました
2017/10/06(金) 13:32:06.32ID:Sc8ZiJsi
>>802
ま、頑張って(^o^;
2017/10/06(金) 14:28:37.52ID:UQfFYJO/
ロケールが日本語環境のところで
指定された国コード(ISO)を指定された言語で表示させるには
どうしたらいいでしょうか。

string CountryName = GetCountryName("CN", "ko-kr");

という風に呼んだとき、中国という文字を韓国語で得たいのです。

public string GetCountryName(string CountryCode, string language)
{
  // この中
}

CNのRegionInfoを取得するところまでは出来たんですが、
DisplayName だと日本語で、NativeName だと中国語で、それぞれ取れるのですが
韓国語に変換させたいのです。

Windowsのロケール自体を韓国に変更すれば、DisplayNameで韓国語が取れましたが
それはやりたくないです。
2017/10/06(金) 14:57:21.64ID:BnWE0qO1
やったことないけど
Application.CurrentCultureか
Thread.CurrentThread.CurrentCultureを変えるのは?
2017/10/06(金) 15:35:24.88ID:vlZuL3bi
MSDNにはCurrentUICultureの方だって書いてあるね。
システムが持ってるリソースから拾ってくるんだろうからまあそうでしょう
2017/10/06(金) 15:48:05.44ID:Knp3qtDQ
実際にやるとできないけどね
2017/10/06(金) 16:12:02.05ID:+xC3oUH1
当たり前だけど韓国語とかの表示させる言語の言語パック入ってなかったらどうにもならない
2017/10/06(金) 17:25:14.70ID:UQfFYJO/
> CNのRegionInfoを取得するところまでは出来たんですが、
のところを補足します。

var CountryCode = "CN";
var CountryName = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.SpecificCultures)
  .Where(a => a.TwoLetterISOLanguageName.Equals(CountryCode, StringComparison.CurrentCultureIgnoreCase))
  .First().DisplayName;
return CountryName;

で、実行ロケールでの(日本語での)「中国」は取れました。
んで、どこへ "ko-kr" を挟み込めば良いのかが分かりません。

> Application.CurrentCultureか
> Thread.CurrentThread.CurrentCultureを変えるのは?

そーいう力技しかないのかなぁ・・・
2017/10/06(金) 17:29:35.35ID:8z2SuXdm
>>804
何で自分で表示するという選択肢がないんだ?
2017/10/06(金) 17:44:13.26ID:vlZuL3bi
>>809
その「力技」もやってみたけど確かに出来ないね
普通に自分でテーブル用意した方が早い気がする
2017/10/06(金) 18:04:12.31ID:T+Euxqip
MSにバグってんだよカス
って送ってみるとか?
813デフォルトの名無しさん
垢版 |
2017/10/06(金) 18:51:07.05ID:uoobo3tb
仕様がない
2017/10/06(金) 19:21:44.67ID:0wz1FkX0
>>794
入れ子にしたメソッドがエラーにならないのを初めて知ったw
使い道が思いつかないけどw
2017/10/06(金) 19:45:45.19ID:UQfFYJO/
>>810-811
元号もそうだけど、この手のはなるべくFrameworkに任せてしまいたいのです。
国が増えるたびにメンテなんてやりたくない・・・
(Frameworkが更新されるはずだから、それに依存したい)
2017/10/06(金) 19:47:26.00ID:XI0GFWBX
>>814
エラーになるでしょ
2017/10/06(金) 19:57:15.36ID:0wz1FkX0
>>816
VS2017でビルドまで通った
2017/10/06(金) 19:57:22.86ID:VLsCvj8e
>>816
ローカル関数知らないの?
2017/10/06(金) 19:59:49.34ID:vlZuL3bi
>>815
ない袖は振れないし仕方ないかと。
まあ普通に考えて想定された使い方と違うんだろうね

日付や数値のフォーマットはデフォでいろんな地域のが入ってるみたいだから
ついでに国名ぐらいサービスしてくれてもいいような気がしないでもないけど
2017/10/06(金) 20:00:42.81ID:xndJWDdr
その言語のOSならその言語で表示されるからそれでいいんじゃないの
2017/10/06(金) 20:06:57.34ID:XI0GFWBX
>>818
ごめん、知らんわ。
いつの間にpascal見たいな事ができる様に成ったんだ。
勉強不足でスマヌ。
Func、Actionで間に合ってた。死んでお詫びします。
2017/10/06(金) 22:13:51.00ID:1hhvTT+g
>>821
C# 7 (Visual studio 2017) からだから追っかけやってる奴じゃなきゃ知らないのも当然
2017/10/06(金) 23:08:48.64ID:386xmGqT
>>750
すいません、考えたのですが設計できません
データを管理するクラスを作り、UIが持っているUrlプロパティをFormが同期させるのはわかっていますが、タブの並び替えを実装しているので頭が混乱してしまいます
トップダウン設計で今までTabControl以下で持っていたTabPage変数と、TabPage以下で持っていたWebBrowser変数をFormに持ってきたのですがわけがわからなくなってしまいました
何をどこで持つべきなのかわからなくなってしまいパニックな状況です、設計ってかなり難しく感じています
2017/10/06(金) 23:10:09.47ID:386xmGqT
>>793
>>795
わかりました、今はおまじないとして覚えておくことにします
2017/10/07(土) 09:37:42.55ID:fKlRQVav
C#ってモダン言語に含まれますか?
2017/10/07(土) 10:12:23.35ID:hs9R8q6v
むしろfutureやで
2017/10/07(土) 10:24:35.11ID:34mGSqzO
C#はレガシーになりつつあるけど
拡張してなんとなく新しく見せてる

ここから新しく見せるのは無理かな
2017/10/07(土) 10:42:43.38ID:b4KK/o19
JavaとKotlinの関係のように新しい言語に乗り換えるべきだろうね
最近の歪な言語仕様拡張には辟易するよ
2017/10/07(土) 11:04:55.95ID:RmE+cs6m
プログラムに関係ない雑談は他でやれよ
2017/10/07(土) 11:46:02.70ID:ky0kCJyY
>>828
c#の移行先プリーズ
2017/10/07(土) 11:53:21.00ID:ajW7fEjK
LINQってSQLとは関係ないの?
2017/10/07(土) 12:06:27.83ID:ky0kCJyY
>>831
EntityFrameworkとLINQ to Entitiesでググってこい
LINQは単に、いろんなデータソース(DB、配列、リスト、xml)に対する処理を同じようにかける枠組み
2017/10/07(土) 12:37:22.67ID:/LXY59wR
>>831
LINQのクエリ式はSQLを参考にしてるとは思うけど
2017/10/07(土) 12:52:58.01ID:ky0kCJyY
>>833
まあ基本はメソッド式だけどね
2017/10/07(土) 15:36:39.34ID:+T+mCODn
>>830
F#
2017/10/07(土) 16:10:33.77ID:uSVuDn94
>F#
言語としては優秀なのかも知れないが
どうにも慣れない
2017/10/07(土) 20:05:34.57ID:MYJ1b1uW
君たち.netconf行ってないの?
2017/10/07(土) 20:18:52.89ID:XgJIfiWa
>>837
所用で…今YouTubeにあがってる動画見てる
2017/10/08(日) 19:11:25.29ID:fHcFBAaS
今現在使っているタブ型WebBrowserでTreeView使ってJaneみたいなブックマーク機能を取り入れたいんですが、
フォルダとファイルのツリー構造を実現するクラスが思い浮かびません、どのようなクラスを作ればよいでしょうか?
2017/10/08(日) 19:19:10.91ID:MyZuixT4
>>839
http://www.atmarkit.co.jp/fdotnet/dotnettips/260createtreeview/createtreeview.html
2017/10/08(日) 20:27:10.69ID:D0Vtmcpk
コントロールじゃなくてクラスじゃないの?
2017/10/08(日) 21:34:34.51ID:p32irLzq
乱数のとこわけワケワカメ。NextとかNextDoubleとか
2017/10/08(日) 21:36:14.51ID:fHcFBAaS
>>840
ありがとうございます、ブックマーク機能が一番骨折れそうですね
844デフォルトの名無しさん
垢版 |
2017/10/08(日) 22:34:55.91ID:jXMyRhU9
c#erの皆さんがこれだけは覚えていて損はないって言語なんですか?CとC++以外で
2017/10/08(日) 22:41:13.30ID:93IJP3PA
使えて損しないのはJavaScript
学んで損しないのはLisp
2017/10/08(日) 22:48:37.70ID:D0Vtmcpk
>>844
javascriptはクソだけど使う機会が多いので覚えたほうがいいと思う
しかも文法じゃなくてどういう風に使ってるかも含めて覚えたい

あとはpython
文字列など扱うとき便利
2017/10/08(日) 22:53:18.48ID:/QhTkQlJ
>クソだけど使う機会が多いので覚えたほうがいい
本当それなw
2017/10/08(日) 22:54:30.83ID:/QhTkQlJ
後はSQLを言語に含めて良いならSQL

個人的にはPowerShellもオススメしたい
2017/10/08(日) 22:55:30.47ID:26uLkZyR
>>848
ようやくサーバー系OSでデフォルトになったからな
2017/10/08(日) 22:56:59.48ID:FNqA9s92
つphp

掲示板ってどうやって作るんですかぁ?
って聞いてくる可愛い女の子に教えられる
851デフォルトの名無しさん
垢版 |
2017/10/08(日) 23:00:57.61ID:jXMyRhU9
皆さんありがとうございます
やっぱりweb系は覚えておいて損はないんですね
javascriptやphpはどうにも好きになれないんですが頑張ってみようかな。。
2017/10/08(日) 23:09:33.04ID:7EdoyHuq
>>851
個人的には>>846が近いけど
何をやるにせよ新しいバージョンに対応した教材を
853839
垢版 |
2017/10/08(日) 23:38:20.96ID:fHcFBAaS
TreeNodeで階層は分けれたのですがフォルダとURLの区別が付きません
お気に入りでURLとフォルダの区別をつけるようにするにはどうすればいいでしょうか?
2017/10/08(日) 23:43:44.07ID:LvJy3Cq4
>>853
Tagプロパティに何かしらのオブジェクトでも突っ込んどけ
2017/10/09(月) 07:40:56.77ID:Zzx1e3hO
>>845
おれもLisp/JavaScriptに同意
JavaScript名前が某クソ言語に似ているが面白い言語だと思う。
海外のGeekたちがその毒気に当たって色々なライブラリーが開発されて今に至る。
2017/10/09(月) 07:54:19.25ID:tvCeOLo3
需要は多いのにモジュールもろくに整備されないって変な言語だよな
Web系連中のいい加減さが現れた言語だ
2017/10/09(月) 08:01:34.71ID:pi4w3jwR
最近は状況が変わって来てるよ
とにかく古い環境で古い知識を勉強するとロクなことにならん
2017/10/09(月) 08:01:44.05ID:Zzx1e3hO
npm left-pad事件なんてわけわからんの起きるしなw
2017/10/09(月) 08:19:00.65ID:Zzx1e3hO
>>851
Webアプリの本質的な所を理解するのにはc言語でcgiやるもの面白いぞ。
2017/10/09(月) 08:59:21.14ID:UEIAYP2F
>>859
cgiレベルならCでもperlでもたいして違わない気がする
文字列操作が多い分Cでやってたら本質的でないところで面倒なだけだし
2017/10/09(月) 09:04:59.65ID:Zzx1e3hO
>>860
c言語だとWebライブラリもないし全て自前で勉強にはなるだろ。
c言語でWebアプリなんか作っても難行苦行でしかないから作らんけどね。
サイボウズはc言語で作られてるらしいね。
2017/10/09(月) 09:11:47.98ID:CsWYGxTc
べつに、perlでやってもライブラリ使わなきゃWebの勉強としては変わらんだろ。
2017/10/09(月) 10:13:02.85ID:Y2JfmrWo
C言語でやるメリットってあるのかな
サイボウズってそんなにCPU使うようなサービスだっけ
2017/10/09(月) 10:31:59.67ID:Zzx1e3hO
>>863
サイボウズは20年も前に開発されたものだからな。
当時はc言語のcgiなんて普通にあった。2chもそうだったし。
2017/10/09(月) 10:34:00.35ID:VHpEwq8w
「初心者の質問スレ」で「C#に関係ない話題はやめてください」
>>844みたいなのはマ板でやれよ。板の意図とも違う
2017/10/09(月) 10:43:38.01ID:t8KOjWoA
>>861
なんでいきなりWebライブラリの話が出てくるんだよ w
cgi って言ってるんだからhttpヘッダー+生のhtmlでやるって話だろ
2017/10/09(月) 10:49:23.90ID:EXlp17KP
>>866
スレ違い
それに生は危険
2017/10/09(月) 11:10:56.57ID:9hl0U6ca
プログラムの勉強にC#で簡単なアプリ作ってみたのだけど、配布する前に難読化した方がよいと聞いてConfuseEx試してみたらマルウェア判定されて即消されちゃうのだけど、どうしたら難読化したアプリを配布出来るのか教えて下さい
もしかして難読化する方が少数派なのでしょうか?
2017/10/09(月) 11:15:39.19ID:Vj0lVF94
>>868
難読化はITリテラシーの低い経営者を狙った詐欺
C#じゃ難読化しても技術保護にはならないし
そもそもリバースエンジニアリングされるほど高尚な物じゃないだろう?
本当に保護したい技術はサービスとして提供して物は一切公開しない
2017/10/09(月) 11:16:09.72ID:VHpEwq8w
>>868
何故難読化するのか理由がちゃんとあるのか?
隠さなければならないコードがない限り普通は難読化しない
2017/10/09(月) 11:24:51.27ID:EXlp17KP
難読化ってリフレクションには影響無いのか?
例外のスタックトレースまで難読化されるんだろ。
2017/10/09(月) 11:29:25.08ID:6DW9ok56
C#で難読化とか吹き込んだ奴に聞けよ
まともなコンサルなら耐タンパー性が必要ならまずC/C++で開発しろと言う
2017/10/09(月) 11:43:25.86ID:Zzx1e3hO
難読化ツールなんて誰も使ってないのが良く分かったw
2017/10/09(月) 11:46:23.37ID:xMCJlje6
偉そうにしょうもない解答する奴は馬鹿だから無視していいよw
2017/10/09(月) 11:48:44.68ID:T0povuKJ
難読化って言葉通り読み辛くしてるだけだからな
初心者じゃなければ解析できるんだからあまり意味がない
2017/10/09(月) 11:51:02.13ID:2VEzXzCr
難読化を重視するならUWPに移行すればいいのに
2017/10/09(月) 11:52:12.53ID:A2XN0/QV
フロー難読化もあるから初級者上級者関係ない
解析は根気があるかどうかが問題だよ
2017/10/09(月) 11:54:51.63ID:M//uOX8+
難読化の目的理解してないやつ大杉だろw
2017/10/09(月) 12:00:45.54ID:9hl0U6ca
やはり普通やらないような事なのですね
なんとなくですが理解しました!
アプリ内に書いてある文字列で別のアプリで暗号化したものを復号化してみるアプリだったのですが、文字列が丸見えらしく知り合いに聞いてみたら難読化してみたら?との事でした
要は文字列だけ隠したいのですが何かしら方法はあるものなのでしょうか?
2017/10/09(月) 12:02:01.69ID:3IBabimx
>>879
ググれ
2017/10/09(月) 12:04:20.36ID:VHpEwq8w
>>879
本来の意図が分からないが元のアプリ内の文字列を最初から暗号化したら済む
解析もできないようにしたいのだったら難読化だろうが何だろうが無理
手間がどれだけかかるかだけの違いしかない
2017/10/09(月) 12:08:39.18ID:3IBabimx
パスワード c# プログラム内
でググったら
ハッシュがどうのこうのってのは出てきた
使えるかな?
2017/10/09(月) 12:12:31.64ID:pMEz2IHg
俺が書いたコードは難読化しなくても誰にも理解出来ないよ。
2017/10/09(月) 12:35:35.80ID:M//uOX8+
>>879
それは難読化じゃなく暗号化
君もだけどその知り合いもしばいときな
2017/10/09(月) 12:45:14.62ID:c41RoAYB
ツールを使ってjsのコードを難読化し、ユーザーはツールを使ってそれを可読化する
人間って面白いね
2017/10/09(月) 12:45:28.90ID:Bjp73H7L
知り合いはともかく自分で自分をしばくのか
2017/10/09(月) 12:51:39.85ID:Zzx1e3hO
>>879
そもそも、復号キーをコードの中に埋め込んでいるのが間違いだろうけどね。
復号キーを暗号化しても復号アルゴリズムがコードの中にあったら無意味だよ。
2017/10/09(月) 12:54:13.72ID:T0povuKJ
>>887
そういう場合は秘密鍵をサーバーに、プログラムには公開鍵だけを持たせるやり方が簡単
ネットを介さない環境で使用するアプリとかなら仕様がわからんんがキーコンテナを使え
2017/10/09(月) 12:54:50.95ID:T0povuKJ
すまんレス番間違った >>879
2017/10/09(月) 13:21:52.47ID:9hl0U6ca
みなさまありがとう
アプリAで暗号化、アプリBで復号化、他者はBしか持っていないという状況を想定して、アプリB内の復号化に使う文字列をなるべく隠したくて質問させて頂きましたが難しそうですね

いろいろ素人なりに調べてみたけれどやはり秘密鍵をどうにかサーバーに置いておくのが良さそうに感じました
ただ適当なサーバーに適当に秘密鍵をアップしてもあまり意味なさそうなのでその辺りもよく考えないとダメそうですね…

ゆくゆく作りたいアプリのために始めてみましたが、ある程度解析しづらいらしいC++などで最初から考え直しても良いのかもしれません
アドバイスありがとうございました
2017/10/09(月) 13:49:55.29ID:KtpP5XlM
>>890
鍵を外部ファイルにすればいいだけだろ
なんでcでやるとかサーバー使うみたいなトンチンカンな方向に行ってしまうんだ
892デフォルトの名無しさん
垢版 |
2017/10/09(月) 14:00:57.24ID:qEhozSMZ
>>891
外部ファイルだと中身見れるから意味ないだろバカか
2017/10/09(月) 14:07:28.45ID:KtpP5XlM
>>892
ははは
2017/10/09(月) 14:13:38.87ID:T0povuKJ
外部ファイルが許されるのは入力パスワードに対してのハッシュくらいだろ
879の案件には合わない
2017/10/09(月) 14:18:01.80ID:T0povuKJ
更に外部ファイルの改竄チェックも必要になるな
2017/10/09(月) 14:21:39.53ID:KtpP5XlM
あ、ここ初心者スレだったか
2017/10/09(月) 14:22:02.94ID:6DW9ok56
Bで作った公開鍵をAに渡して暗号化させればいいだけの話でないのん
秘密鍵だけで無理にやろうとするから当たり前のように無理が出るのでは
2017/10/09(月) 14:23:03.18ID:6DW9ok56
まあ、厳密にはその場合でも、一時共有鍵は使うだろうけど
899デフォルトの名無しさん
垢版 |
2017/10/09(月) 14:40:20.42ID:qEhozSMZ
>>896
トンチンカンなバカレスするお前は初心者以下
2017/10/09(月) 14:52:27.91ID:KtpP5XlM
>>899
わからないならそう言えば?
2017/10/09(月) 14:58:22.98ID:Ow6+xo9r
>>900
関連スレに2度と来ないでくれ
902デフォルトの名無しさん
垢版 |
2017/10/09(月) 15:01:38.21ID:qEhozSMZ
>>900
じゃあ早く俺のレスに答えて
2017/10/09(月) 15:02:18.20ID:T0povuKJ
ID:KtpP5XlM はただの荒らしだろ
もう構うな
2017/10/09(月) 15:02:45.85ID:M//uOX8+
>>887
無意味ではないよ
文字列抜き出すのとアルゴリズムの解析とでは
必要な時間が全く違うからね
それこそ難読化の出番
2017/10/09(月) 15:05:23.09ID:M//uOX8+
>>890
Aに秘密鍵、Bに公開鍵で。
Aの秘密鍵を守る対策は別途必要
2017/10/09(月) 15:06:38.70ID:LtbrVXIC
埋め込みでリソース持つのと、外部ファイルで持つのってセキュリティそんなに変わらんでしょ?
2017/10/09(月) 15:07:25.29ID:ZyuEIFSh
そもそも暗号化手順+暗号キーを知られたくないならまだしも暗号キーをとにかく知られたくないというのが分からない
元の質問者は終了宣言しているし外野が条件変えながら議論しても無意味
2017/10/09(月) 15:09:31.57ID:KtpP5XlM
暗号化通信の基本もわかってないのにプログラマ名乗っちゃダメだろ君たち
909デフォルトの名無しさん
垢版 |
2017/10/09(月) 15:10:52.65ID:qEhozSMZ
>>908
逃げんな
早く答えろ
2017/10/09(月) 15:15:00.06ID:of8Vs49y
>>891
それなんの意味があるんだよ w
2017/10/09(月) 15:18:53.37ID:KtpP5XlM
公開鍵で暗号化プログラムA
秘密鍵で復号プログラムB
Bの利用者は鍵ペアを生成
外部ファイルとして秘密鍵をプログラムに渡す
公開鍵を通信相手に渡す
終わり
2017/10/09(月) 15:22:46.29ID:KtpP5XlM
コード書けりゃプログラマじゃないぞ
お前らはC#なんてやっとらんでITパスか基本情報でも取ってこい
2017/10/09(月) 15:29:43.51ID:vwGL24JO
そのまえに日本語が書けないと困るな
2017/10/09(月) 15:30:38.86ID:LtbrVXIC
そういや試験は来週ぐらいか
2017/10/09(月) 15:39:49.40ID:of8Vs49y
>>911
だからそれなんの意味があるんだよ w
>>906の意味わかってないのか?
2017/10/09(月) 15:54:47.16ID:F9+aoLk/
if(HashPasswordForStoringInConfigFile(パスワード, "sha1").ToLower() == ハッシュ文字列)
{/*編集可能処理*/}

って書いてあった
2017/10/09(月) 15:57:26.54ID:ZyuEIFSh
>>916
>>879のデータの暗号化とパスワードの認証は別の話
ハッシュで認証するから元のパスワード持っていなくていいよ、てのはわかるが
2017/10/09(月) 16:04:00.40ID:LtbrVXIC
認証したいなら個別に別ルートでパスワード発行

ユーザー全員に共通パスワード持たせたいならセキュリティ諦めてリソース持つぐらいで十分
できれば中間にAPI噛ませて何かあった時の被害をコントロールできるようにしておいたほうがいい
2017/10/09(月) 16:39:19.76ID:F9+aoLk/
>>917
単純にテキストだけの話なの?
バイナリファイル読み込め的な?
2017/10/09(月) 16:39:54.37ID:Uib+y8KD
以前List<T>オブジェクトをXmlシリアライズ・デシリアライズする拡張メソッドを作ったのですがユーザー定義クラスのときだけ動きません
public static void SaveXml<T>(this List<T> list, string path)
{
T[] xmldata = list.ToArray();

using (FileStream fs = new FileStream(path, FileMode.Create))
{
XmlSerializer xml = new XmlSerializer(typeof(T[]));

xml.Serialize(fs, xmldata);
}
}

こういった感じでList<MyData>型の変数myDataList.SaveXml("D:\hogehoge.xml")と呼ぶとxml.Serialize(fs, xmldata)のところで
System.InvalidOperationExceptionが投げられます。ただのList<string>型の場合投げられません。
どこがまちがっているでしょうか?
2017/10/09(月) 17:09:31.29ID:mhNcAFC5
とりあえずその投げられた例外をToString()して全部読んでみて
922デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:14:46.63ID:qEhozSMZ
>>911
はあ?
秘密鍵丸見えじゃ無意味って理解出来ないの?
2017/10/09(月) 17:18:01.05ID:RdvZrZJ8
>>922
君は果てしなく馬鹿だね
2017/10/09(月) 17:19:21.84ID:c41RoAYB
自分だけはバカじゃないという前提
925デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:23:16.60ID:qEhozSMZ
>>923
違う用途ならともかくこの件においては
データ改変できて無意味
2017/10/09(月) 17:24:22.08ID:RdvZrZJ8
>>925
そうかいじゃあやってみなよ
2017/10/09(月) 17:28:38.64ID:r14Jr9yH
>>920
型以外の条件を一切変更していないのに(ダメな人は他の条件も変えてたりするから困るw)
TがMyDataの場合だけ例外は発生するのであれば、
普通に考えてMyDataがXMLシリアル化可能な条件を満たしてないんでしょう。

例えばデフォルトコンストラクタがないとかそもそもpublicなクラスじゃないとか。
928デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:28:45.97ID:qEhozSMZ
>>926
は?
間違ったやり方をやるわけないだろバカ
2017/10/09(月) 17:29:14.61ID:RdvZrZJ8
>>928
できないんだね
2017/10/09(月) 17:34:23.08ID:Uib+y8KD
>>921
できなかったのはコンストラクタ定義していたせいでした、すいません
2017/10/09(月) 17:42:16.72ID:CACjh+QN
馬鹿の壁みたいだ

初心者のためにかくと
公開鍵は暗号化する鍵で誰にみせてもいい
秘密鍵は暗号を解く鍵でみせてはいけない

B利用者は自分のための公開鍵と秘密鍵を作る
作った秘密鍵をプログラムBに渡す

公開鍵は誰にでも渡してプログラムAで鍵をかけてもらったものを送ってもらう

B利用者は送られたものをプログラムBで鍵を解く

送った内容は秘密鍵を持ってないと中身がみえないので安全
2017/10/09(月) 17:47:02.95ID:0amLgkzQ
命名スレで暴れてた馬鹿おじさん
こんなところにいたのか
2017/10/09(月) 17:48:41.75ID:CACjh+QN
秘密鍵を相手に渡すのは馬鹿の極み
公開鍵は誰に見られてもいいので
難読化とかそういう以前の問題

セキュリティがどうこう言う前に勉強すべき

プログラムBが公開鍵持ってても何の問題ない
2017/10/09(月) 17:49:44.10ID:c41RoAYB
お互いにバカバカいっててレベル低い系?
935デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:50:42.44ID:qEhozSMZ
>>929
アスペか?日本語すら出来ないバカは死んでろ
生きてる価値も意味も皆無だから
2017/10/09(月) 17:51:09.22ID:CACjh+QN
馬鹿は馬鹿同士でお互いにバカにしあっていればいい
俺は横から初心者のために解説してるだけ
2017/10/09(月) 17:51:40.46ID:KtpP5XlM
>>935
鏡に語りかけてる
やばいやつだこいつ
2017/10/09(月) 17:51:44.57ID:r14Jr9yH
実にどうでもいい話だけど、元の質問者のケースは別人の間の通信ではないので、
公開非公開の区別の意味はないね。

この分野全然知らんけど、サーバーに復号化のための情報を置いたら安全って発想は
ちょっと理解できんなあ。

それってハッキングする側から見たら、単にサーバーの認証を突破するひと手間が
増えただけの話じゃないの?
2017/10/09(月) 17:52:50.89ID:c41RoAYB
争いは同レベル同士で起こるとはよく言ったものだ
2017/10/09(月) 17:54:11.26ID:CACjh+QN
>>938
多分適当にググれば10分ぐらいで何を言ってるかわかるよ
941デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:55:23.10ID:qEhozSMZ
>>933
ユーザーに改変されたくないデータをやり取りする場合そのやり方だと無意味
2017/10/09(月) 17:56:26.56ID:CACjh+QN
うっわ無知な馬鹿に絡まれた
最悪・・・

無知でも考えれば何とか答えが出るのに…
943デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:56:55.32ID:qEhozSMZ
>>937
バカはセキュリティ意識がないんだな
944デフォルトの名無しさん
垢版 |
2017/10/09(月) 17:58:13.55ID:qEhozSMZ
>>942
答えられないの?
2017/10/09(月) 17:58:55.36ID:S4nF/O79
>>938
最初から読めばファイル配布の稚拙なシステム作ろうとして注意されたのが分かる
多分本人は問題の本質に気付いていない
そしてこの問題はC#以前の話
2017/10/09(月) 17:59:02.92ID:c41RoAYB
人間の基本行動原理

自分だけはバカじゃないという前提
自分だけは誰よりも常に正しいという前提
2017/10/09(月) 18:04:39.80ID:LtbrVXIC
パブリックキーで暗号&復号化するのはパケットの話
サーバに収めるデータやDBは別
2017/10/09(月) 18:08:41.86ID:T0povuKJ
>>938
そうじゃなくてサーバーに復号化の情報を置くのではなくサーバーで復号化させるってこと
A-B間で直接やり取りできるなら別にサーバーじゃなくてもいい

どうでもいいけど質問者の案件の詳細がわからない限りこれ以上の言い争いは不毛だぞ
2017/10/09(月) 18:11:27.11ID:CsWYGxTc
サーバーで復号したものを安全にBに持ってくるにはまた暗号化が必要なんでは?
2017/10/09(月) 18:12:13.10ID:CACjh+QN
ようやく自分の誤りに気づき終息させようとするの術

その前に嵐扱いした人に謝ったほうがいいんじゃないかなw
2017/10/09(月) 18:14:40.29ID:T0povuKJ
>>949
一時的な暗号鍵を使う
その鍵は保存されないしユーザーにはわからない
2017/10/09(月) 18:17:25.45ID:T0povuKJ
>>950
俺に言ってるのかな?何も間違ったことは言ってないけど
2017/10/09(月) 18:18:49.58ID:CACjh+QN
>>952

>>911の手法は少なくとも正しい
2017/10/09(月) 18:19:37.05ID:zWF+LHai
情報小出しにして質問する→勝手な憶測で返す→条件無視の議論に発展
このコンボやめてくれ
2017/10/09(月) 18:20:42.30ID:A2XN0/QV
いつまで続けんの?
956デフォルトの名無しさん
垢版 |
2017/10/09(月) 18:20:54.51ID:qEhozSMZ
>>953
ユーザーが改変できるってさっきから指摘してるんたが?
逃げずにはやく答えてみろよ?
2017/10/09(月) 18:22:18.03ID:c41RoAYB
実にくだらない
2017/10/09(月) 18:24:21.88ID:r14Jr9yH
>>948
要するに、「デコーダー」側がハッカーと正規ユーザーを区別できなきゃ安全でも何でもないよね
2017/10/09(月) 18:24:23.29ID:CACjh+QN
>>956
まだ気づいてないのか?

よーく考えてみたら?
条件というか設定が間違ってる

それはBからAに送信するときの暗号化の話だから問題が逆
それにユーザーがコード改変して暗号化前に情報変えるのは無関係だろ
2017/10/09(月) 18:25:26.98ID:c41RoAYB
例えば>>959の文章でいうと

>まだ気づいてないのか?
>
>よーく考えてみたら?

の部分が不要
961デフォルトの名無しさん
垢版 |
2017/10/09(月) 18:32:17.71ID:qEhozSMZ
>>959
気付いてないのはお前の方だろバカ
ユーザーの元に秘密鍵があれば改変したデータを作って利用できるだろ
2017/10/09(月) 18:34:29.22ID:c41RoAYB
>>961
>気付いてないのはお前の方だろバカ
不要
2017/10/09(月) 18:34:41.77ID:CsWYGxTc
>>951
今度はその一時的な鍵をサーバーとBの間でどうやって安全に交換するかって問題に帰着すると思うが。
2017/10/09(月) 18:36:12.76ID:T0povuKJ
>>958
全然要されてない
要するなら利用者がハッカーだとしてもこのやり方なら安全ってこと
2017/10/09(月) 18:37:34.88ID:CACjh+QN
やっぱり馬鹿の壁だな
理解できない相手に正論を言っても無駄
2017/10/09(月) 18:37:45.93ID:UEIAYP2F
>>961
> 気付いてないのはお前の方だろバカ
お前だよ w

> ユーザーの元に秘密鍵があれば改変したデータを作って利用できるだろ
ちゃんと質問者のレス読めよ
>>890
> アプリAで暗号化、アプリBで復号化、他者はBしか持っていないという状況
2017/10/09(月) 18:38:21.65ID:zWF+LHai
今日の赤IDは全部NGで問題ない
2017/10/09(月) 18:38:55.70ID:T0povuKJ
>>963
公開鍵を使うに決まってるだろ・・・
2017/10/09(月) 18:39:34.24ID:c41RoAYB
>>965
>やっぱり馬鹿の壁だな
>理解できない相手に正論を言っても無駄

不要
2017/10/09(月) 18:40:11.30ID:CACjh+QN
公開鍵と秘密鍵についてよくわかってないのが多いな

httpsじゃダメだって言うんだろうな
怖い怖い
2017/10/09(月) 18:41:35.96ID:oNj7uBjL
>>938
同じ鍵で解読できる暗号が2種類あった場合、利用者に複合鍵を渡すと両方解読されてしまう
サーバーで複合すればユーザー情報に基づいてひとつだけ解読可能みたいなこともできる

あと、ローカルでの解読と違ってサーバーに不正アクセスするのは犯罪になるという障壁もある
972デフォルトの名無しさん
垢版 |
2017/10/09(月) 18:42:38.62ID:qEhozSMZ
>>966
はあ?
他者がBを持ってそのBに秘密鍵を置くなんてもってのほかだぞ?お前もバカか
2017/10/09(月) 18:43:23.56ID:c41RoAYB
>>972
>はあ?
>お前もバカか

不要
2017/10/09(月) 18:43:57.77ID:r14Jr9yH
>>964
安全じゃないでしょう。
質問者のケースの場合、暗号化されたデータをハッカーは利用可能。
要するに>>938
2017/10/09(月) 18:44:02.73ID:CACjh+QN
>>972
>>911を100回読めばいいよ

B側の秘密鍵は利用者ごとに作るんだよ…
976デフォルトの名無しさん
垢版 |
2017/10/09(月) 18:44:41.48ID:qEhozSMZ
>>970
お前のようなバカはブラウザに秘密鍵があるんだな
怖すぎ
2017/10/09(月) 18:45:48.40ID:c41RoAYB
>>976
>お前のようなバカは

不要
2017/10/09(月) 18:46:10.47ID:CACjh+QN
頭のおかしな人のふりをして逃げ切るの術がはじまったのかよ
2017/10/09(月) 18:46:34.09ID:c41RoAYB
>>975
>100回

不要
2017/10/09(月) 18:46:51.21ID:c41RoAYB
>>978
>頭のおかしな人のふりをして逃げ切るの術がはじまったのかよ

不要
2017/10/09(月) 18:47:42.62ID:T0povuKJ
>>974
全然違うって
> この分野全然知らんけど
知らないなら理解しよう
2017/10/09(月) 18:48:15.79ID:CsWYGxTc
>>968
それじゃサーバー=Aと本質的に変わってなくて単に余計な経路を追加しただけ。
2017/10/09(月) 18:51:07.76ID:CACjh+QN
仕組み

サーバとクライアントで別々の鍵ペア(秘密鍵、公開鍵)を作ってお互いに
公開鍵を渡す
ネットを通すときは相手からもらった公開鍵で暗号化
受け取った側は自分の秘密鍵で解読

秘密鍵はネットを通らないので間で傍受されても普通は暗号解読不能
2017/10/09(月) 18:51:39.28ID:T0povuKJ
>>982
Aと他者が使うBが常時やり取りできるならサーバーである必要もないとは言ってるし
そもそも安全な暗号化する鍵の保存についての答えだが
985デフォルトの名無しさん
垢版 |
2017/10/09(月) 18:53:53.42ID:qEhozSMZ
>>975
だから利用者側に秘密鍵があれば利用者が改変したデータを作れてしまうだろ
まだ理解出来ないの??
2017/10/09(月) 18:55:21.55ID:c41RoAYB
>>985
>まだ理解出来ないの??

議論に不要な記述
2017/10/09(月) 18:55:41.00ID:CACjh+QN
>>985
秘密鍵関係なく暗号化前のデータを変えれば意味ないでしょって言ってるんだけど

暗号化したらユーザーがデータを変えられないと思ってるなら間違い
2017/10/09(月) 18:58:23.22ID:CACjh+QN
つかれた
秘密鍵は何度も言ってるけど暗号解除のための鍵

プログラムBが秘密カギを持ってるとするとプログラムAからのデータを受け取るときの
暗号解除のため
だからユーザーがデータを書き換えるとかそういうのは違う
2017/10/09(月) 18:58:38.89ID:r14Jr9yH
うーん、繰り返しになるけど、質問者のケースは別人の間の通信じゃないので鍵をペアにする意味なんかないですよw

問題はどうやったら正規ユーザーだけが利用できる「復号化装置」を確保きるかって話。

「復号化装置」を外だししたら安全だって話は普通に正しくないでしょう。
そんなのハッキングする側から見たら「ほんのひと手間」増えるだけ。
2017/10/09(月) 18:58:51.90ID:Y4203ffV
次スレ立ててくる
991デフォルトの名無しさん
垢版 |
2017/10/09(月) 18:59:20.58ID:qEhozSMZ
>>987
秘密鍵が手元にあれば改変した偽のデータを作ってそれをアプリで使えてしまうだろ
まだわからないの?
2017/10/09(月) 18:59:55.87ID:c41RoAYB
>>991
>まだわからないの?

議論に不要な記述
2017/10/09(月) 19:00:37.82ID:CACjh+QN
>>989
>>890
2017/10/09(月) 19:00:38.05ID:T0povuKJ
>>989
質問者はBは他者が持ってるって言ってるけど
2017/10/09(月) 19:01:17.45ID:CACjh+QN
>>991
>>988
2017/10/09(月) 19:01:39.15ID:Y4203ffV

ふらっと C#,C♯,C#(初心者用) Part132
http://mevius.2ch.net/test/read.cgi/tech/1507543256/
2017/10/09(月) 19:01:59.72ID:CACjh+QN
>>996
おつ
998デフォルトの名無しさん
垢版 |
2017/10/09(月) 19:02:26.16ID:qEhozSMZ
>>995
だからそれは間違ってるって言ってらだろバカ
2017/10/09(月) 19:02:40.02ID:T0povuKJ
次スレ乙
うめ
2017/10/09(月) 19:02:54.26ID:X/uHF4ez
>>996
有能、空気読みすぎ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 31日 0時間 50分 43秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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