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

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

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

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

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

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

(*゚∀゚)v2get!

今年の夏くらいからプログラミング勉強し始めたけど結局なーんも身についてなくて笑えない
ちょっと応用すれば出来るはずのことも全く同じサンプルがないと何も出来ないし頭の悪い奴ってのはほんとに必要ないなと実感したわ

こんなの身についてるってみんなすげーよ
ほんと尊敬する

趣味なら続けてればそのうちできるようになるよ
もし仕事にするつもりだったなら今すぐ考え直したほうがいい
向いてない人が業界入っても生涯最底辺確定だよ

今振り返るとプログラムを書けると自信を持って言えるようになるまで5年くらいかかった

はやいね…

レベル2の症状だろ
レベル3になると、実はまだまだヒヨコに過ぎなかったと気づく

最近始めたんやけど、ラムダ式がまだまだ身につかんな…
自称プログラマーもまだまだ遠いと感じる

LISPしなされ

10デフォルトの名無しさん (ワッチョイ 8903-8BY9)2017/12/06(水) 00:27:28.54ID:WT/THAC00
レベル3の症状だろ
レベル4になると、実はプログラマに向いてないって事に気付き始める

VS2015を用いてC#でアプリを作っています
現在テストを行う中でスタブを使おうと考えたのですがどういうものかの記述はしてあっても実装の仕方が見つけられないのでどう実装するべきものなのかアドバイスをお願い致します
なにか決まった構文などがありますか?
スレ違いなら申し訳ありません

12デフォルトの名無しさん (スプッッ Sd3f-SaVx)2017/12/07(木) 08:42:17.58ID:15g2M7EDd
>>11
moq

13デフォルトの名無しさん (ブーイモ MMbb-/Bld)2017/12/08(金) 08:21:40.76ID:PpC6VnTrM
>>11
普通に実装するんだよ
たとえばリポジトリクラスをモックするなら、DBの変わりにListやファイルを使うように実装する
Moqみたいなアドホックなモックに頼るのは都合のいい脳内彼女状態になりやすいからお勧めしないな

14デフォルトの名無しさん (スップ Sd3f-SaVx)2017/12/08(金) 10:48:33.70ID:MNtGar8nd
>>13
頼るんじゃなくて賢く利用するんだよおバカ

15デフォルトの名無しさん (ワッチョイ d714-tojf)2017/12/08(金) 14:00:50.88ID:qb513BYK0
ゲスい

16デフォルトの名無しさん (ワッチョイ ff9a-StTJ)2017/12/08(金) 20:43:50.51ID:0wYNAdO30
>>11
言語以前の問題だから板違いではないがスレ違いだな
「デバッグに何か決まった手順はありますか」って聞くようなもの
そして「使おうと考えた」のではなく「使えと指示された」と邪推

17デフォルトの名無しさん (ワッチョイ 5723-/Bld)2017/12/09(土) 09:15:02.44ID:BBiO47QN0
>>14
その賢い利用というのが、テストが正しいかどうかはともかく、
なんでもいいからとにかくテストをパスさせて仕事から逃げることを意味するなら積極的にMoqを使うべきだな
プロダクトの機能に対して責任を持つのか、コーディング作業員として単体テストのレビューが通るところまでの責任なのか
プログラマの立場次第であり、絶対的にどちらが正しいとはいえない

18デフォルトの名無しさん (ワッチョイ 9fd2-SaVx)2017/12/09(土) 11:18:08.25ID:ZhOJxZh30
Moqの使い方すら理解できないキチガイがわめいてる

19デフォルトの名無しさん (スップ Sdbf-SaVx)2017/12/09(土) 11:20:12.53ID:4MNbsZWJd
xUnit自体のテストでもMoq使ってんのに何言ってんのこいつ

20デフォルトの名無しさん (ワッチョイ 5723-/Bld)2017/12/09(土) 11:59:32.42ID:BBiO47QN0
>>19
xunit見てみたけど、内部的な依存関係の差し替えには全く使われてないね
テストツールをテストするという特殊な事情ゆえ、テストには(ユーザーにとっての)テスト対象コードが必要になる
その代わりとして極一部でMoqやNSubstituteが使われてるようだ
賢い使い方の一つだとは思うけど、リポジトリクラスやサービスクラスを差し替えたりするのとは全くの別物と考えるべきかと

21デフォルトの名無しさん (ワッチョイ ff81-tojf)2017/12/09(土) 12:06:36.64ID:JB9pjNrg0
またヤバそうなのが湧いてるなw
先週みたいになるのかな?
いやーゴミは世に憚るってホントだね

22デフォルトの名無しさん (ブーイモ MMbf-/Bld)2017/12/09(土) 12:17:46.40ID:awJ9eWLVM
んな大袈裟な
俺は自分の経験(個人・チーム含む)からアドホックなモックは上手くいかないと思ってるけど、
実際に効果的に使われてるケースがあるならぜひ知りたいよ
xUnitのテストなんて超特殊な例じゃなくてもっと適切な例をplz

23デフォルトの名無しさん (ワッチョイ 9fd2-SaVx)2017/12/09(土) 12:19:44.13ID:ZhOJxZh30
どうやらUnit TestとIntegration Testの違いさえ理解できないガイジのようだ

24デフォルトの名無しさん (ワッチョイ 97a5-fvxL)2017/12/11(月) 20:41:46.07ID:f/7OfSkR0
ワイクソ馬鹿
そもそも何のためにスタブとかモックとかがあってどういう時に有用なのか分からない
足りない所を補うみたいなイメージなんだけどプログラムが全部完成してからのテストなら必要ない?

25デフォルトの名無しさん (ワッチョイ d716-tojf)2017/12/11(月) 21:01:08.81ID:cWpuydkA0
C#関係ねえ

26デフォルトの名無しさん (ワッチョイ 9fd2-SaVx)2017/12/11(月) 21:02:58.97ID:xzgxDEt/0
>>24
たとえばあるメソッドをテストするとして、テスト目的の箇所以外の依存関係をモック/スタブで差し替えれば、目的のロジックに集中できるしパフォーマンス的にも有利

>>24
例えばテスト対象のメソッドが何らかのAPI呼び出してるとして、そのAPIがエラーを返すケースのテストをする時にスタブを使ってエラーを返したりする

28デフォルトの名無しさん (ブーイモ MMcf-/Bld)2017/12/11(月) 21:38:59.51ID:Y2G40TozM
>>24
テストしてて、ここ触りたくねえなあデータ用意すんの面倒臭えなあと思うことあるだろ?
正しいかどうかは別にして、とりあえず臭いものに蓋をしたまま手っ取り早くテストを終わったことにして帰宅できる

29デフォルトの名無しさん (ワッチョイ 9fd2-SaVx)2017/12/11(月) 21:50:44.91ID:xzgxDEt/0
>>28
あほ

30デフォルトの名無しさん (ワッチョイ 97a5-fvxL)2017/12/11(月) 21:54:52.65ID:f/7OfSkR0
>>26
>>27
>>28

ありがとう
そしてC#じゃない話広げてごめん
テストの為にSQLだったりなんか色々条件準備するの大変だからスタブで置き換えちゃおうみたいな感覚なのかな

31デフォルトの名無しさん (ワッチョイ 9fd2-SaVx)2017/12/11(月) 21:57:48.40ID:xzgxDEt/0
>>30
大変だからというか、テスト目的と関係ないAPIやDBアクセスに依存しないようにするため

32デフォルトの名無しさん (ワッチョイ ff81-tojf)2017/12/11(月) 22:30:20.58ID:oxZtEftd0
こういう奴らってサーバーがAWSとかGAEのサーバーが503で落ちてる時のテストとかどうやってんの?
DoS掛けて落としてるの?

33デフォルトの名無しさん (ワッチョイ 9fd2-SaVx)2017/12/11(月) 22:32:42.57ID:xzgxDEt/0
>>32
テストしないんだろ

34デフォルトの名無しさん (ブーイモ MMbb-T+jR)2017/12/12(火) 12:55:00.41ID:IcKwzfnVM
サーバーが落ちてる状態をスタブ/モックで再現すればいいんちゃう?

そういう話をしてるんだが...

36デフォルトの名無しさん (ワッチョイ d716-tojf)2017/12/12(火) 14:04:29.84ID:/mkMVrEb0
ニホンゴムズカシイネ

37デフォルトの名無しさん (ワッチョイ 97a5-1g/A)2017/12/12(火) 22:16:10.60ID:TlJgX2b/0
プログラミング始めたてなんだけど、CSVファイルの先頭何行を無視してそれ以外のデータをデータベースに入れたいって状況になったんだけど、経験者の人はめっちゃ簡単だよって言ってて、
でも俺には全く想像もつかなくて、プログラミング出来る人の頭の中はほんとどうなってるんだ…
やっぱみんなもこれくらいのコード書くのは楽勝なの?

38デフォルトの名無しさん (ワッチョイ b781-9VJ3)2017/12/12(火) 22:19:09.90ID:lT+kB2MF0
>>37
一瞬でアルゴ思いつくけど、おまえやばくね?

39デフォルトの名無しさん (ワッチョイ 97a5-1g/A)2017/12/12(火) 22:23:02.58ID:TlJgX2b/0
>>38
やっぱ経験者からすると簡単なんだ
すげぇなぁ…
CSVなんて触った事ないしそこから先頭何行とか全く想像もつかん
始めて数ヶ月だけどオレ向いてないんだろなぁ

40デフォルトの名無しさん (ワッチョイ ff9a-StTJ)2017/12/12(火) 22:33:48.31ID:CW11BSat0
>>37
テキストの数行をスキップするのならすぐできるだろ。それがCSVになるだけ
CSVのパーサーについては
https://dobon.net/vb/dotnet/file/readcsvfile.html
にいくつもやり方が乗っている
ネットで調べればC#初心者でもできる案件

41デフォルトの名無しさん (ワッチョイ 9fd2-LLtl)2017/12/12(火) 23:21:09.16ID:5Qo60rlq0
いっぺんに全部やろうとするんじゃなくて、小さい作業に分解して考えるんだよ
今回なら「先頭数行を無視してテキストファイル読み込む」にCSVは関係ないでしょ?まず欲しい分だけ読み込んで、CSVとしてパースするのはその後に考えればいい
ググって出てくるくらいまで分解すれば、あとは組み合わせておしまい

42デフォルトの名無しさん (ワッチョイ ff9a-StTJ)2017/12/12(火) 23:28:56.01ID:CW11BSat0
>>41
>今回なら「先頭数行を無視してテキストファイル読み込む」
要素内に改行がある場合(めったにないが)を想定しなきゃならないので先にパーサーを通す必要がある
元の要件が「CSVファイルの先頭何行を無視して」だから

43デフォルトの名無しさん (ワッチョイ 9fa4-jOus)2017/12/13(水) 00:33:52.07ID:dUmCylYF0
>>42
この場合、先頭数行はヘッダーでcsvじゃないのでは

まずは
・CSV の先頭になんかワケわからん行がくっついてる
のか
・CSV のデータを何件か読み飛ばす
のかをはっきりしろって話だわな

45デフォルトの名無しさん (ワッチョイ 3703-ZqID)2017/12/13(水) 07:25:32.55ID:Iqcr0fg80
どうせ読み飛ばすんだからどっちでもええやろそんなもんw

向こう使い終わったな

47デフォルトの名無しさん (スププ Sd1f-U61R)2017/12/22(金) 04:56:06.32ID:6xfAUU/Sd
ここ数日ここ見てたんだが自称上級者様がドヤ顔してるだけのスレだな

>>47
どんなのが理想なんだ?
ぶっちゃけほとんどの質問に回答がもらえてるようだが

49デフォルトの名無しさん (ワッチョイ 6302-+TNz)2017/12/22(金) 09:45:16.77ID:Vx5ddxy90
ワードサラダボーイがいないスレ

50デフォルトの名無しさん (ガックシ 067f-Iw9I)2017/12/22(金) 09:53:06.84ID:8f8y8qIA6
それは何ですか?

51デフォルトの名無しさん (ワッチョイ 9306-buzn)2017/12/22(金) 09:55:25.36ID:oR3DRk2W0
会計システムはクラサバが最低限の要件なので、計算はDBでやるからクラス分けなど何の役にも立たないし却って邪魔だ
彼はクラサバと無縁なスタンドアローンの世界に住んでいるのかもしれんね

52デフォルトの名無しさん (ブーイモ MM27-bebx)2017/12/22(金) 10:08:25.66ID:2CqGXpCvM
スタンドアロンだとして、どういうデータ設計したら費用項目ごとにクラスができるんだろうね
日付, 費用種別コード, 金額
まさかこんなタプルで管理してるんだろうか

53デフォルトの名無しさん (ワッチョイ ffb3-6aYH)2017/12/22(金) 10:17:07.48ID:sp7ymsVp0
自称上級者様ご降臨〜 w

54デフォルトの名無しさん (ブーイモ MM27-vkjg)2017/12/22(金) 10:23:52.41ID:lyRs/gAjM
そ、ギョーミーな戦場ではオブジェクト指向などと言う玩具の武器は役に立たない

55デフォルトの名無しさん (ワッチョイ ffd2-Xao7)2017/12/22(金) 10:26:29.36ID:xQ825djR0
>>54
いまだにこんな老害がいるからね

56デフォルトの名無しさん (ブーイモ MM27-vkjg)2017/12/22(金) 10:32:48.81ID:lyRs/gAjM
何をいっておる、LinqもLambdaも戦場の小火器として使えるが腐ったオブジェクト指向など使えぬわ

57デフォルトの名無しさん (ワッチョイ 634b-Iw9I)2017/12/22(金) 10:56:00.35ID:pMoYdCae0
関数型がいいって言いたいの?

58デフォルトの名無しさん (ブーイモ MM27-vkjg)2017/12/22(金) 10:59:19.90ID:lyRs/gAjM
腐ったオブジェクト指向脳で単純なものを複雑にするヤツが大嫌いなだけ

59デフォルトの名無しさん (ワッチョイ cfe8-7LW1)2017/12/22(金) 11:05:05.39ID:oEPXElot0
結局個人的感情か
毎回レスの最後に ※個人の感想です って付けとけよ

>>59
全レスそうだから省略できる

もちろん個人の感想だが

61デフォルトの名無しさん (ブーイモ MM27-vkjg)2017/12/22(金) 11:11:28.05ID:lyRs/gAjM
オブジェクト指向は過去の遺物

62デフォルトの名無しさん (ワッチョイ 6f9e-rt3g)2017/12/22(金) 12:24:49.48ID:4JyKqZfo0
>>61
じゃあ今流行りは何?

63デフォルトの名無しさん (ガックシ 067f-Iw9I)2017/12/22(金) 12:29:43.88ID:E5w5T/306
大きなスケール→ガチガチのオブジェクト指向
小さなスケール→手続き型、関数型

名前、住所、電話番号、みたいなデータがあったとして、
Aさんの住所を参照するのに、["A"]的なアクセスするやつ、なかったでしたっけ?

65デフォルトの名無しさん (ワッチョイ ffb3-6aYH)2017/12/22(金) 12:41:08.55ID:sp7ymsVp0
>>64
Dictionaryでいいんじゃね?

66デフォルトの名無しさん (ガックシ 067f-Iw9I)2017/12/22(金) 12:47:31.71ID:E5w5T/306

>>64
そういう仕組みはインデクサという

68デフォルトの名無しさん (ワッチョイ f3f7-fDUi)2017/12/22(金) 19:32:54.21ID:w6Zu6k6M0
ボタンを押すと処理を緊急停止するプログラムを作りたいのですがどのような方法がありますでしょうか?

69デフォルトの名無しさん (ワッチョイ cf9a-RBuR)2017/12/22(金) 19:39:03.10ID:Ta4DCaCP0
>>68
とりあえずthis.Close()でFormを閉じる
それでだめなら要件を挙げて

70デフォルトの名無しさん (ワッチョイ f3f7-fDUi)2017/12/22(金) 19:46:47.55ID:w6Zu6k6M0
今はbackgroundWorkerで処理を実行しているのですが
CancelAsync()で停止させても
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
return;
}
というコードに到達するまで停止しないので停止までに時間があるのを改善したいです
このコードをたくさん差し込むしかないのでしょうか?

71デフォルトの名無しさん (ワッチョイ cf9a-RBuR)2017/12/22(金) 19:51:25.63ID:Ta4DCaCP0
>>70
親フォームでkillしたらbackgroundWorkerも止まるんじゃないの?

72デフォルトの名無しさん (ワッチョイ f3f7-fDUi)2017/12/22(金) 19:53:12.14ID:w6Zu6k6M0
どういうことでしょう
あらゆる処理をForm1に書いていまして
killの仕方がわからないです

73デフォルトの名無しさん (ワッチョイ cf9a-RBuR)2017/12/22(金) 19:59:46.81ID:Ta4DCaCP0
backgroundWorker以外の処理は生かしておきたいって話なら分からないな
>>70
というかキャンセル用のフラグ作って止めなきゃならないところに停止処理差し込むのがそんな大変だとも思えないけど
楽したいってのはわかるけど、それは他の人に聞いて

74デフォルトの名無しさん (ワッチョイ c3b3-QXzE)2017/12/22(金) 20:00:08.26ID:W8xzYPPc0
>このコードをたくさん差し込むしかないのでしょうか?
>あらゆる処理をForm1に書いていまして

まず、設計の仕方を覚えた方が良い

75デフォルトの名無しさん (ワッチョイ ff19-vkjg)2017/12/22(金) 20:10:01.65ID:HDUqSz1r0
>>68
Application.Exit();

76デフォルトの名無しさん (ワッチョイ 03c9-buzn)2017/12/22(金) 20:31:26.17ID:kA+szNzE0
自作プログラムでSemaphoreFullExceptionが発生したんだけど、これってSemaphore使って無くてもTaskやawait使っていれば発生するようなもんなの?

77デフォルトの名無しさん (ブーイモ MM27-bebx)2017/12/22(金) 20:34:55.44ID:2CqGXpCvM
なぜスタックトレースを見ないのか

78デフォルトの名無しさん (ワッチョイ 03c9-buzn)2017/12/22(金) 20:39:08.36ID:kA+szNzE0
>>77
Unhandledで拾ったは良いものの、例外詳細見たらスタックトレースに他の発生行が無くてその例外行だけだったのよ
どこかでthrowし直してたとしてもその行が表示されるのにな

まあ普通に使い方間違えてバグってんでしょ

>>70
なんか先週ぐらいも同じ質問してた人がいたけどw

だからさあ、メソッドを外から強制的に止めようって発想が間違ってる。
メソッド自身が何かをポーリングして自分で止まるように作る

81デフォルトの名無しさん (ワッチョイ f3f7-fDUi)2017/12/22(金) 21:17:12.68ID:w6Zu6k6M0
>>80
それ自分です!

82デフォルトの名無しさん (ワッチョイ cf81-+TNz)2017/12/22(金) 21:18:00.45ID:UrkxRoCQ0
二度も同じことを聞くんじゃない

>>81
マジすかw

84デフォルトの名無しさん (ワッチョイ c3b3-QXzE)2017/12/22(金) 21:30:54.07ID:W8xzYPPc0
わろす

85デフォルトの名無しさん (ワッチョイ ffd2-VulL)2017/12/22(金) 21:46:10.24ID:Kw0QQsKg0
潔くてすき

86デフォルトの名無しさん (ワッチョイ 6f9e-rt3g)2017/12/22(金) 22:28:43.29ID:4JyKqZfo0
backgroundworkerとtaskの違いは何よ?

87デフォルトの名無しさん (ワッチョイ 6f76-5z/u)2017/12/22(金) 22:41:34.49ID:Iyc/J/sJ0
BackgroundWorkerはレガシー

88デフォルトの名無しさん (ワッチョイ 138d-6js8)2017/12/22(金) 23:26:00.99ID:vOV0CWVO0
>>81
ここで2回も聞くぐらいなら
やりたいことを英語にしてGoogleで検索した方がいいよ
ここにいる人が知らないか教えないだけで
やり方はちゃんとある
ポーリングとか今どきダサすぎるからやめとけ

いやいやないからアホかw
あるなら言ってみ。まあ無理せんでよろしい。

生スレッドは強制終了できるが普通は推奨されない。

そもそも外から強制的に止めるって発想に疑問を持たない時点でセンスがない

91デフォルトの名無しさん (ワッチョイ 6f7f-HrVW)2017/12/22(金) 23:43:31.65ID:teKS3rfy0
>>88
スレッドの強制停止は推奨されないから、事実上ポーリング的な手法しか無いと思うけど。
(マルチプロセスは考えないとして)

92デフォルトの名無しさん (ワッチョイ 6f7f-HrVW)2017/12/22(金) 23:48:36.08ID:teKS3rfy0
CancellationToken.ThrowIfCancellationRequested()使うけど、これもポーリングだしな。

93デフォルトの名無しさん (ワッチョイ 9306-buzn)2017/12/22(金) 23:54:28.61ID:oR3DRk2W0
>>88
つか、今標準のCancellationTokenもポーリングが基本だよ
そっから抜け出るのに例外使うのがミソではあるが

94デフォルトの名無しさん (ワッチョイ 2323-bebx)2017/12/23(土) 01:24:21.53ID:ti8BrBts0
スリープで時間かかってたり繰り返しスリープ入れてるなら
Interruptを使って無理矢理中断させることもできる

95デフォルトの名無しさん (ワッチョイ cf80-fDvV)2017/12/23(土) 08:12:59.96ID:FPRjmoIB0
>>70
Async が付いている関数は、非同期処理だから、コンテキストが異なる。
だから、処理が実行される順番が確定しない

Sync なら同期処理だから、順番が1つに決まる。
つまり、ソースコードの上から下へ、順に実行される

コンテキストが異なるもの同士が通信するには、プロセス間通信(IPC)を使う。
基本的には、相手のキューに、投入することしかできない

1. 依頼する。A プロセス → OS → B プロセス
2. B が届いたメッセージを処理する
3. 返事する。B プロセス → OS → A プロセス

これを同期処理にすると、1〜3 の処理中、
アプリが止まる(ストール)から、GUI では嫌われる。
50ms 以上掛かる処理は、非同期処理にすべき

逆に、CUI では同期処理にして、コンソールが止まる

96デフォルトの名無しさん (ワッチョイ cf81-+TNz)2017/12/23(土) 08:22:18.86ID:7ZChdQbJ0
このどことなくズレたレスをつける句読点過剰くんってのは、やはり糖質なのだろうか?

97デフォルトの名無しさん (ワッチョイ 2323-bebx)2017/12/23(土) 08:23:33.88ID:ti8BrBts0
句読点箇条君はすぐわかるな
そして必ず間違ってる
スレッドが違うだけならIPCなんか使う必要ない
普通は単にメモリを共有する
FormsのBeginInvokeなどで使われているSynchronizationContextのキューも普通にメモリを共有してるだけだ

9895 (ワッチョイ cf80-fDvV)2017/12/23(土) 08:24:22.31ID:FPRjmoIB0
つまり、1〜3 は、OS が行っている事だから、何もできる事が無い。
OS レスのマイコンとかなら、自分でプログラミングするけど

何かをしようとしても、OS がCPU のタイムスライス、
プロセスの優先度・実行順番を決めているから、何もできない

それがOS。
OSレスなら、それらを自分でプログラミングしないといけないから、無理

99デフォルトの名無しさん (ワッチョイ 2323-bebx)2017/12/23(土) 08:45:11.75ID:ti8BrBts0
このアスペは>>97も理解してないんだと思うけど、初心者スレだから改めて否定しておく
スレッドが違うだけなら、>>95の123は正しくはこう
1. スレッドAがジョブの情報Jをメモリ上のキューQに登録する
2. スレッドBはQからJを取り出し、Jの内容に従って処理を実行する
3. Bは処理結果RをキューQ'に登録する
4. AはQ'からRを取り出し、後続処理を実行する
AとBの間で普通にQやQ'を直接共有してるだけで、OSなんか全く関係ない
そもそもマルチスレッドに限った話でもなく、例えば、ゲーム内で2つのキャラクターの間でやり取りしたい、
でも直接メソッドを呼ぶと長くなるとか、間にウェイトを入れたいとかで一旦処理をゲームループに戻したい、なんて時にも使える

100デフォルトの名無しさん (ワッチョイ 6f9f-M1U4)2017/12/23(土) 10:27:32.58ID:AW7swrGi0
オレオレキューなんぞつかわずにTaskを使え
バックグラウンドといえどインプロセスで長大な処理を発生させるな
そういうのはジョブ管理サービスを使えHangfireとかな

101デフォルトの名無しさん (ワッチョイ cf81-+TNz)2017/12/23(土) 11:10:58.80ID:7ZChdQbJ0
今回はTaskかどうかは問題ではなく
「BackgroundWorkerの処理を中断する方法で、ポーリングより面倒くさくない方法があったら教えて」
なので
Thread.Abortでも使え

102デフォルトの名無しさん (ワッチョイ cf81-+TNz)2017/12/23(土) 11:12:40.52ID:7ZChdQbJ0
Task大好きッ子もなかなかスレの流れ読んでねえよな

103デフォルトの名無しさん (ワッチョイ 6325-Iw9I)2017/12/23(土) 11:29:15.39ID:m8DTIJvo0
asyncつけてるとエラー発生したらデバッグの実行位置の矢印の動きがおかしくなる

RunWorkerCompletedでイベントオブジェクトのフラグをいじり、それを待機とかだめ?

105デフォルトの名無しさん (ワッチョイ 8f33-9Igo)2017/12/23(土) 12:51:18.15ID:kNBZIa630
Task関連は7標準のランタイムだと使えないからいまだにBackgroundWorker使ってる
まあ他ソフトの事情で.NET 4以降一切入れないってことはないんだけどさ

106デフォルトの名無しさん (ワッチョイ 8f33-9Igo)2017/12/23(土) 13:21:31.65ID:kNBZIa630
自分のBackgroundWorker使ってるソース見てみると、
処理単位でループして1処理終った後と、長い処理の途中でwk.CancellationPending == trueで抜けるか判定してる
イベント待ちはタイムアウト設定して一旦抜ける
という感じだった
Task使っても同じだろう

@Abortはしたくない
Aメインループのフラグチェックでは頻度が足りない
Bでもフラグチェック処理を書き足すのは嫌だ

要件はこれでいいか?
真面目に考えるとメタプログラミングの領域だな
チェック頻度とパフォーマンスのトレードオフも考えなきゃならん
初心者スレ民の実力では難しいんじゃないか?

108デフォルトの名無しさん (ワッチョイ 03c9-buzn)2017/12/23(土) 13:34:41.82ID:ktMndlca0
>>107
この頻度が足りないって、メインループの記述が冗長とか別の理由ありそうな気がするわ

クッソ長いループ書いてんだろうな
マルチスレッドより先に基本的なコード整理術を覚えたほうがいい

110デフォルトの名無しさん (ワッチョイ f3f7-fDUi)2017/12/23(土) 13:46:44.49ID:suzKftpB0
たくさんレスありがとうございます。
わからない言葉がたくさんあるので調べてまた来ます。

111デフォルトの名無しさん (ワッチョイ f3f7-fDUi)2017/12/23(土) 14:02:46.78ID:suzKftpB0
キーボードをa,b,c,dと順番に5秒置きに押していくメソッドをBackgroundWorker内で無限ループさせていて
キャンセルボタンを押したときすぐに止まって欲しいのですが必ずdまで押されてから止まるので困っているという感じです

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
play_abcd();

if (backgroundWorker1.CancellationPending)
{
// イベントをキャンセルする
e.Cancel = true;
return;
}
}
}

112デフォルトの名無しさん (ワッチョイ 6316-+TNz)2017/12/23(土) 14:10:55.29ID:saCRURuP0
そりゃそうだろって反応しか返ってこないと思う

113デフォルトの名無しさん (ワッチョイ f3f7-fDUi)2017/12/23(土) 14:19:46.07ID:suzKftpB0
キーボードをa,b,c,dと順番に5秒置きに押していってすぐ途中で止められるプログラムを作るには
どういう方法があるんでしょうか?BackgroundWorkerにはこだわりません。
play_abcd()メソッドには押したボタンをtextBoxに表示する機能もあってBackgroundWorkerを使うと
プログラム実行中でもきちんと表示されるのでBackgroundWorkerを使っています

114デフォルトの名無しさん (ワッチョイ 6f9f-M1U4)2017/12/23(土) 14:42:50.03ID:AW7swrGi0
private IEnumerable<Action> GetJobs(int sleepMilliseconds) {
/**/var buttons = new [] { btnA, btnB, btnC, btnD };
/**/while (true) {
/**//**/foreach (var button in buttons) {
/**//**//**/yield return () => button.Click();
/**//**//**/yield return () => Thread.Sleep(sleepMilliseconds);
/**//**/}
/**/}
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
/**/while (true) {
/**//**/foreach (var job in GetJobs()) {
/**//**//**/job();
/**//**//**/if (backgroundWorker1.CancellationPending) {
/**//**//**//**/e.Cancel = true;
/**//**//**//**/return;
/**//**//**/}
/**//**/}
/**/}
}

115デフォルトの名無しさん (ワッチョイ c3bb-+TNz)2017/12/23(土) 14:43:52.99ID:7NR5j+Xf0
play_aとplay_bとplay_cとplay_dを分ける
デリゲート配列にしてforeachで回せばチェックは一カ所で済む

116デフォルトの名無しさん (ワッチョイ f381-7LW1)2017/12/23(土) 14:47:49.51ID:97OmZxF20
メソッドの名前がメンタルに悪い

5chはいつになったらGFM対応するんだ

118デフォルトの名無しさん (ワッチョイ 9306-buzn)2017/12/23(土) 15:46:06.35ID:KAucFFwx0
BackgroundWorkerじゃなくてタイマー使うべきだよ

>>111
>>113
>play_abcd()メソッドには押したボタンをtextBoxに表示する機能もあって
ってことはたぶんplay_abcdの中でbackgroundWorker1.ReportProgressを呼んでいる、
つまりbackgroundWorker1を参照できる場所にplay_abcdはあるんだから、
素直にCancellationPendingをポーリングするだけじゃないの?
本当はよくないと思うけどねこういうの

本当は前も書いたみたいにplay_abcdのシグネチャを
void play_abcd(Func<bool> canceled){...}

とかにして、呼び出すときに、
play_abcd(() => backgroundWorker1.CancellationPending);

がいいと思う

っていうか、そもそも
>キーボードをa,b,c,dと順番に5秒置きに押していくメソッド
をビジーループで実弁する必要本当にある?w

それ、タイマーで十分実現できると思うんだけど...

タイマーとかめんどくさいだけだろ

121デフォルトの名無しさん (ワッチョイ 3317-7LW1)2017/12/23(土) 16:58:02.75ID:oBD8VcBx0
BackgroundWorkerのほうが実装が綺麗になるよね

122デフォルトの名無しさん (ワッチョイ a375-Iw9I)2017/12/23(土) 17:54:59.64ID:433UoltE0
>>117
スペース2つで改行だっけ?
普通のレスの書き方と分離するためにコマンドを先頭に付けるとかかな
専ブラが対応すれば専ブラだけでは見れるな

123デフォルトの名無しさん (ワッチョイ 6f9e-rt3g)2017/12/23(土) 18:17:28.09ID:MO+dM8J20
>>121
どう言う理由で?

124デフォルトの名無しさん (ワッチョイ ff06-buzn)2017/12/23(土) 18:52:05.60ID:vwLvtl/C0
タイマーなら、キャンセルでタイマー止めればそれで終わりでしょ
実装が見苦しいようには見えんね

125デフォルトの名無しさん (ワッチョイ 6f9f-M1U4)2017/12/23(土) 18:57:13.19ID:AW7swrGi0
ためしに書いてみてよ

126デフォルトの名無しさん (ワッチョイ ff06-buzn)2017/12/23(土) 19:41:20.88ID:vwLvtl/C0
>>125
https://ideone.com/bZPXyC
色々端折ったけどこんな感じでどう?

127デフォルトの名無しさん (ワッチョイ 8f9f-9TLc)2017/12/23(土) 19:47:21.47ID:PvZdk9430
>>113
そもそも、なんで提示したコードがdまで実行しないとキャンセルされないか理解できてる?
理解出来てればBackgroundWorkerを別の手法に変えても意味がないことは分かると思うんだけど

128デフォルトの名無しさん (ワッチョイ 6f9d-FmKA)2017/12/23(土) 20:47:59.87ID:afY4COyy0
>>107
>Abortはしたくない
元質問者はAbortしたくないとは言ってないと思うぞ

129デフォルトの名無しさん (ワッチョイ 6302-Iw9I)2017/12/23(土) 21:18:44.75ID:XrEDpSoU0
バックグラウンドなんちゃらってなんだ?
タイマーでいいじゃん

>>126
そんなに悪くないね
bの後2秒待ってコンソールにハゲと出力
3秒後にc
みたいな仕様変更があったとしたらどうなる?

131デフォルトの名無しさん (ワッチョイ 6302-Iw9I)2017/12/23(土) 21:21:13.92ID:XrEDpSoU0
>>130
アホなん?
そんなレアケース持ち出して何が楽しいんだ?
そんな風になったら別のコーディングするに決まってんじゃん

132デフォルトの名無しさん (ワッチョイ 6302-Iw9I)2017/12/23(土) 21:26:21.49ID:XrEDpSoU0
タイマーでもTickイベントを1秒おきにすればその実装できるし
while+sleepとかアホすぎるわ

>>131
推測でしかないが質問者のやりたい事ってAPIが提供されてないアプリのGUIオートメーションだと思うんだ
やってみるとわかるけど、等間隔キー入力の繰り返し、のような単調な操作のほうがむしろレアケースだよ

134デフォルトの名無しさん (ワッチョイ 83c3-v9+e)2017/12/23(土) 21:31:02.84ID:YgD70bUC0
態々スレッド分ける様な処理じゃないのは間違いない

135デフォルトの名無しさん (ワッチョイ 6302-Iw9I)2017/12/23(土) 21:33:38.79ID:XrEDpSoU0
バックグラウンドワーカーとかタイマーじゃなくてTask.Runの中にwhileとsleepとカウンタを全部ねじ込んだほうががまとまりがいいな

136デフォルトの名無しさん (ワッチョイ 6302-Iw9I)2017/12/23(土) 21:37:57.32ID:XrEDpSoU0
やっぱなんでもない
俺のレスはスルーで

137デフォルトの名無しさん (ワッチョイ 3317-7LW1)2017/12/23(土) 21:39:10.88ID:oBD8VcBx0
相変わらず質問者抜きの議論が大好きだなお前らは

ちなみに>>114の実装ならマクロが多少複雑化しても可読性がそこそこ良いのでオススメ

IEnumerable<Action> GetJobs() {
while (true) {
yield return () => SendKeys("A");
yield return () => Sleep(5000);
yield return () => SendKeys("B");
yield return () => Sleep(2000);
yield return () => SendKeys("ハゲ");
yield return () => Sleep(3000);
yield return () => SendKeys("C");
yield return () => Sleep(5000);
yield return () => SendKeys("D");
yield return () => Sleep(5000);
}

この考え方を進化させてJobsをActionの列挙ではなく式木にしたら記述が楽そうだな、とかインタープリターパターンで実装したらユーザー目線で便利そうだな、とか発展していく

139デフォルトの名無しさん (ワッチョイ cf81-+TNz)2017/12/23(土) 22:13:16.73ID:7ZChdQbJ0
百万年発展し続けてろバーカ

初心者用スレというか子供用スレだったのか

141デフォルトの名無しさん (ワッチョイ cf80-fDvV)2017/12/23(土) 22:36:15.16ID:FPRjmoIB0
非同期処理は、コンテキストが異なるから、処理の実行順番は確定しない

ビジーループするのは、もってのほか。
ビジーループは同期処理

非同期処理は、コールバック関数を使う。
相手の処理が終わったら、コールバック関数を呼んでもらう

コンテキストが異なるものは、マルチスレッド・マルチプロセスでも、
OS がCPU のタイムスライス、スレッド・プロセスの優先度・実行順番を決めているから、
プログラマーができる事は無い

複数のスレッド・プロセスは、無関係に同時に、異なるCPU で動く(並行処理)から、
処理時間が短くなるが、処理の実行順番は、OS が決めるから確定しない

同期処理とは異なる

142デフォルトの名無しさん (ワッチョイ ff06-buzn)2017/12/23(土) 23:00:34.49ID:vwLvtl/C0
一番の問題は、最悪5秒戻ってこないポンコツってことだと思う

結論はやっぱりTask使えって事だな

144デフォルトの名無しさん (ワッチョイ cf80-fDvV)2017/12/23(土) 23:31:47.43ID:FPRjmoIB0
そもそも、ビジーループ(ポーリング)しても意味がない

例えば、スレッドA から、10ms 毎にポーリングしても、
スレッドB の処理が10秒掛かれば、千回のポーリングは無意味

ポーリングしても、異なるスレッドの処理を速めることはできない。
OS がCPU のタイムスライス、スレッド・プロセスの優先度・実行順番を決めているから

プログラマーにできることは、コールバック関数を登録することだけ。
スレッドBの処理が終われば、それを呼んでもらうだけ

145デフォルトの名無しさん (ワッチョイ 6302-+TNz)2017/12/23(土) 23:34:38.24ID:oRgQl+h80
鈴虫がまだ何か言ってるな
鈴虫は鈴虫の学校にでも通ってな

146デフォルトの名無しさん (ワッチョイ 8f33-9Igo)2017/12/24(日) 02:28:49.95ID:BEcZgz8A0
フリーズしない/しても問題ないUIにすればいいだけだと思うが

147デフォルトの名無しさん (ワッチョイ 8f9f-mmj6)2017/12/24(日) 07:08:55.16ID:kiz3NtEj0
play_abcdって雑な作りから察すると5秒おきってのはaの動作が終わってから5秒なんじゃね?
本当に5秒感覚でキーを押したいならタイマーがいいけど、各動作を5秒感覚で実行したいならタイマーは使わない方がいいかな

148デフォルトの名無しさん (ワッチョイ a375-Iw9I)2017/12/24(日) 07:21:26.36ID:ZzoS8BMq0
へー、そんなんだ。すごーい。

149デフォルトの名無しさん (ワッチョイ 0353-HtKy)2017/12/24(日) 07:22:49.50ID:bwNsD4dr0
クリスマスぐらい女と過ごせよ

150デフォルトの名無しさん (アウーイモ MM67-1kTE)2017/12/24(日) 14:33:03.85ID:WF18n6kNM
2〜3台のPCだけで使う小規模なアプリケーションで、不変で追加もしない500×3列程度のデータを扱いたいです。EXCELでいうvlookup関数みたいな参照を行いたいのですが、EntityFrameworkだとSQLserverのインストールが必要?なため別の方法を模索中です。
csvやtxtファイルを実行ファイルと同じフォルダにいれて参照するのがいいか、もしくは別の方法があればご教示いただきたいです

151デフォルトの名無しさん (オッペケ Sr87-0cyC)2017/12/24(日) 14:33:41.85ID:EoGwjq2qr
朝Hしてきたww

152デフォルトの名無しさん (ワッチョイ ff06-buzn)2017/12/24(日) 14:39:27.53ID:h6xl/PRx0
>>150
EF知ってるならSQLiteが現実的じゃね?

>>150
そんなもんコード埋め込みでいいよめんどくせえ
動きゃいいんだよ
C#erってそういうの好きだろ

154デフォルトの名無しさん (ブーイモ MM67-bebx)2017/12/24(日) 14:44:06.81ID:BNj/0IJ2M
俺ならそんなもん一枚のHTMLとJavaScriptで作ってAWS S3に置くわ
その程度のことにデプロイの手間をかけるのはアホらしすぎる

155デフォルトの名無しさん (ワッチョイ 6302-Iw9I)2017/12/24(日) 17:13:18.55ID:LxzgKTLN0
>>154
いちいちブラウザひらくのめんどくさ
ブラウザだとウィンドウサイズでかいし

156デフォルトの名無しさん (ブーイモ MM67-bebx)2017/12/24(日) 17:45:11.77ID:BNj/0IJ2M
今時一切ブラウザ使わない業務システムなんか存在するのか?
ブラウザくらい常に開いてるだろ

157デフォルトの名無しさん (ワッチョイ 0f9c-XiD2)2017/12/24(日) 18:29:58.39ID:/uYLPwgV0
500×3でたかだが1500前後にデータベースは大げさだ
.resxファイルで済む量だろう

158デフォルトの名無しさん (ワッチョイ 039e-rt3g)2017/12/24(日) 22:22:23.70ID:Pk6n0aea0
>>150
>2〜3台のPCだけで使う小規模なアプリケーションで、不変で追加もしない500×3列程度のデータ

だったら500x3の二次元配列で行けると思う。

159デフォルトの名無しさん (ワッチョイ 6f9d-PGwP)2017/12/24(日) 22:47:41.55ID:fqHoYjgG0
DataTableでいいんじゃね

160デフォルトの名無しさん (ワッチョイ 3317-7LW1)2017/12/24(日) 22:53:06.60ID:MFJnXVyx0
てきとーなクラス作ってXmlSerializerで永続化すりゃOK
検索も500件程度なら速度を気にせずLINQで楽々実装可能

161デフォルトの名無しさん (ワッチョイ 2323-bebx)2017/12/24(日) 23:03:51.51ID:V0wW1gjw0
今時新規でXMLはないわ
このまま衰退して消えてくれ

>>161
最新だと何が人気?

163デフォルトの名無しさん (ワッチョイ 03c9-buzn)2017/12/24(日) 23:09:33.19ID:8Z10fIlT0
読むだけだしJSONやYAMLでよくね?

164デフォルトの名無しさん (ワッチョイ 138d-6js8)2017/12/24(日) 23:22:41.54ID:Tzue5pu10
JSONの指定があればJSONでもいいけど
何も指定がなければXMLで書くけどな
別にレガシーでもなくね?

>>163
大してかわんねーじゃん

166デフォルトの名無しさん (ワッチョイ a375-Iw9I)2017/12/24(日) 23:29:42.77ID:ZzoS8BMq0
結論:好きにしろ

167デフォルトの名無しさん (ワッチョイ f38a-IlPN)2017/12/25(月) 00:41:48.94ID:eNXAkvu40
じゃprofileで

でも項目数多くなって激遅になったらCSVに戻せる構造なら戻したほうがいいよ

169デフォルトの名無しさん (ワッチョイ f381-0FwS)2017/12/25(月) 03:41:46.71ID:Jnt6vkvB0
jsonってxmlとくらべて何がおいしいの?

xml、resx、json、yaml、SQLiteといろいろ選択肢がありますね。少し調べてみて良さそうなもの選んでみます。ありがとうございました

171デフォルトの名無しさん (オッペケ Sr87-0cyC)2017/12/25(月) 08:10:28.38ID:r7ITo5Fnr
>>169
軽い

172デフォルトの名無しさん (ワッチョイ 2323-bebx)2017/12/25(月) 08:12:45.88ID:W15ZQhn00
>>169
XML比なら、
人間にとって扱いやすい
サイズが小さい
読み書きが速い
属性と要素の使い分けをしなくていい
JSON SchemaはXML Schemaより圧倒的に分かりやすく書きやすい
配列、マップ、数値、論理値、文字列という最低限の型付けがあるので、
プログラミング言語のデータ構造とのマッピングがしやすい(XMLは属性やXML Schemaで明示的にマッピングしてやらないと使い物にならない)

173デフォルトの名無しさん (ワキゲー MMdf-fEFx)2017/12/25(月) 10:12:18.83ID:eSLpDS2SM
人間にとって扱いやすいだけはXMLの方が優れてると思うな
特にデータ量が増えるにしたがってjsonはそのまま読むのが不可能になってくる

174デフォルトの名無しさん (ガックシ 067f-Iw9I)2017/12/25(月) 10:15:18.25ID:rqAJYeIu6
どっちでもいい
好きな方を使えばいい

175デフォルトの名無しさん (ワッチョイ 7306-buzn)2017/12/25(月) 11:30:37.90ID:ny2AXHbu0
この案件だと、Excelで加工しやすいcsvがマッチしているんじゃないかな?
そりゃxmlだって出来るが、仕組みが大きくなる

176デフォルトの名無しさん (ガックシ 067f-Iw9I)2017/12/25(月) 11:35:31.66ID:FHswaYKc6
たしかに
終了

177デフォルトの名無しさん (ワッチョイ 0f9c-XiD2)2017/12/25(月) 11:47:08.20ID:IEH/2als0
SYLKファイルにしたっていいんだぜ
どうせ作業量変わんないだろ

178デフォルトの名無しさん (ブーイモ MM27-vkjg)2017/12/25(月) 12:20:28.09ID:sz9H2GSPM
美容番長だっけ?

179デフォルトの名無しさん (オッペケ Sr87-0cyC)2017/12/25(月) 12:22:02.34ID:r7ITo5Fnr
今時パーサーやシリアライザが揃ってるんだからどれでも同じな気はする

>>175
データ量が多くなるとおせーんだよなxml,json
んで運用入ってから素人でも編集できるいいツールはないの?
って普通に無いからな(笑)
本気で作るものほどcsvやxls

181デフォルトの名無しさん (スッップ Sd1f-Xao7)2017/12/25(月) 14:38:00.28ID:MGc+vt78d
>>173
ねーよ

182デフォルトの名無しさん (ワッチョイ 23ea-9Igo)2017/12/25(月) 18:37:57.59ID:/b5JEuJS0
結局は小さいデータなら下手なDBとか使うより、
csvの方が丈夫さとか確認のしやすさで良いって言うw

183デフォルトの名無しさん (ワッチョイ b303-G8t+)2017/12/25(月) 18:59:27.21ID:8wInAEQh0
だから上手なDBとか使えばcsvの方より良いんだろ

DBはトランザクションあるから規模に関係無く必要だと思ったら使っとけ

設定ファイル的な話としたら
xmlとjsonって微妙だよねと

185デフォルトの名無しさん (ワッチョイ b303-G8t+)2017/12/25(月) 19:15:27.15ID:8wInAEQh0
設定ファイル的な話だとしたらjsonって微妙だけどxmlはクソ
xmlはどんな用途向けにもクソ

>>185
言うほど変わらんような気がするけど
何が嫌なんだ?

187デフォルトの名無しさん (ガックシ 067f-Iw9I)2017/12/25(月) 19:48:52.98ID:Mbt+5Db+6
※個人の感想です

188デフォルトの名無しさん (アウアウカー Sac7-Vzer)2017/12/25(月) 20:07:35.17ID:y0MybC9Za
>>179
ぶっちゃけこれだろ

189デフォルトの名無しさん (ワッチョイ b303-G8t+)2017/12/25(月) 20:13:26.84ID:8wInAEQh0
>>186
嫌なのではなくクソだと言っとるのだが?

>>189
じゃあ大好物じゃん

アホちゃいまんねんパーでんねんって言われてもどう違うのか本人にしか分からんよw

192デフォルトの名無しさん (ワッチョイ b303-G8t+)2017/12/25(月) 20:24:10.15ID:8wInAEQh0
>>190
何が気にいらんのか知らんけど変な絡み方するのやめてもらえんかな?

193デフォルトの名無しさん (ガックシ 067f-Iw9I)2017/12/25(月) 20:27:44.84ID:Mbt+5Db+6
クソって言いたいだけだろって言いたいんだろう

むしろお前が無駄に絡んでる気がするが...
俺も>>179でFAだと思う

195デフォルトの名無しさん (ガックシ 067f-Iw9I)2017/12/25(月) 20:31:09.26ID:Mbt+5Db+6
好きなの使えって結論を昨日出しただろ
おわり

196デフォルトの名無しさん (ワッチョイ b303-G8t+)2017/12/25(月) 20:35:26.95ID:8wInAEQh0
>>194
同じって事はないよ
どの形式でも必要十分な機械可読性を得られるなら
選択の決め手になるのは速度などではなく人間可読性
ヒューマンリーダビリティ
xmlはこれが壊滅的にクソ

197デフォルトの名無しさん (ワッチョイ 6f9d-FmKA)2017/12/25(月) 20:54:00.52ID:axpIwit20
可読性しか判断基準がないとか話にならん

198デフォルトの名無しさん (ワッチョイ 6f9f-M1U4)2017/12/25(月) 20:55:38.22ID:HvFCkquc0
バックエンドだと設定ファイルは.csがベスト
貧弱なインテリセンスで間違えやすい設定なんか書きたくないっすわ
テストまで考えるとビルドなしで変更可能である意味がほとんどないしな

199デフォルトの名無しさん (ワッチョイ b303-G8t+)2017/12/25(月) 21:26:28.09ID:8wInAEQh0
今日は特別に俺からのクリスマスプレゼントの言葉を贈ってやろう

お前らはもう少し自分の無知無能と真剣に向きあった方が良い

200デフォルトの名無しさん (ブーイモ MM67-bebx)2017/12/25(月) 21:42:53.76ID:NbKIcSglM
>>180
多くなるならJSON Linesの方が効率いいよ
ログとかで普通に使われるファイル形式
CSVはスキーマが変わると面倒なんだよな

今時csvはなんちゅう本中華
レガシーへ(から)の接続ならしょうがないが

202デフォルトの名無しさん (ワッチョイ a375-Iw9I)2017/12/25(月) 22:37:36.04ID:6sU1sWLU0
次スレからスレタイに雑談を付加してくれ

>>202
いいアイディアだな
ただこのスレはこのまま残して
初心者雑談用として新しくスレが欲しいな

204デフォルトの名無しさん (ワッチョイ a375-Iw9I)2017/12/25(月) 22:50:13.06ID:6sU1sWLU0
そんなことしても質問スレで雑談が始まるのは目に見えてるやん...

205デフォルトの名無しさん (ワッチョイ a38a-buzn)2017/12/25(月) 22:54:47.74ID:UoNk991a0
議論スレがあるじゃん
脱線しそうなら自発的に移動して

ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1469538912/

206デフォルトの名無しさん (ワッチョイ a375-Iw9I)2017/12/25(月) 22:56:14.63ID:6sU1sWLU0
無理でしょ
どこまでが質問の答えなのか雑談なのか区切りが曖昧だし

207デフォルトの名無しさん (ワッチョイ 3317-7LW1)2017/12/25(月) 23:14:27.18ID:B733ZmRI0
ID真っ赤の奴が出てきたら議論スレに誘導

208デフォルトの名無しさん (ワッチョイ 0353-HtKy)2017/12/26(火) 02:32:13.70ID:pUXlD1DI0
>>199
ごめんなさい。

今日の朝、靴下にその言葉入ってたら読んでたよサンタさん!

>>207
>>199みたいに自覚ない奴がいる限り誘導しても無駄でしょ
まあXMLに親でも殺されたんだろうな w

210デフォルトの名無しさん (ワッチョイ 7fc3-HtKy)2017/12/26(火) 08:12:53.60ID:cT/2Pkr20
ボクのおとうさんは、XMLというやつに殺されました


俺はWPFだなw

初心者なので教えてください。
xml ならDataSet.ReadXml()でお手軽に扱えてたんですが、jsonはどう読み込んで使うのですか?
ちょっとググったら、jQueryとか、webっぽいのが目についたのですが、ローカルexeでも使えるんでしょうか?

212デフォルトの名無しさん (ブーイモ MM1f-vkjg)2017/12/26(火) 09:11:46.70ID:x+COpgJUM
>>211
NuGetでJson.NETを拾ってくる

213デフォルトの名無しさん (ワッチョイ 0f9c-XiD2)2017/12/26(火) 09:16:47.35ID:zc8zApfr0
UWPならWindows.Data.Jsonが使えるのでダウンロードしなくてもよい

214デフォルトの名無しさん (ワッチョイ 33d2-FS06)2017/12/26(火) 11:03:19.55ID:TKx0k9Mu0
XMLは無能ほど嫌うよな、わかりやすくていいわw

XML最高って言う奴がいるけどDTDとかちゃんと理解して使ってるのか疑問
俺はさっぱりわからなないので放置してる

XMLは賢い人が集まって俺って賢いだろを連発してクソ企画になったって本で読んだ

XMLは同じようなものが大量に並んでてゲシュタルト崩壊?してタグがタグに見えなくなる

217デフォルトの名無しさん (ワッチョイ ff06-buzn)2017/12/26(火) 12:45:02.83ID:VJsVtqG+0
jsonの問題はコメントだな、一応使える場合もあるけど本式はコメント使えない
ググると作者が原理主義者でどうにもならんようだ

218デフォルトの名無しさん (ガックシ 067f-Iw9I)2017/12/26(火) 12:50:09.20ID:oDLVQMSx6
もう飽きたよこの話題
次の質問マダー?

219デフォルトの名無しさん (スッップ Sd1f-9TLc)2017/12/26(火) 18:42:54.83ID:k2JgsGmBd
>>218
じゃあ折角だし
ListviewItemCollectionやCollection<T>をソートするいい方法ってなんかある?
別インスタンスにするのはNG
並び替えたやつをループしてRemoveとAddを繰り返しやる方法以外思いつかなかった

220デフォルトの名無しさん (ワッチョイ 6f9d-FmKA)2017/12/26(火) 19:16:47.40ID:cWcYrW8d0
いいってのは何がいいんだ?
メモリ効率か?
ソート速度か?
コーディングの手軽さか?

221デフォルトの名無しさん (ワッチョイ a375-Iw9I)2017/12/26(火) 19:19:35.90ID:biBlc3d/0
>>219
並び替えたやつをループとは?
どうやって並べ替えた?

普通に関数作ればよくね?

223デフォルトの名無しさん (ワッチョイ ffd2-VulL)2017/12/26(火) 20:21:15.18ID:V+MeXN2+0
そもそもICollection<T>に要素の並び順なんてものはない
IEnumerable<T>として列挙されるときの順番ならOrderBy
その順番を使い回したいならToArray

224デフォルトの名無しさん (ワッチョイ 8f9f-9TLc)2017/12/26(火) 20:24:15.51ID:0luiAFcJ0
>>219
分かりづらかったんで質問を変える
private readonly Collection<string> hoge
のhogeを文字列順にするとき
foreach(var s in hoge.orderby()){
hoge.Remove(s);
hoge.Add(s);
}

でできたんだけど理由があってaddは使いたくなかった
add使わないで並び替えってできる?

225デフォルトの名無しさん (ワッチョイ 0f9c-XiD2)2017/12/26(火) 20:27:07.94ID:zc8zApfr0
Comparison書いてSortすりゃいいのでは
この手の問題は並び順のルールの方に重点が置かれる、並び替え方なんてこの際どうでもいい

Collection<string>がICollectionの間違いならToListして代入するだけじゃないの?

227デフォルトの名無しさん (ワッチョイ 8f9f-9TLc)2017/12/26(火) 20:46:11.62ID:0luiAFcJ0
>>225
Sortがあったら楽だったんだけどね

>>226
https://msdn.microsoft.com/ja-jp/library/ms132397(v=vs.110).aspx
読み取り専用だから代入できない
ICollectionは継承してるクラス
ToListした時点で別インスタンスだからそれに対してSortしても意味無い

>>223
気持ちは分かるんだけど使ってる先を修正できずこちら側で並び替えないといけない状況があってな
インデクサー定義されてるんだから並び替えできても良さそうなのに見つけられなかった

228デフォルトの名無しさん (ワッチョイ f3f7-fDUi)2017/12/26(火) 20:58:13.89ID:YcrPMu9B0
point(1,1)

axis(1,1)
に正規表現で置換したいのですがどうすればいいでしょうか?
visualstudio2015です

229デフォルトの名無しさん (ワッチョイ f3f7-fDUi)2017/12/26(火) 21:01:11.62ID:YcrPMu9B0
point\({.*}\)
axis(\1)
とやっても出来ないので悩んでいます

>>227
なるほどw
でもreadonlyにこだわる必要本当にあるの?

231デフォルトの名無しさん (ワッチョイ 6f9d-FmKA)2017/12/26(火) 21:07:02.01ID:cWcYrW8d0
自分でソートロジックかいて要素入れ替えていけば良いだけ

おれならそうとうな量でない限り、ソート済みの別インスタンスと入れ替えるがな

232デフォルトの名無しさん (ワッチョイ a375-Iw9I)2017/12/26(火) 21:10:38.37ID:biBlc3d/0
>>224
理論的に考えてインデクサを持たないICollectionをAdd無しに内部での並び順を変えるのは不可能だろ

233デフォルトの名無しさん (ワッチョイ 6f9d-FmKA)2017/12/26(火) 21:10:38.80ID:cWcYrW8d0
もし元インスタンスにさわりたくないなら、元のコレクションとは別に
ソートした結果のインデックス位置をもつコレクションつくってそっちから引っ張るけど

234デフォルトの名無しさん (ワッチョイ a375-Iw9I)2017/12/26(火) 21:11:48.58ID:biBlc3d/0
>>229
{}ではなく()では?

235デフォルトの名無しさん (ワッチョイ 8f9f-9TLc)2017/12/26(火) 21:20:16.36ID:0luiAFcJ0
>>232
IListも継承してるクラスだからインデクサ持ってんじゃないかな

元インスタンスに触りたくないというよりは元インスタンスにも反映させたい
別クラスで作られたオブジェクトのインスタンスを渡してもらっていて、それをreaonlyにセットこっちのを並び替えたら同じ様に元のデータも並び替えられるって感じ

ここら辺の構成は弄れない
本当に勘弁してほしいわ

236デフォルトの名無しさん (ワッチョイ f3f7-fDUi)2017/12/26(火) 21:21:35.79ID:YcrPMu9B0
>>234
(にしてもだめでした
http://d.hatena.ne.jp/cjohn/20090105/1231156636
このページの通りにやっているのですが出来ません

237デフォルトの名無しさん (ワッチョイ a375-Iw9I)2017/12/26(火) 21:24:39.45ID:biBlc3d/0
>>235
ICollectionはIEnumerableしか継承してないんだがIListも継承してるとは?

238デフォルトの名無しさん (ワッチョイ 8f9f-9TLc)2017/12/26(火) 21:33:32.33ID:0luiAFcJ0
>>237
今議題にしてるのがCollection<T>クラスだからそっちの継承をみてくれ

239デフォルトの名無しさん (ワッチョイ a375-Iw9I)2017/12/26(火) 21:34:59.26ID:biBlc3d/0
>>236
マイクロソフトのドキュメントみて\1を$1にしたらできた

240デフォルトの名無しさん (ワッチョイ a375-Iw9I)2017/12/26(火) 21:38:58.29ID:biBlc3d/0
>>238
すまんな
じゃあ先頭から参照書き換えていけばいいのでは?

241デフォルトの名無しさん (ワッチョイ f3f7-fDUi)2017/12/26(火) 21:43:23.19ID:YcrPMu9B0
>>239
(にして$にしたらできました!有難う御座います!

242デフォルトの名無しさん (ワッチョイ 8f9f-9TLc)2017/12/26(火) 21:57:00.69ID:0luiAFcJ0
なるほど、Add、Removeじゃなくてhoge[i]=s みたいな感じで順に設定し直せばいいのか
多分>>233も同じことを言ってたんだろうけど別の意味で捉えてた
次からそうするわ

車輪の再発明感全開だなw

public static class Extensions
{
  public static void CopyTo<T>(this IList<T> src, IList<T> dst)
  {
    int count = Math.Min(src.Count, dst.Count);
    for (int i = 0; i < count; i++)
      dst[i] = src[i];
  }

  public static void Sort<T, TKey>(this IList<T> x, Func<T, TKey> keySelector)
  {
    x.OrderBy(keySelector).ToList().CopyTo(x);
  }
}

244デフォルトの名無しさん (ワッチョイ 6f9f-M1U4)2017/12/26(火) 22:17:42.69ID:DUnSIAzj0
>>235
いい機会だからリファクタしようぜ

>>243
親切杉ワロタ

srcやdistがnullの場合は?

247デフォルトの名無しさん (オッペケ Sr87-0cyC)2017/12/27(水) 06:40:33.49ID:8vUn4Dy4r
即死

248デフォルトの名無しさん (ワッチョイ ffd2-VulL)2017/12/27(水) 08:15:03.92ID:F/ihue6L0
即死するべき

249デフォルトの名無しさん (ワッチョイ f3d5-EmoC)2017/12/27(水) 17:55:28.81ID:LR8quwCc0
C#はメモリ不足でコンパイルできないことはありますか?

250デフォルトの名無しさん (ワッチョイ cf9a-RBuR)2017/12/27(水) 18:05:13.47ID:P6EO0z0h0
>>249
該当するコンパイラのスレで聞いてください

251デフォルトの名無しさん (スッップ Sd1f-Xao7)2017/12/27(水) 18:23:31.71ID:BZ3b6503d
>>249
絶対にないとはいえないけど、そもそもそんなマシンじゃ開発なんてできやしない。

252デフォルトの名無しさん (ブーイモ MM1f-bebx)2017/12/27(水) 20:06:48.22ID:hg84Qb1oM
>>249
その前にVSが重すぎてまともに動かないから大丈夫

253デフォルトの名無しさん (ワッチョイ ffd2-Xao7)2017/12/27(水) 20:47:39.32ID:Jr44gGH00
>>252
コンパイルとVisual Studioは別問題

254デフォルトの名無しさん (ワッチョイ b303-G8t+)2017/12/27(水) 20:53:22.02ID:CubzVxEy0
>>253
コンパイルに何の問題があると?

255デフォルトの名無しさん (ワッチョイ ff19-1kTE)2017/12/27(水) 20:56:02.93ID:gu8VevGS0
Windowsアプリケーションにおいて、ソースファイルのフォルダ分けはどのようにされていますか?

256デフォルトの名無しさん (ワッチョイ f3eb-tmg3)2017/12/27(水) 22:08:35.73ID:RcFlfCwd0
自前のクラスに、作成済みオブジェクトを探してオブジェクトを返すメソッドを作るにはどうすれば良いんですか?
Xamarin Androidにいうfindbyname()、UnityでいうGameObject.Find<T>()のようなものを自前のクラスにもつけたいんですが・・・・

257デフォルトの名無しさん (ワッチョイ a375-Iw9I)2017/12/27(水) 22:19:15.35ID:ZvzZDw7/0
もっと詳しく

258デフォルトの名無しさん (ワッチョイ b303-G8t+)2017/12/27(水) 22:21:38.34ID:CubzVxEy0
もっと激しく

259デフォルトの名無しさん (ワッチョイ f3eb-tmg3)2017/12/27(水) 22:27:50.77ID:RcFlfCwd0
ときには情熱的に

>>256
Dictionaryに名前でオブジェクト登録という方法があるけど
わざわざそんな無意味なことをする意味が分からない

UWPやWPFやwindows forrmsでは
xamarinのfindbynameみたいなものわざわざ使わないでもいいのに

261デフォルトの名無しさん (ワッチョイ 4ad2-pjZ7)2017/12/28(木) 03:01:35.82ID:OJX4Pfid0
>>254
コンパイルの質問なのにVisual Studioの問題にすり替えるのが不適切だと言ったまで

データにメソッドをチェーンするのが関数型言語の特徴なのかなと解釈してるんですけど、c#は関数型言語も内包してると考えて良いのでしょうか?

で、F#は関数型専用言語という位置づけで

263デフォルトの名無しさん (スップ Sd8a-2grh)2017/12/28(木) 07:22:15.38ID:mHFTOa6Td
>>262
F#は関数型専用ではなく、マルチパラダイム

>>263
そうなんですか
となるとc#にかなり接近してる気がするのですが、F#がなぜ作られたか不思議です

>>262
まず大前提としてメソッドチェーンと関数型プログラミングは何にも関係ない
下手にオブジェクト指向とのマルチパラダイムから入るより、まずはML系とかHaskell, Schemeみたいなちゃんとした関数型言語を触って特徴を掴むのがいいと思う

最終目的は何なん?

267デフォルトの名無しさん (ワッチョイ 0b23-bc8k)2017/12/28(木) 08:24:33.51ID:8DtRzb3L0
関数型言語やるとコードが綺麗になるから目的なんか関係なく一度は経験するべき

268デフォルトの名無しさん (スップ Sd8a-2grh)2017/12/28(木) 10:07:38.23ID:mHFTOa6Td
>>264
あくまでも専用ではないという指摘ね

269デフォルトの名無しさん (オッペケ Sr03-OTL/)2017/12/28(木) 10:27:05.35ID:UQgDKgtxr
>>255
ケースバイケース
一つの答は無い

270デフォルトの名無しさん (ワッチョイ 5fd5-7ecw)2017/12/28(木) 11:30:41.15ID:MTDYAVo/0
>>249
>>251
パソコンのメモリは十分に余裕があると仮定してプログラム的な容量の限界が知りたいです。
C#は無限にコードが書きこめるということですか?

271デフォルトの名無しさん (ワッチョイ 1bb3-Lfr5)2017/12/28(木) 12:42:40.91ID:ISLNvVJt0
C#言語にはソースコードサイズの限界なんて定義されてない
むしろ定義されてる言語って存在するの?

272デフォルトの名無しさん (スフッ Sdea-2grh)2017/12/28(木) 12:42:57.97ID:kdbduM9Wd
>>270
無限にコードが書き込めるって、具体的にどういうことを想定してるの?

273デフォルトの名無しさん (ガックシ 0686-kJbS)2017/12/28(木) 13:03:29.10ID:qTeBLGvd6
コンパイル可能なソースコードサイズがコンピュータのメモリ資源に依存するコンパイラがあるってことじゃね

274デフォルトの名無しさん (ワッチョイ 5fd5-7ecw)2017/12/28(木) 13:29:50.10ID:MTDYAVo/0
>>271
VB6は数百万行で限界が来てコンパイルできなくなりました。
>>272
コードを千万行単位で書き込んでも大丈夫か知りたいです。

275デフォルトの名無しさん (ブーイモ MM76-bc8k)2017/12/28(木) 13:37:17.01ID:bfoeL7nqM
適宜プロジェクト分ければ楽勝だろ
VS自体のソースとかだと余裕で超えてるだろうし

276デフォルトの名無しさん (JP 0H93-Auke)2017/12/28(木) 14:18:54.84ID:2t6rj/eWH
銀行の基幹システムかよ

277デフォルトの名無しさん (ブーイモ MM27-QRIm)2017/12/28(木) 14:28:23.21ID:4EMpIOJ0M
>>271
コンパイラーの上限値を明記してる処理系はあるけどc#の見つからんな。
何処かにあるはず。

278デフォルトの名無しさん (ブーイモ MM27-QRIm)2017/12/28(木) 15:01:10.61ID:4EMpIOJ0M
コンパイラエラーCS1033の記述に
/debugオプションを指定した場合は16,707,556行。しない場合は268,435,454行って書いてある。
1つのソースコードファイルにそんな行数を想定してるんだw

1ファイルの行数の制限はCで見たことあるけど
プロジェクトやモジュール単位での総行数の制限は見たことないな
本当にそんなのあるの?

280デフォルトの名無しさん (ブーイモ MM27-QRIm)2017/12/28(木) 15:02:46.82ID:4EMpIOJ0M
>>274
そんなサイズのVB6なんて見たことないw

281デフォルトの名無しさん (ブーイモ MM27-QRIm)2017/12/28(木) 15:06:16.70ID:4EMpIOJ0M
>>279
リンカーに上限値があるかもね。

282デフォルトの名無しさん (ワッチョイ ee9c-Hmb5)2017/12/28(木) 15:18:45.90ID:0QpKKHbp0
約1600万行のcsファイル開きたくないな
どう考えてもGodClassですがな

283デフォルトの名無しさん (ブーイモ MM27-QRIm)2017/12/28(木) 15:26:24.91ID:4EMpIOJ0M
Visual Studioのエディタがハングするだろ

284デフォルトの名無しさん (ワッチョイ ea60-rhJv)2017/12/28(木) 15:29:15.32ID:qUCulPnS0
>>267
lisp/scheme は関数型にはいりますか?

285デフォルトの名無しさん (ワッチョイ cab3-tILW)2017/12/28(木) 15:46:38.41ID:VwS/1tfY0
>>274
> コードを千万行単位で書き込んでも大丈夫か知りたいです。
試せばいいだけ

>>285
そーでもない
もし本当に超えそうなら

287片山博文MZ ◆T6xkBnTXz7B0 (ワッチョイ b3b3-9B3r)2017/12/28(木) 15:55:49.66ID:4SlZSkiq0
OSが止まる可能性アリ。

>>284
何をもって入らないにしたいのかわからないくらい入るじゃん

289デフォルトの名無しさん (ワッチョイ ea60-rhJv)2017/12/28(木) 16:33:31.43ID:qUCulPnS0
>>288
lisp って太古の昔から存在しているじゃない、これに比肩するのは cobol とか fortran とか、位に
そんな昔に関数型が存在できたのか?

コンパイラなんて自分で書いたことも理論勉強したこともないけど、
扱える識別子の数の上限とかは当然あるんだろうなあ

もっとも、恐らく全部がオンメモリで動いてるはずのインテリセンスの限界ですら
普通のプログラマはたぶん経験してないはずで、必要ならディスクも使えるはずの
コンパイラの限界なんて実用上は無限と想定してよいんじゃないかしら

言語を二次コードとして
一次コードから生成する形のプログラムを組んだらそういう限界を超えやすいかもしれんな

>>289
実装として問題ない性能が出たかは別として、関数型パラダイム自体は大昔からある
ラムダ計算も提唱された時期はチューリングマシンとあまり変わりなかったはず
関数型なんて要は文より式を多用する書き方ってくらいの認識でいいよ
初期Lispだって十分関数型といえる

293デフォルトの名無しさん (ワッチョイ 1bf2-YrVP)2017/12/28(木) 21:01:15.87ID:0+I+cwib0
>>256
>作成済みオブジェクトを探してオブジェクトを返す
という点だけで反応するけど、シングルトンのオブジェクトを共有したいみたいな話なら
MEFとかUnity(ゲームじゃない方)とかのDIコンテナ利用すればいいんじゃないかな。

リフレクションしたいんだろ

295デフォルトの名無しさん (ワッチョイ 5f81-Ixt9)2017/12/30(土) 12:06:27.98ID:fp/oHxe90
javascriptで生成後の値をスクレイピングして取得するにはどのような方法がおすすめですか?

>>295
普通にヘッドレスブラウザ & Seleniumでいいよ
今ならchromeやfirefoxがヘッドレス対応してる
C#はSeleniumライブラリの出来がイマイチなのでpythonやその他の言語を使ったほうがいいだろうね

297デフォルトの名無しさん (ワッチョイ 5f81-Ixt9)2017/12/30(土) 14:14:37.73ID:fp/oHxe90
>>296
ベースはC#で行きたい場合、スクレイピングはpythonで作って、dllにでもして呼び出すイメージでしょうか?

C#でもSeleniumは動かせるよ
おすすめはしないってだけ

python使うならモジュールではなくサービスにしたほうがいいだろうね

300デフォルトの名無しさん (ブーイモ MM76-bc8k)2017/12/30(土) 14:23:22.82ID:IKvN98q1M
普通にProcess.Startでいいよ
スクレイピングなんかそれ自体クソ重いから連携はファイルベースで全く問題ない

301デフォルトの名無しさん (ワッチョイ 83d2-2grh)2017/12/30(土) 14:47:06.31ID:gOML52to0
>>298
なぜ?

302デフォルトの名無しさん (ワッチョイ 1b02-Xn0J)2017/12/31(日) 01:25:27.69ID:/ykdU4z00
出来がイマイチだから

303デフォルトの名無しさん (ワッチョイ 83d2-2grh)2017/12/31(日) 06:36:51.88ID:5u0blHAo0
>>302
何に比べてどうイマイチなの?

304デフォルトの名無しさん (ワッチョイ 0a19-MgI2)2018/01/01(月) 20:52:37.58ID:G7LbeSvc0
oracleに接続するのはodp.net安定ですか?

305デフォルトの名無しさん (ワッチョイ 83d2-2grh)2018/01/02(火) 00:30:47.40ID:TZO8s3980
>>304
それ以外に何を考えてんの?

306デフォルトの名無しさん (ワッチョイ 460f-2YEI)2018/01/02(火) 20:06:46.76ID:c6AfmmkU0
ファイル、新しいプロジェクトを選びます
Windowsフォームアプリケーション
を選択したいのですが、見当たりません

visual studio 2017インストールし、C#の勉強をしようとしています
背景が真っ黒で白地にしたいですが、表示(V)を左クリックしても背景を変更する設定が分かりません

c#本を2010年に買って、8年かかってやっとインストールする気になり…当時はvisual studio2010をインストールしてね、でしたが…
2017をインストールしました

>>306
http://www.softantenna.com/wp/tips/visual-studio-2017-install/

ワークロードで.netデスクトップアプリ開発をインストールしてねんじゃね?

308デフォルトの名無しさん (ワッチョイ 460f-2YEI)2018/01/02(火) 20:33:51.04ID:c6AfmmkU0
スタートボタンからblend for visual studio 2017を起動してました

vのvisual studio2017から起動したら、白背景、Windowsフォームアプリケーション(.net flamework)ボタンがありました

.NET Frameworkは外したいけと、外せないようですね

309デフォルトの名無しさん (ワッチョイ 460f-2YEI)2018/01/02(火) 21:59:17.87ID:c6AfmmkU0
>>307
307さん、ありがとう
本のサンプルプログラム、1つ動かせました
早く.exe作りたいです
少しずつページを進めます!

310デフォルトの名無しさん (ワッチョイ 0b23-bc8k)2018/01/02(火) 22:06:55.09ID:NRmrCA2E0
楽しみにしているところ申し訳ないが、動かせたのなら既にお前は.exeを作っている

311デフォルトの名無しさん (ワッチョイ de81-Xn0J)2018/01/02(火) 23:08:41.27ID:jqAIBNHq0
驚愕の事実だな

プロジェクトが作れない

こんなのがFAQなんだからMSはいろいろと見直したほうがいい

初心者でも落ち着いて考えれば十分解決可能な問題のような気もするんだけどね

314デフォルトの名無しさん (ワッチョイ de81-Xn0J)2018/01/02(火) 23:42:05.33ID:jqAIBNHq0
鳥には芋虫の考えなんてわからないよ

315デフォルトの名無しさん (ワッチョイ 460f-2YEI)2018/01/02(火) 23:53:32.38ID:c6AfmmkU0
まったりとした雰囲気ありがとう、皆さん
自分は古く融通が利かないタイプです

フォルダ作ってコンパイラとリンカ放り込み、パスを通してbat作ってコンパイル
エラーが出たら、エラーリストをテキストエディタで読みタグジャンプ、エラー修正…
開発環境はFD1枚で持ち運び

だから今の開発環境インストール50GBに驚愕、ソースバックアップどうするの??開発環境はノーパソごと持ち運びか?とか
visual studio2000いくつかを過去にインストールした時はOSごと落ちてOS再インストールを味わって困惑してました

奮起してゆっくり覚えます

316デフォルトの名無しさん (ワッチョイ 03c9-Auke)2018/01/03(水) 00:01:56.60ID:gYcQuPfn0
>>315
batでコンパイルならMSBuildはまだ現役だからそうそう焦ることは無いんじゃね
ソースバックアップは今ならオンラインでGit使えば履歴・差分管理も出来て楽だよ

317デフォルトの名無しさん (ワッチョイ ce33-Kkzi)2018/01/03(水) 01:17:17.11ID:E10k9nmq0
テスト

318デフォルトの名無しさん (ワッチョイ 6b75-kJbS)2018/01/03(水) 01:36:11.94ID:zucBe8Ms0
>>315
言うほど何個ものコンピュータで開発するか?
それぞれで環境作ればよくね?
プロジェクトは個人ならOneDriveかグループならGithubとか

319デフォルトの名無しさん (ワッチョイ ce33-Kkzi)2018/01/03(水) 01:38:01.68ID:E10k9nmq0
なんかcmd.exe←全部半角にすると書き込めないね

320デフォルトの名無しさん (ワッチョイ 6b75-kJbS)2018/01/03(水) 01:44:24.84ID:zucBe8Ms0
a.exe

321デフォルトの名無しさん (ワッチョイ 6b75-kJbS)2018/01/03(水) 01:45:06.51ID:zucBe8Ms0
cmd.exe

322デフォルトの名無しさん (ワッチョイ 6b75-kJbS)2018/01/03(水) 01:47:07.02ID:zucBe8Ms0
a.js

323デフォルトの名無しさん (ワッチョイ 6b75-kJbS)2018/01/03(水) 01:48:25.71ID:zucBe8Ms0
script

324デフォルトの名無しさん (ワッチョイ 6b75-kJbS)2018/01/03(水) 01:48:44.83ID:zucBe8Ms0
<>

325デフォルトの名無しさん (ワッチョイ 6b75-kJbS)2018/01/03(水) 01:51:42.79ID:zucBe8Ms0
<script> ←これも書き込めない

326デフォルトの名無しさん (ワッチョイ caa4-xflF)2018/01/03(水) 03:03:39.73ID:BLwnNh6e0
ここはテストスレではありません

327デフォルトの名無しさん (ワッチョイ 9ff7-57r9)2018/01/03(水) 21:40:35.60ID:4IoSL1o20
int a=2;
int b=3;
int c=9;
int d=11;
このうち10より小さいもののうちで一番大きいものを選択する(アルファベットを返す)コードはどういうふうに書けばよいでしょうか?

328デフォルトの名無しさん (ワッチョイ 4ad2-Auke)2018/01/03(水) 21:49:31.09ID:asJzHhKy0
>>327
var list = new List<int> { a, b, c, d };
var result = list.Where(l => l < 10).Max();

329デフォルトの名無しさん (ワッチョイ 9ff7-57r9)2018/01/03(水) 21:52:22.30ID:4IoSL1o20
ありがとうございます。

330デフォルトの名無しさん (ワッチョイ 6b75-kJbS)2018/01/03(水) 21:55:57.06ID:zucBe8Ms0
var dict = new Dictionary<string, int>(){
{"a", 2},
{"b", 3},
{"c", 9},
{"d", 11}
};

var result = dict.Where(data=>data.Value<10).Max(data=>data.Value).Key;

331デフォルトの名無しさん (ワッチョイ 9ff7-57r9)2018/01/03(水) 22:08:04.88ID:4IoSL1o20
何度もすいません
int a=2;
int b=3;
int c=9;
int d=11;
同じアルファベットに対応したフラグ
bool a_flag=true;
bool b_flag=true;
bool c_flag=true;
bool d_flag=false;
このうちフラグがtrueの中のもので一番大きいものを選択する(アルファベットを返す)コードはどういうふうに書けばよいでしょうか?

そういうことをやりたいなら

C#入門を全部終えてからやれ

処理内容を変数の名前に依存するのは悪いやり方

int aがbool a_fragに関連していると決めているのはコードを書いてる人間だけ

プログラム上は関連づけられてない
とんでもない愚かなコード

334デフォルトの名無しさん (ワッチョイ 6b75-kJbS)2018/01/03(水) 22:28:33.33ID:zucBe8Ms0

335デフォルトの名無しさん (ワッチョイ de81-Xn0J)2018/01/03(水) 22:30:30.27ID:MV/bJa3c0
C#でなくパッパラパー向けの言語やればいい
Pなんとかっていう

336デフォルトの名無しさん (ワッチョイ 4ad2-Auke)2018/01/03(水) 22:30:39.56ID:asJzHhKy0
>>334
それだと最大値をもつものが複数あった場合が考慮されていない

337デフォルトの名無しさん (ワッチョイ 6b75-kJbS)2018/01/03(水) 22:33:25.93ID:zucBe8Ms0
>>336
うむ。
一応Valueは重複しないものとして最初に出現したやつを選ぶことにしておいた

338デフォルトの名無しさん (ワッチョイ 6b75-kJbS)2018/01/03(水) 22:39:35.15ID:zucBe8Ms0
最大値を持つアルファベットをすべて出力するVer
https://ideone.com/RfUhMp

339デフォルトの名無しさん (ワッチョイ 9ff7-57r9)2018/01/03(水) 22:43:09.66ID:4IoSL1o20
ありがとうございます
自分のコードにあてはめて書いてみます
また来ます

340デフォルトの名無しさん (ワッチョイ 6b75-kJbS)2018/01/03(水) 22:47:32.12ID:zucBe8Ms0
何故Max関数はリストの要素そのものではなく判別に使った式の値を出力する仕様にしたのか

341デフォルトの名無しさん (ワッチョイ 6b75-kJbS)2018/01/03(水) 22:48:35.18ID:zucBe8Ms0
と思ったけど最大値が複数あるときにそうじゃないと困るからか!初めて気付いた

いやいやそんな理由じゃないぞw
最大値を求める関数から要素返されても困るだろ

343デフォルトの名無しさん (ワッチョイ 6b75-kJbS)2018/01/03(水) 22:59:13.78ID:zucBe8Ms0
>>342
まあそうなんだけどさw
要素自体を抽象的な順序数として考えれば要素が返されてもおかしくないのにって思ってたは w

344デフォルトの名無しさん (ワッチョイ 6b75-kJbS)2018/01/03(水) 23:02:45.49ID:zucBe8Ms0
DateTimeオブジェクトみたいな w

345デフォルトの名無しさん (ワッチョイ de81-RYVm)2018/01/03(水) 23:04:14.73ID:a50vShvf0
どれか一個えらぶ関数じゃなくて一応演算の結果を返す関数だからな
SumとかAvgとかと挙動違ったら面倒くさい

そういう問題でもない…

347デフォルトの名無しさん (ワッチョイ 5f81-Ixt9)2018/01/03(水) 23:09:47.06ID:kBuweVPR0
>>331
さっきの解を、swichで判定だな。
もしくはdictionary型をつかう。

348デフォルトの名無しさん (ワッチョイ 9ff7-57r9)2018/01/03(水) 23:59:11.68ID:4IoSL1o20
var list = new List<bool> { true, false, true, true, true, true };
Console.WriteLine(list.Count(true));

trueの数を表示させたいのですがこの場合ラムダ式はどのように書けばいいでしょうか?

それは「この場合ラムダ式」が分からないんじゃなくて、そもそもラムダ式がまるで分からないんだと思うw
質問する前にやることがあるんじゃないのかな

350デフォルトの名無しさん (ワッチョイ bbf7-k1u0)2018/01/04(木) 00:08:30.14ID:dskbzAHG0
すいません…
LINQ触るの初めてなもので…

ラムダ式以前にc#がわかってないだろ
コード書くには早すぎる
入門書を読み返せ
回答が出てないなら新しいのを買え

352デフォルトの名無しさん (ワッチョイ bbf7-k1u0)2018/01/04(木) 00:28:30.17ID:dskbzAHG0
var list = new List<bool> { true, false, true, true, true, true };
Console.WriteLine(list.Count(n => n == true));

とりあえずこれで動きました
nはメソッドの引数みたいなものでなんでも構わないのでしょうか?

var list = new List<bool> { true, false, true, true, true, true };
textBox1.Text = list.Count(n => n == true).ToString();

また上の様にすると動かないのですが、これは何故でしょうか? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)

353デフォルトの名無しさん (ワッチョイ 3bb5-CJXz)2018/01/04(木) 00:36:28.14ID:uPERGx+M0
質問です
わたしはパッパラパーなりにC#を勉強してきて、自分用の初歩的なGUIアプリを作れる程度には覚えれたんですが
Pなんとかのほうが良かったんですか?
それがパッパラパーに向いてる理由をふくめて教えていただけるとありがたいです

354デフォルトの名無しさん (ワッチョイ cb75-rVxj)2018/01/04(木) 00:42:55.37ID:T+TxDQDt0
>>352
そう、nは引数。

>>352
動かないとは具体的にどうなる?エラーとかでテルル

355デフォルトの名無しさん (ワッチョイ cb75-rVxj)2018/01/04(木) 00:43:17.15ID:T+TxDQDt0
でテルルじゃなくて出てる?

356デフォルトの名無しさん (ワッチョイ bbf7-k1u0)2018/01/04(木) 00:44:43.18ID:dskbzAHG0
>>354
Tostringの後の;で
型 'System.NullReferenceException' のハンドルされていない例外が LINQtest.exe で発生しました
追加情報:オブジェクト参照がオブジェクト インスタンスに設定されていません。
と出ます

357デフォルトの名無しさん (ワッチョイ cb75-rVxj)2018/01/04(木) 00:45:23.69ID:T+TxDQDt0
>>353
Pなんとか=Python?
Pythonだと高度な機能が無いから簡単ってことかな?
でもC#で簡単な機能だけ使えばいいのでは...

358デフォルトの名無しさん (ワッチョイ cb75-rVxj)2018/01/04(木) 00:46:43.86ID:T+TxDQDt0
>>356
うーん...ideoneに全部貼ってうp頼む

359デフォルトの名無しさん (ワッチョイ bbf7-k1u0)2018/01/04(木) 00:49:07.59ID:dskbzAHG0
>>358
https://ideone.com/mDt50q
こちらになります
お手数おかけしますがよろしくお願い致します。

360デフォルトの名無しさん (ワッチョイ cb75-rVxj)2018/01/04(木) 00:52:04.58ID:T+TxDQDt0
>>359
Form1メソッドはForm1クラスのコンストラクタなんだが、ここじゃなくてform1_Loadの中に書かないといけない。
デザイナーでフォームのウィンドウをダブルクリックすればform1_Loadが作成されるからその中に。

361デフォルトの名無しさん (ワッチョイ cb75-rVxj)2018/01/04(木) 00:59:42.00ID:T+TxDQDt0
あと、コピぺするときに省略しただけかもしれないけどInitializeComponent();っていう文がForm1メソッドの中に書いてあったはずなんだがそれは必要

362デフォルトの名無しさん (ワッチョイ bbf7-k1u0)2018/01/04(木) 01:01:20.45ID:dskbzAHG0
>>361
出来ました!
有難うございます。
助かりました。

363デフォルトの名無しさん (ワッチョイ bbf7-k1u0)2018/01/04(木) 04:02:02.66ID:dskbzAHG0
>>334
同じ値の時はあらかじめ決められている優先順位を取りたかったのでこのコードが非常に参考になりました
有難う御座います。
優先度が高いものを上にすればいいんですね

var flaggedList = list.Where(data => data.Flag);
これだけよくわからないのですがif(true)とかと同じ様な書き方でtrueのものだけソート出来るんでしょうか?

364デフォルトの名無しさん (ワッチョイ 4f9f-b4Jt)2018/01/04(木) 05:47:57.28ID:+aPSEg6K0
上は下の省略形で下の括弧内で好きに条件をかけばいい
data => data.Flag
data => {return data.Flag;}
勿論ifも使えるしこんな感じで書きかえることもできる
data =>{
if(data.Flag){
return true;
}
else{
return false;
}}

>>348
s => s

366デフォルトの名無しさん (ワッチョイ 3bb5-CJXz)2018/01/04(木) 14:02:40.76ID:uPERGx+M0
>>357
ありがとうございます

367デフォルトの名無しさん (ワッチョイ bbf7-k1u0)2018/01/04(木) 16:11:37.44ID:dskbzAHG0
レス有難う御座います。
>>334
でFlagが全てfalseだった場合止まってしまうので、mavValueOwnerKeyに空である表示をしたいのですがどうすればいいでしょうか?

368デフォルトの名無しさん (ワッチョイ bbf7-k1u0)2018/01/04(木) 16:14:27.34ID:dskbzAHG0
list.Countで場合分けしてみます

369デフォルトの名無しさん (ワッチョイ 0b16-if4i)2018/01/04(木) 16:34:11.21ID:v6C8tRIY0
そうだな。
てかmaxがmavになってた

370デフォルトの名無しさん (ワッチョイ ef9b-uQO5)2018/01/05(金) 14:35:10.83ID:vfHtPi/n0
ある文字列に特定の文字列が含まれていれば別の文字列に置換する、という処理を行いたいんですが
だぜ→です
ですわ→です
といった感じの置換したい文字列が数百パターン存在する場合はひとつひとつ置換を試していくしかないのでしょうか…?

>>370
Replaceじゃダメなん?

372デフォルトの名無しさん (ワッチョイ ef9b-uQO5)2018/01/05(金) 14:51:45.66ID:vfHtPi/n0
>>371
基本的にはreplaceを使うことになると思うのですが、例えば
'今日はほんといい天気だぁ〜〜〜!!'
という文字列に対して
だぜ→です
だぁ→だ
ほんと→ほんとうに
といった変換ルールが複数ある場合は
ひとつひとつreplaceをかける(あるいはループで変換ルールすべてを試す)しかないのかなぁと思いまして

要するに実行速度が気になっているのです

>>372
やってみろよ
問題なければそれでいいじゃん

374デフォルトの名無しさん (ガックシ 067f-if4i)2018/01/05(金) 14:55:24.40ID:mKj1Hxz16
>>372
そうするのが自然

375デフォルトの名無しさん (ワッチョイ ef9b-uQO5)2018/01/05(金) 14:55:33.45ID:vfHtPi/n0
>>373
それもそうですね
一度試してみます
ありがとうございました

>>372
そこに”今日はほんとうにいい天気だ”を突っ込むとどうなる?

377デフォルトの名無しさん (ワッチョイ 9f2b-hL1C)2018/01/05(金) 16:43:17.51ID:L4TaysN80
うにうに

変換済みワードは一旦固めてしまわないと駄目かもしれんね

379デフォルトの名無しさん (ワッチョイ 4f33-wtpF)2018/01/05(金) 22:21:11.06ID:zjfuYfzH0
インクリメンタルにトライ木に掛けると1走査でできるよ

380デフォルトの名無しさん (ワッチョイ cb75-if4i)2018/01/05(金) 23:01:40.39ID:FSL+3S710
なんぞそれ

switch c

case 'だ':
var n=nextWord();
if(n=='ぜ')
replace("です");
else if(n=='ぁ')

382デフォルトの名無しさん (ワッチョイ 2bb3-7I2U)2018/01/06(土) 15:58:34.34ID:lrwhIMsB0
C♯のswitchってC♯6からint以外も扱えるようになってたのか知らなかった

383デフォルトの名無しさん (ブーイモ MM0f-ICSi)2018/01/06(土) 17:26:53.26ID:lMgufIkRM
2008とかでも使えるけど?

384デフォルトの名無しさん (ワッチョイ bbf7-k1u0)2018/01/08(月) 18:15:27.77ID:N8MhEzoU0
"one"
"two"
"three"
の様な文字列が用意されていて

int keisan(2,"one")
→2*1
int keisan(2,"one","two")
→2*(1+2)
int keisan(2,"one","two","three")
→2*(1+2+3)
int keisan(2,"one","three")
→2*(1+3)
の様な結果を返すメソッドを作りたいのですが
引数の数が決まっていないメソッドを作るにはどうすればいいのでしょうか?

385デフォルトの名無しさん (ブーイモ MM0f-lku/)2018/01/08(月) 18:17:47.15ID:vvKSl3ZPM
params

386デフォルトの名無しさん (ワッチョイ 9fd2-oFSC)2018/01/08(月) 18:21:03.05ID:oFrueEmX0
>>384
string[ ] args

387デフォルトの名無しさん (ワッチョイ 9fd2-WIcH)2018/01/08(月) 18:28:46.09ID:6LQHZKeL0
シグネチャは int keisan(int x, params string[] xs) になるかな

たぶんずっと同じ人だと思うけど、こういう人には質問するより前に
まず自分で一通り勉強したらって言ってあげるのが優しさだと俺は思うけどなあw

389デフォルトの名無しさん (ワッチョイ cb75-rVxj)2018/01/08(月) 18:44:35.51ID:LRSoqKZx0
俺はそうは思わんわ
これも一種の勉強やろ

390デフォルトの名無しさん (ワッチョイ fb03-wNfw)2018/01/08(月) 19:00:26.28ID:Jvqg6B4Y0
質問するより前にまず自分で一通り勉強した結果がお前らなのだから
俺は自分で勉強するより前に質問する方を選ぶよ

391デフォルトの名無しさん (ワッチョイ 9fb3-TPPA)2018/01/08(月) 19:29:32.05ID:7hYpzMEE0
>>388
ここ質問スレだから

392デフォルトの名無しさん (ワッチョイ 9fe3-UR9r)2018/01/08(月) 19:38:26.81ID:uSMEFASC0
これあれじゃん
printfっぽいやつじゃん

393デフォルトの名無しさん (ワッチョイ 9fe3-UR9r)2018/01/08(月) 19:42:36.36ID:uSMEFASC0
c++のときの記憶だったw

394デフォルトの名無しさん (ワッチョイ cf9c-YOiH)2018/01/08(月) 19:48:50.27ID:YqcrQaEG0
例えばこんな感じのことがしたいのか
2の部分や演算順序が固定で気持ち悪い感じするが、簡易パーサーか何かかな
https://ideone.com/b4A3Hl

いや
同じ人なら
どうせまた変な事がしたいだけ

396デフォルトの名無しさん (ワッチョイ 0f81-CMM7)2018/01/08(月) 21:33:14.77ID:xV7in+AG0
自閉症かなんかっぽいよね

397デフォルトの名無しさん (ワッチョイ 4f9f-b4Jt)2018/01/08(月) 21:40:08.24ID:zg3P5Xfz0
勉強というよりもこの程度の内容をググれないのが心配だ
"引数の数が決まっていないメソッド"って感じの適当な検索でもかなりヒットするのに

398デフォルトの名無しさん (ワッチョイ 0b05-rVxj)2018/01/08(月) 21:40:13.41ID:bJftSVCJ0
おかげでスレの話題が新鮮に保たれてる

399デフォルトの名無しさん (ワッチョイ 9fd2-Gfid)2018/01/08(月) 21:45:51.25ID:O8jIltI+0
ここは
>「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
て、ことだからねえ。
>>1 が気にいらないなら自分で自分の主義にあるスレを立ち上げればいいだけ。

検索するにも適切なキーワードを思いつけなくて1日悩み続けた挙げ句に、聞いたら一瞬で終わるなんて事もあるし。
今回のは簡単な方だったみたいだけど。

400 ◆QZaw55cn4c (ワッチョイ 1f60-1EiW)2018/01/08(月) 21:55:49.50ID:F+Qn6y7R0
>>399
「VS2017 のプロジェクト(P)→プロパティ(E)のスタートアップオブジェクト(O) に相当する
eclipse や intelliJ のメニューってなんですか」
と、今も探しているが、そもそも適切なキーワードが思いつかない

自分の話ですまん‥

(1) 勉強して理解できなかった疑問点や調べても解決しなかったことを質問する
のと

(2) 面倒くさいからとにかくお前ら手取り足取り教えてくれ

では全然違うと思うよw

誰でも変な思い込みや勘違いをすることがあるから、(1)であるならくだらない質問でも問題ないと思う。
でも(2)は見ててあんまり気分がよくないなと思う人もいると思うけどね。

っていうかそういう道徳的話はともかく、それって学習効率悪いよね絶対。
優しさ云々はそういう意味

くだらない調査に時間かけるより聞いた方が良い
答える方もグダグダ言わずに知ってることを教えてやれ
そういうネットワークができれば社会全体の生産性が上がるんだよ
日本にはなくて外国には当たり前のようにあるシステムだ
日本人は性格が排他的すぎるからITに向いてない
だから負けるんだ

403デフォルトの名無しさん (ワッチョイ bbf7-k1u0)2018/01/08(月) 22:29:20.81ID:N8MhEzoU0
>>385
>>386
>>387
有難う御座います。
後でやってみます。

入門書は一冊終わらせてはいるのですが作りたいものを作ろうとした時、その本に載っていないことの方が多くて…
ここのスレの方々のおかげで今作っているプログラムもだいぶ形になってきました
非常に助かっています
可変長引数についても一応事前に調べて存在は知っていましたが説明を読んでもいまいちわからなく
もっと簡単な方法があるかも…と思って聞いてみました
でもやっぱりparamsと答えられたのでそれがベストなんだなと知ることが出来て
説明をもう一度読み直したらなんとか理解出来ました

404デフォルトの名無しさん (ワッチョイ bbf7-k1u0)2018/01/08(月) 22:32:02.44ID:N8MhEzoU0
>>394
ありがとうございます。
参考にします。

405デフォルトの名無しさん (ワッチョイ 9fb3-TPPA)2018/01/08(月) 22:34:04.87ID:7hYpzMEE0
くだらん質問だと思うならスルーするなり他のスレに行けよ
ここは

> 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

だよ

406デフォルトの名無しさん (ワッチョイ bbf7-k1u0)2018/01/08(月) 22:40:28.65ID:N8MhEzoU0
ちなみにこういう書き方はできるのでしょうか?
int keisan(params string[] xs,int x)

int keisan("one","two","three",2)

407デフォルトの名無しさん (ワッチョイ cb75-rVxj)2018/01/08(月) 22:44:04.38ID:LRSoqKZx0
無理です
ちょっと考えればそれができたら困ったことになるのは分かるはず

408デフォルトの名無しさん (ワッチョイ 4f9f-b4Jt)2018/01/08(月) 22:45:14.32ID:zg3P5Xfz0
>>406
paramsは最後のみ
エラーでるから試してみるといい

>>405
スルーも何も質問は2分後に解決してる
その後はこういったプログラミング初心者対して別アプローチをした方がって話で質問とは関係ないと思うんだが

409デフォルトの名無しさん (ワッチョイ fb03-wNfw)2018/01/08(月) 22:51:04.77ID:Jvqg6B4Y0
>>407、408
よう初心者クン
で何を教えて欲しいのかね?

410デフォルトの名無しさん (ワッチョイ 4f33-wtpF)2018/01/08(月) 23:37:32.94ID:evPy5QQs0
>>407
最後にint型が来るって指定なんだから別に困らない
パターンマッチではよくあるでしょ

411デフォルトの名無しさん (ワッチョイ cb75-rVxj)2018/01/09(火) 00:41:16.91ID:5Fj63PJf0
>>410
この場合は困らんけど一般的には困るだろ
こんな文法が許されてたら。

412デフォルトの名無しさん (ワッチョイ 9fd2-oFSC)2018/01/09(火) 03:29:04.52ID:V7ZjzcjU0
>>411
デフォルト引数の順番の制限もなくなったことを考えてみ?

413デフォルトの名無しさん (ワッチョイ 9fb3-TPPA)2018/01/09(火) 04:57:15.02ID:/Jm0Q1+w0
>>408
> 質問とは関係ないと思うんだが
スレ違いだとは思わないのか?

414デフォルトの名無しさん (ワッチョイ bbf7-k1u0)2018/01/09(火) 05:02:51.20ID:A/ESCl++0
可変長は一種類だけで、最後に定義しないといけないみたいですね
無事に機能を実装できました。
質問に答えて下さった方有難う御座いました。

415デフォルトの名無しさん (ワッチョイ cb75-rVxj)2018/01/09(火) 08:16:40.42ID:5Fj63PJf0
>>412
おまえに言われなくてもそんなこと考えてるし
そのパターンは非現実的だって分かるだろ

416デフォルトの名無しさん (スップ Sdbf-oFSC)2018/01/09(火) 08:29:24.71ID:yV0bRmzSd
>>415
なぜ?

417デフォルトの名無しさん (ガックシ 067f-rVxj)2018/01/09(火) 08:58:27.18ID:jhkCquMi6
>>416
hoge(arg=1, args=2, arcs=3, n=2)

argsの配列感がない上に1,2,3っていう順番付けが曖昧

hoge((arg=1, 2, 3,) n=2)

こんな文法を作ったとしても、もう配列で良いよねってなる

説明させんなよメンドくせえな

418デフォルトの名無しさん (オッペケ Srcf-4aXV)2018/01/09(火) 12:19:24.01ID:EqlP/XAyr
なぜ>>417はこの程度の理解で答えたがるのか?
他人事と思わず皆考えてみよう

419デフォルトの名無しさん (ガックシ 067f-rVxj)2018/01/09(火) 12:47:31.69ID:p+9rZZ3s6
具体的に指摘できないなら喋んな

420デフォルトの名無しさん (ブーイモ MM0f-jqvb)2018/01/09(火) 12:48:02.08ID:xZogmC5hM
>>419
同意する

421デフォルトの名無しさん (ワッチョイ dfeb-Ogju)2018/01/09(火) 12:48:04.59ID:tXr0nFdK0
rubyも昔は可変長引数は最後の仕様だったけど、今は途中でも大丈夫になってる
結局は作ってる人のやる気次第だな

422デフォルトの名無しさん (ガックシ 067f-rVxj)2018/01/09(火) 12:59:33.58ID:jhkCquMi6
>>421
無理矢理でもやってるやつもあんだな。

ま、>>407
「ちょっと考えれば分かるだろ質問すんな」じゃなくて、
『は?なんで可変長だけ順番変えねえの?キモッ。』って思われるかもしれないから、納得できるように付け加えただけな。

423デフォルトの名無しさん (ワッチョイ ef9d-/oj5)2018/01/09(火) 17:14:14.89ID:GTddlW8V0
rubyってオーバーロード出来るの?

424デフォルトの名無しさん (ワッチョイ bbeb-nOrU)2018/01/09(火) 18:29:21.69ID:TMj71yN00
async/awaitを使った際の実行の流れの図があったら誰か見せてくれんかな

425デフォルトの名無しさん (ワッチョイ 7b17-Ogju)2018/01/09(火) 18:34:44.72ID:KiSnx3XP0

426デフォルトの名無しさん2018/01/09(火) 18:38:13.58
awaitのコードがコンパイラでどう変形させられるかの記事見たほうが分かりやすい
http://tech.blog.aerie.jp/entry/2015/08/29/022932

427デフォルトの名無しさん (ワッチョイ bbeb-nOrU)2018/01/09(火) 18:57:43.08ID:TMj71yN00
ありがとうございます
図はよくわからなかった点も多いので、ゆっくり記事を読んできます

>>424
@ITの記事にはシーケンス図っぽいのが載ってるよ
http://www.atmarkit.co.jp/fdotnet/chushin/masterasync_02/masterasync_02_01.html

>>428
こう言う間違った図が人を惑わせる

よくみたら間違った図ではないが
使う上でなんの説明にもなってない図に訂正

この図だけをみると初心者がハマる

↑の人はたぶんコードと図で1セットになってることに気付かずに
図だけ見てそう言ってるか、あるいはなんか思いっきり勘違いしてるだけだと思うから
安心して参考にしていいと思うw

説明するのが非常に難しいんだけど

async/awaitの挙動をまともに書いてる記事が少ない
有名人でも間違った解説をしてる

>「メソッドを一時中断し、awaitされた処理の完了を待って残りの処理を再開する」
非常にグレーな表現

>@に続けてAの処理が別スレッド上で開始される
非常にグレーな表現

HevyWork()の中身が必ずすべて別スレッド上で行われてるわけではない

434デフォルトの名無しさん (ワッチョイ 0fe8-Ogju)2018/01/10(水) 01:58:10.55ID:av8HDoY10
正しい図を描いてアップしてもらえませんか

出来たら苦労しない

場合訳が複雑なので
非常にめんどくさい

言っちゃ悪いけど、これも立派な2ch脳だね
羊たちの沈黙にあった台詞だけど、その批判的精神を自分自身に向けるだけの理性はないのかw

>>434
いや、>>428の記事は十分わかりやすいし間違ってもいないから安心していいよw

それぞれがそれぞれの心の中でお前が言うなと思う

上にあった図を参考にしてるといつか全然思った通りに動かなくなり?マークになる

439デフォルトの名無しさん (ワッチョイ 9f7c-Ogju)2018/01/10(水) 05:30:31.38ID:t7WvUySz0
UnityってC#どのくらい使えると触れるの?

440デフォルトの名無しさん (ワッチョイ 0f80-41Gj)2018/01/10(水) 07:12:09.78ID:8FRtzSYP0
初めてのJavaScript 第3版、オライリー、2017

JS には、async/await が無いから、
この本では、generator runner の仕組みを説明している。
co, Koa というライブラリを使う

非同期処理は異なるコンテキストで、
別のスレッド・プロセスだから、どこを実行しているのか分からない。
実行順番も制御できないし、例外処理も使えない

generator runner は非同期処理を、yield で待つように作る。
これにより、非同期処理を同期処理のコンテキストに当てはめるから、
実行順番を制御できるし、例外処理も使える

try{
yield promise 非同期処理
} catch {
}

441440 (ワッチョイ 0f80-41Gj)2018/01/10(水) 07:52:38.82ID:8FRtzSYP0
異なるコンテキストとは、同じソースコードに書いていても、
OS から見ると、別のプロセス・スレッド・実行単位になる

OS は、1秒間に数万回も、実行単位を切り替える(コンテキストスイッチ)から、
今、別の実行単位の、どのコードが実行されているかは、全く分からないし、制御もできない

別の実行単位に対してできることは、
タスクの終了を待つか、タイムアウトするか、タスクを止めてもらうかだけ

442デフォルトの名無しさん (スップ Sdbf-oFSC)2018/01/10(水) 07:54:58.52ID:dKgg5RtTd
>>440
>JSには、async/awaitが無い
何言ってんの?

443デフォルトの名無しさん (ワッチョイ 4b23-lku/)2018/01/10(水) 08:02:12.05ID:hRyz+G9b0
句読点君のレスを判定するアルゴリズムを作ろう
機械学習の勉強によさそう

444デフォルトの名無しさん (ワッチョイ 1bf2-Ogju)2018/01/10(水) 08:27:22.17ID:fLUpXSTQ0
>co, Koa というライブラリを使う

あぁ、このアホか。C#スレまで出張ってきてうざいな。

話の流れが見えない
非同期処理的

446デフォルトの名無しさん (アウアウカー Sa4f-Sycn)2018/01/10(水) 15:47:45.43ID:0NEBj+IAa
C#始めて1カ月程度の初心者です

trackbarの値をBackgroundWorkerに渡して、その値を使って別スレッドで画像を生成して、whileとReportProgressでtrackbarの変更に合わせて画像を表示していくプログラムを作っているんですが、

trackbarの値をBackgroundWorker_DoWorkに渡すのってどうやるんですか?

別スレッドなので、trackbar.Valueでそのまま使う事ができなくて…
デバッグ無しの実行ならよく分からないですが、そのまま使っても実行できて上手く画像表示されている事が確認できたので、
スレッド間でtrackbarの値を渡すのだけが上手くいかなくて悩んでます

447デフォルトの名無しさん2018/01/10(水) 15:54:42.58
トラックバーの値変更イベントのイベントハンドラでフォームのフィールドにトラックバーの値を保持しておく
それをバックグラウンドワーカーで読み取る

448デフォルトの名無しさん (ガックシ 067f-Sycn)2018/01/10(水) 16:15:46.81ID:+iIpBJgq6
>>447
それって両スレッド共通の変数を作っておいてトラックバーが動いた時のイベントハンドラでその変数に値を保存していくって事ですよね?
それも試したんですが、よくわからないエラーが発生して動作が止まってしまいました

449デフォルトの名無しさん2018/01/10(水) 16:16:37.99
それか、Invokeでアクセスする



// コントロールが破棄されてないかチェック
if (trackbar.IsDisposed)
return;


var value = 0;

// Invokeが必要かチェック
if(trackbar.InvokeRequired) {
Invoke((MethodInvoker)(() => {
value = trackbar.Value;
}));
} else {
value = trackbar.Value;
}

450デフォルトの名無しさん2018/01/10(水) 16:19:33.71
>>448
じゃあ、値変更イベントハンドラ内でトラックバーの値をフィールドに設定するところと、バックグラウンドワーカーでそのフィールドから値を読み出すところを、lock{...}で囲む

451デフォルトの名無しさん (ブーイモ MM7f-jqvb)2018/01/10(水) 16:24:33.20ID:yZjeHBZDM
その処理は別スレッドでないと出来ないのか?
という身もフタもない突っ込み

452デフォルトの名無しさん2018/01/10(水) 16:33:02.39
lock (トラックバーの値を保持してる変数) { ... } のミスでした

453デフォルトの名無しさん (ガックシ 067f-Sycn)2018/01/10(水) 16:33:27.10ID:+iIpBJgq6
>>450
ちょっと用事ができたので今は試せませんが、両方試してみます

>>451
割と重い処理なので、同じスレッドのトラックバーのイベントハンドラで処理を行うと、トラックバーの動きがかくついてしまったので、分離したいんです

454デフォルトの名無しさん2018/01/10(水) 16:35:01.84
>>453
async/awaitでいいのでは?

455デフォルトの名無しさん (ガックシ 067f-Sycn)2018/01/10(水) 17:01:05.31ID:+iIpBJgq6
>>454
課題でバックグラウンドワーカー指定されてたので、
それ初めて聞いたんですが、同じような事が出来るんですか?

456デフォルトの名無しさん (ワッチョイ 9f06-hL1C)2018/01/10(水) 17:06:36.89ID:5BQfLz2R0
>>455
BackgroundWorkerは、標準機能で専用のeventargを使ってオブジェクトを一つ引き渡せたはずだが
マニュアルしっかり見たほうが良いよ

457デフォルトの名無しさん (ガックシ 067f-Sycn)2018/01/10(水) 17:17:37.84ID:+iIpBJgq6
>>456
それってバックグランドワーカーを開始する時に値を渡す事ですか?
WhileとReportProgressで画像表示していて、バックグランドワーカーは止まらないので開始時の値を引き渡すのだけでは、トラックバーの値変更に対応できなさそうですが、できるんですか?
的外れな事言ってたらすみません。
まだ学び始めたばかりでわからない事だらけなので

ちなみに画像生成に使うトラックバーは7本あります

458デフォルトの名無しさん2018/01/10(水) 17:18:24.71
>>455
async/awaitならイベントハンドラの中に1行で非同期処理書ける
課題なら仕方ない

459デフォルトの名無しさん (ワッチョイ 0f9a-+W2v)2018/01/10(水) 17:42:20.90ID:8CBJwk4h0
>>448
処理イベントを多重呼び出ししていない?
busyのときは呼ばないように
>>446
>whileとReportProgressでtrackbarの変更に合わせて
ReportProgressでは元のスレッドのコントロールにアクセスできるからこの意味がいまいちわからないが
とりあえず
・BackgroundWorker_DoWorkに渡す
https://dobon.net/vb/dotnet/programing/displayprogress.html#backgroundworker
呼び出す側
int value=trackbar.Value;
BackgroundWorker1.RunWorkerAsync(value);
Do_Work側
int value=(int)e.Argument;
>>453
>割と重い処理なので、同じスレッドのトラックバーのイベントハンドラで処理を行うと、トラックバーの動きがかくついて
かくつかない程度に仮処理用の縮小画像を作る
>>457
>トラックバーの値変更に対応できなさそうですが
リアルタイムに反映は理屈から言うと無理
処理量が少なければそう見えるようにも作れるから画像が大きければトラックバー動作中は縮小画像で

>>455
>>446と同一人物?

仕様の詳細が分からんので断定はできないけど、
断片的な情報から判断すると

(1) 無限ループでTrackbar.Valueをポーリングして

(2) 変化を検出したら画像生成を開始

(3) 完了したらBackgroundWorkder.ReportProgressを呼んで
UIスレッドで画像を表示

こういうこと?
もしこうなら、スレッドで無限ループ回すって発想がたぶん間違ってる。

諸事情でBackgroundWorkderを使う必要があるにしても
Trackbar.ValueCangedイベントでBackgroundWorker.RunWorkerAsyncを
呼んで都度画像生成処理を開始するようにした方がいいんじゃないの?

それならTrackbar.ValueはRunWorkerAsyncの引数で渡せる

461デフォルトの名無しさん (ワッチョイ 0f9a-+W2v)2018/01/10(水) 17:51:28.39ID:8CBJwk4h0
>>460
ブラウザ部分同じだから同一人物で間違いない
>>457
次からレス番でコテハン付けて
一応捕捉でRunWorkerAsyncの引数はobjectなので
https://msdn.microsoft.com/ja-jp/library/f00zz5b2(v=vs.110).aspx
受ける側でキャストしたらListでも配列でも使える

ただこの場合でも、ValueCangedはたぶんユーザーがつまみを動かかしている間は
逐次的にイベントが発生しちゃうと思うから、BackgroundWorker.RunWorkerAsyncを
コールするのは、例えばValueCangedが発生しなくなってから1秒後、みたいな工夫がたぶん必要になるのかな

知らんけど

463デフォルトの名無しさん2018/01/10(水) 18:00:54.81
>>459
起動時にRunTaskWorkerを呼び出す。

doWorkでは無限ループでトラックバーの値の変更を監視

こういうことだと思う。
知らんけど。

464デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)2018/01/11(木) 01:51:14.39ID:fK8uCW920
public void testA()
{
bool error=false;

error=true;
if (error == true) { return; }

textBox1.Text = "ok";
}

error=true;
if (error == true) { return; } をまとめてメソッドtestBにするにはどうすればいいでしょうか
testAの中でtestBを実行し、testBでエラーが出たらtestAもそこで処理を中止して
textBox1.Text = "ok";を実行しない
というプログラムを作りたいのですが

465デフォルトの名無しさん2018/01/11(木) 02:26:04.02
これじゃダメ?
―――――――――
...
var error = testB();
if(error) return;
...
―――――――――
public bool testB(){
var error=false;
error=true;
if(error) return true;
retrun false;
}
―――――――――

466デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)2018/01/11(木) 02:53:49.75ID:fK8uCW920
>>465
やはりtestBメソッドの後で判定するしかないですよね。
ありがとうございます。

467デフォルトの名無しさん (ワッチョイ 4a0f-QpsD)2018/01/11(木) 04:20:02.74ID:9ePH9NvT0
Janeでいう画像のようなフォームを作りたいのですが、
フォームにはどのようなコントロールを配置しているのでしょうか?
列名にはButton、一覧はListBoxのように見えます。

https://imgur.com/a/mOqw6

>>464
> testAの中でtestBを実行し、testBでエラーが出たらtestAもそこで処理を中止して
> textBox1.Text = "ok";を実行しない
例外で一気に抜ければいいだろ

469デフォルトの名無しさん2018/01/11(木) 09:55:11.66
>>467
ListBoxのViewプロパティをDetailsにしたやつと同じ
上のボタンはColumnsプロパティで編集できる

470デフォルトの名無しさん2018/01/11(木) 09:58:05.61
あと、多分FullRowSelectプロパティをオンにしないと行をクリックしたときに一列分しか色が付かない

471デフォルトの名無しさん2018/01/11(木) 11:50:13.87
ListBoxじゃなくてListViewだったわ

472デフォルトの名無しさん (ワッチョイ 4a0f-nl4B)2018/01/11(木) 18:47:50.43ID:9ePH9NvT0
>>469,>>470
ありがとうございます
1つのコントロールで実現できるのですね
作るときにFullRowSelectも意識してみます

473デフォルトの名無しさん (ワッチョイ 9ee7-p0TQ)2018/01/12(金) 02:16:04.35ID:gpUPMxg50
今ってC#なら何でもできる時代か?webページもゲームもWindowsアプリもandroidも

474デフォルトの名無しさん (ワッチョイ 969c-zueB)2018/01/12(金) 08:59:21.85ID:uVEH64eZ0
初めて目にしたものに万能感を感じてるだけ、刷り込みという

475デフォルトの名無しさん (ワッチョイ 59e3-oih1)2018/01/12(金) 09:11:32.29ID:2hN5vnhI0
でもここまで全部作れる時代ってないんじゃん?
全部c言語の時代以来だな

476デフォルトの名無しさん2018/01/12(金) 09:13:00.90
さすが大企業

477デフォルトの名無しさん (ブーイモ MMc9-XZ0y)2018/01/12(金) 09:23:53.14ID:4yLgM4ukM
アプリ開発言語としてはWebのフロントエンドを除けばほぼ何でもできるので
目下最も万能な言語であることには違いないが、道具を前提にして物事を考える癖がつくと頭悪くなるから一つに拘るのはお勧めしないな

478デフォルトの名無しさん2018/01/12(金) 09:27:14.08
>道具を前提にして物事を考える
解説頼む

479デフォルトの名無しさん (ワッチョイ 6d4b-Xh6c)2018/01/12(金) 09:28:54.75ID:4fjc3EU00
金のハンマーか
ハンターチャンス

480デフォルトの名無しさん (ワッチョイ 59e3-oih1)2018/01/12(金) 09:48:35.89ID:2hN5vnhI0
まあ、なんでもいいしね
msにはsilverlightに騙されたのでこの辺の信用は薄い

481デフォルトの名無しさん (ブーイモ MM0a-EosG)2018/01/12(金) 09:54:47.82ID:1+438Ej9M
>>477
WebのフロントエンドはhtmlとJavaScriptという道具を前提とするしか無いが。

482デフォルトの名無しさん (ブーイモ MM0a-EosG)2018/01/12(金) 09:58:40.77ID:1+438Ej9M
>>480
騙されたと言うかJavaScriptの進化が速くてJavaアプレットもオワコン

なんかWeb系の人多いね
Webとは一切関わらずに来たから
色々と世界の違いを感じるわ

484デフォルトの名無しさん (スッップ Sd0a-6CSh)2018/01/12(金) 12:34:17.17ID:OH7R1+qFd
でぇじょうぶだ。wasmがくる。

直接の原因はセキュリティ対策を名目にしたプラグイン排除の動きでしょ

486デフォルトの名無しさん (ワッチョイ 59e3-oih1)2018/01/12(金) 14:37:46.31ID:2hN5vnhI0
>>483
そっちはついで
サーバー側がメインに決まってんじゃん
片手間で意外と時間がかかるのがムカつく
画面なんかデザインと相談しろよ

487デフォルトの名無しさん (ワッチョイ 9ee7-p0TQ)2018/01/12(金) 14:42:53.15ID:VxcDYdZu0
職につくために限定的な開発だけじゃあ厳しいなってC#なら何でも作れるようにならないとなって思って

488デフォルトの名無しさん2018/01/12(金) 14:44:49.67
使う言語はおまえが決められないけどな

489デフォルトの名無しさん (ワッチョイ 59e3-oih1)2018/01/12(金) 14:44:55.45ID:2hN5vnhI0
>>487
逆引き辞典でも買っとけ
〜できる?って聞かれたときいいぞ

スタブってのがほんとに分からん…
どんな知識が必要でどんな風に使うのかイメージ出来ん
DAO?とかの概念が自分になくてSQLを扱う部分とロジックがごっちゃになってるとそもそもスタブでなんとかしようってレベルですらないのかな
なにか猿でも分かるような記事とかないですか…

491デフォルトの名無しさん (ブーイモ MM81-EosG)2018/01/12(金) 16:11:30.81ID:mLvyYLexM
>>490
スタブってテスト用のダミーの事?

>>490
スタブはテストのためのダミーだよ

完成まで一時的にいれておいてビルド通したり
テストで実際の環境に影響をおよぼさないために使う

テストしない
完成まで途中で実行しない
ならいらない

493デフォルトの名無しさん (ワッチョイ 59e3-oih1)2018/01/12(金) 18:39:16.58ID:2hN5vnhI0
酢豚

494デフォルトの名無しさん (ワッチョイ ea06-QpsD)2018/01/12(金) 19:18:31.62ID:Oe9MQ/U/0
裸の豚がいる、素豚

495デフォルトの名無しさん (ワッチョイ aa19-QpsD)2018/01/12(金) 19:54:46.80ID:Q+CtiLx/0
>>494
それは地雷踏んでるし素マ○だし。

496デフォルトの名無しさん (ワッチョイ 6a9a-4PyQ)2018/01/12(金) 20:48:40.23ID:sVH4h8AJ0
ここ雑談所とかロビーじゃないんで
リンクテンプレにあるんだからワッチョイの無い相談室でやればいいのに

497デフォルトの名無しさん (ワッチョイ ea06-QpsD)2018/01/12(金) 20:54:57.06ID:Oe9MQ/U/0

498デフォルトの名無しさん (ワッチョイ 4aa2-UJUP)2018/01/13(土) 01:59:49.10ID:zim/eiwV0
sqlserverからレコード取得する処理で、dataReaderを別関数に渡して、
そっちでdataReader.Iten("hogehoge")するのってありですか?

一部のカラム名だけが異なる類似レコードの取得処理をまとめたいなあと

499デフォルトの名無しさん (ワッチョイ 3d23-XZ0y)2018/01/13(土) 08:43:16.67ID:YXV8ZXe20
>>498
それ自体は特に問題はないけど、可能ならDapperとか使った方がいい

500デフォルトの名無しさん (ワッチョイ ea06-QpsD)2018/01/13(土) 08:44:56.00ID:GojsaP7Y0
>>498
その手の仕事なら、拡張メソッドで書くとスッキリ書けるよ

501デフォルトの名無しさん (ワッチョイ eab3-J7fK)2018/01/13(土) 10:33:11.79ID:8qhapkmN0
>>498
Itenがなにかはわからんけど、dataReader を渡すのはありでしょ

502デフォルトの名無しさん (ワッチョイ 11cc-6CSh)2018/01/13(土) 11:39:34.05ID:bohsitgJ0
Itemなんだろうなぁとは思ったよ

503デフォルトの名無しさん (ワッチョイ 66e8-QpsD)2018/01/13(土) 15:48:07.46ID:J9QLRP4o0
ItemItemって考えてるとあいてむってなんだっけ?ってなるよね

504デフォルトの名無しさん (ワッチョイ 11cc-6CSh)2018/01/13(土) 16:27:23.47ID:bohsitgJ0
普通省略するからな

505デフォルトの名無しさん (ワッチョイ a5c9-QpsD)2018/01/13(土) 17:00:38.69ID:jdkhpG2m0
データが大量の場合は予めカラム名から序数取得しておいて、序数指定にするんだっけか
今はDapperばかりだから忘れたわ

506デフォルトの名無しさん (ワッチョイ 5d75-JLCo)2018/01/13(土) 17:42:17.67ID:GYwe1Ej/0
ダッパーってなあに?

507デフォルトの名無しさん (ワッチョイ 7983-0PCX)2018/01/13(土) 17:43:12.24ID:LGXgKIg90
結局、DB扱わせたらCOBOL最強という結論か。

508デフォルトの名無しさん (ワッチョイ 969c-zueB)2018/01/13(土) 18:22:41.37ID:2EuaVelH0
一時期ORMが流行ったがメモリ食いすぎと重すぎて今じゃBI以外で使う機会がない
軽量wrapperを挟んでクエリ直書きの負担を軽減するというのが最近のスタイル
有名なのはDapper、Massive、PetaPocoとか

509 ◆QZaw55cn4c (ワッチョイ 4a60-cexj)2018/01/13(土) 19:33:09.67ID:9/EYlaQy0
>>508
Micro-ORM ですか、Java にはあまりなさそうですね
BI ってなんの略ですか?

510デフォルトの名無しさん (ワッチョイ 4aa2-UJUP)2018/01/13(土) 22:23:31.56ID:zim/eiwV0
498だす
いろいろありがとう
Dapperって知らなかったので調べてみます

511デフォルトの名無しさん (ワッチョイ 5e20-y5e1)2018/01/14(日) 11:58:36.30ID:6wMaD5Pe0
質問させてください
まず、やりたいことは以下です
@c#からネイティブライブラリの関数を呼び出す
A引数としてマネージ側で実装した関数を渡し、ライブラリ側でその関数を呼び返す

Aでマネージ関数と一緒にマネージドオブジェクトを渡したいのですが、そのオブジェクトをGC対象から除外する方法が分かりません
GCHandle.Alloc では blittable なオブジェクトでないとダメだと怒られます
List<int> とかを渡したいのですが…… どうしたらいいでしょうか?

512デフォルトの名無しさん (ワッチョイ 3d23-XZ0y)2018/01/14(日) 12:44:23.20ID:DNkTPWoH0
>>511
普通にデリゲートをマーシャリングして渡す
呼び出す先が同期的な関数ならGCは考慮不要
非同期的にコールバックしてくるならデリゲートをフィールドに入れておいてGCを防ぐ
デリゲートのマーシャリングは非常に優秀で、メソッド内から外のローカル変数を参照してたりインスタンスフィールドを参照してたりしても問題ない
だからList<int>とかをわざわざ渡す必要はない

513512 (ワッチョイ 3d23-XZ0y)2018/01/14(日) 12:45:29.88ID:DNkTPWoH0
補足
メソッドから参照されてるオブジェクトはデリゲートが生きてる限りはGCされないので、
GC対策としてはデリゲートだけフィールドで保持しとけば十分

514511 (ワッチョイ 5e20-y5e1)2018/01/14(日) 13:56:18.92ID:6wMaD5Pe0
>>512
ありがとうございます!
解決しました。変数をキャプチャしてるラムダ式でもOKなんですね
これって実行時にコードを生成してるんでしょうか?

515デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)2018/01/15(月) 08:04:36.45ID:wzT+kwGj0
visualstudio2015でifの条件式の部分が
if(a>1&&
b>1&&
c>1&&
d>1)
となっているのを
if(a>1&&
b>1&&
c>1&&
d>1)
ときれいに揃える方法はないでしょうか?
ctrl+k,ctrl+dではこの部分だけきれいにならず困っています

516デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)2018/01/15(月) 08:05:35.73ID:wzT+kwGj0
if(a>1&&
b>1&&
c>1&&
d>1)
となっているのを
if(a>1&&
__b>1&&
__c>1&&
__d>1)

_はスペースです

517デフォルトの名無しさん (ワッチョイ 3d23-XZ0y)2018/01/15(月) 08:06:30.11ID:rRRRUjz40
>>514
ない
そんな非生産的なコーディング規約は今すぐ撤廃しなさい

518デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)2018/01/15(月) 08:34:59.05ID:wzT+kwGj0
条件式がたくさんある場合はどうすれば見やすく書けるのでしょう…
横に伸びると見にくくて

519デフォルトの名無しさん (ワッチョイ 6681-/vYA)2018/01/15(月) 08:44:15.19ID:6fJ2ahWY0
自分にあったフォーマッタを
自分で開発すればいいんじゃないの?
出来合いで我慢できないならそれしかないでしょ
幸いにもあなたはプログラマーだ
頑張れ

520デフォルトの名無しさん (ワッチョイ aad4-1Ifv)2018/01/15(月) 09:00:59.11ID:vPE1QZCU0
if(a>1&&
b>1&&
c>1&&
d>1)
となっているのを
if(a>1&&
__b>1&&
__c>1&&
__d>1)

_はスペースです

521デフォルトの名無しさん (ワッチョイ aad4-1Ifv)2018/01/15(月) 09:02:06.54ID:vPE1QZCU0
if(a>1&&
b>1&&
c>1&&
d>1)
となっているのを
if(a>1&&
__b>1&&
__c>1&&
__d>1)

_はスペースです

522デフォルトの名無しさん (ワッチョイ 59e3-oih1)2018/01/15(月) 09:28:26.41ID:dZYU88oU0
>>515
その前に書くなら
if(a>1
&&b>1
&&c>1
&&d>1)
って揃えるべきじゃね?
そういう視点で見るとどうよ?

523デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)2018/01/15(月) 09:34:40.52ID:wzT+kwGj0
522

それでもいいんですが
____if(a>1
&&b>1
&&c>1
____&&d>1)
貼り付け繰り返してるうちにこうなっちゃったりしてるんですよね

524デフォルトの名無しさん (スッップ Sd0a-6CSh)2018/01/15(月) 09:37:21.51ID:MBkuLX1yd
俺だったらIsXXXみたいなboolを返すメソッドに分けちゃう。

525デフォルトの名無しさん (ワッチョイ eaa4-FrwJ)2018/01/15(月) 10:03:58.56ID:E8Ly8wa60
おれは諦めた。もう好きにフォーマットしてくれたまえ

526デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)2018/01/15(月) 14:27:32.00ID:wzT+kwGj0
すっぱい葡萄
手に入れたくてたまらないのに、人・物・地位・階級など、努力しても手が届かない対象がある場合、その対象を「価値がない・低級で自分にふさわしくない」ものとみてあきらめ、心の平安を得る。
フロイトの心理学では防衛機制・合理化の例とする。
また、英語圏で「Sour Grapes」は「負け惜しみ」を意味する熟語である。
wikiより

527デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)2018/01/15(月) 14:28:13.93ID:wzT+kwGj0
誤爆

528デフォルトの名無しさん (ガックシ 063e-JLCo)2018/01/15(月) 14:30:17.74ID:H/ZiF0K36
わざとらし

529デフォルトの名無しさん (スッップ Sd0a-6CSh)2018/01/15(月) 14:55:45.45ID:AxPygC8od
ふふってなった

530デフォルトの名無しさん (ワッチョイ eab3-J7fK)2018/01/15(月) 23:31:54.06ID:D5A33j6W0
>>515
if(
 a>1&&
 b>1&&
 c>1&&
 d>1
)
じゃダメ?

531デフォルトの名無しさん (ワッチョイ 59e3-oih1)2018/01/15(月) 23:38:16.13ID:dZYU88oU0
>>530
俺的には条件が長くなったときに
&&が後ろに隠れるのは納得行かないぜ
横が揃うなんて些細な問題だ

532デフォルトの名無しさん (ワッチョイ eab3-J7fK)2018/01/15(月) 23:46:30.01ID:D5A33j6W0
>>531
個人的には
if(
 1 < a
 && 1 < b
 && 1 < c
 && 1 < d
)
って書くけど>>515に合わせてあるだけ

もう書いてる人いるけど、こういうのは結局自分の(ほとんどの場合はくだらない)
こだわりの方を修正する方が早い。

っていうか頭を揃えたら見やすいって感覚はちょっと理解不能
間違いなくただの思い込みだと断言できる

もうbool返すメソッド作れよ

bool AllUnderOne(a,b,c,d)

んなことしなくてもifに長い式書くのが嫌なら適当な使い捨ての変数を導入するだけでしょ

536デフォルトの名無しさん (ワッチョイ ea06-QpsD)2018/01/16(火) 13:31:13.30ID:i7+6byhr0
でかくて長い画面を買うってのが一番の解決法かも

結局staticって何が有用でどういう時に使うものなの?
解説読んでもこれが何に活かされるのか分からない…

538デフォルトの名無しさん2018/01/16(火) 15:30:00.66
おまえMathクラス使わんの?string.Joinも?

539デフォルトの名無しさん (スップ Sdea-ic3a)2018/01/16(火) 15:37:01.06ID:a4mp8S6Kd
>>523
Code alignmentって拡張機能があるから使ってみれば?

540デフォルトの名無しさん (スッップ Sd0a-6CSh)2018/01/16(火) 15:56:31.20ID:MHWq/GyWd
ちなみにstaticな変数の話?
staticなメソッドの話?

インスタンスおじさん誕生の瞬間であった

542デフォルトの名無しさん (ブーイモ MM0a-EosG)2018/01/16(火) 16:15:22.10ID:CjJlQTmDM
それはスタティックおじさん誕生じゃないのかと突っ込む

ここだかどうだかわすれたけど
staticの質問をしてた人が過去にいた

そしてなぜかCの話になったりしていちゃもんつけるだけつけて帰って行った
同じ人かもしれない

544デフォルトの名無しさん (ワッチョイ 2ab3-1I1E)2018/01/16(火) 22:11:32.35ID:augwvgTX0
string型の文字列を配列で持ちたいときはlistboxに
文字列をコピーしていく方法よりカッコいい方法ある?

545デフォルトの名無しさん (ワッチョイ 7983-0PCX)2018/01/16(火) 22:21:10.24ID:d5RFkyAg0
それは難問だな。

546デフォルトの名無しさん (ワッチョイ 11cc-6CSh)2018/01/16(火) 22:21:16.14ID:6G3H5uZu0
stringの文字列を配列で持ちたいというのはstring[]ってこと?

listboxに文字列をコピーしていくとは?もうちょっと詳しく。

カッコいい方法というのはC#のコードの書き方という意味で?

547愛知人2018/01/17(水) 00:53:02.20ID:BsDn1sQu
>>544
string[]型を使う

548デフォルトの名無しさん (オッペケ Srbd-PxW6)2018/01/17(水) 12:17:12.42ID:bthN5Jmqr
カッコよさが分からない人たちばかりだな

SQLを外部ファイルに出したいのですが、そういうライブラリやフレームワークってあるでしょうか

それとも皆さんオレオレフレームワークを作っているのでしょうか

550デフォルトの名無しさん (ブーイモ MMc9-EosG)2018/01/17(水) 12:22:20.17ID:kFuDYWJQM
エスパーはよ

551デフォルトの名無しさん (オッペケ Srbd-PxW6)2018/01/17(水) 12:26:19.54ID:bthN5Jmqr
オレオレフレームワークもみんなが使えばワレワレフレームワークになる
そーゆーこと

552デフォルトの名無しさん (ブーイモ MMc9-EosG)2018/01/17(水) 12:30:08.90ID:kFuDYWJQM
みんなで使える優れたフレームワークはオレオレフレームワークと呼ばれない

553デフォルトの名無しさん (ワッチョイ ea06-QpsD)2018/01/17(水) 12:33:43.83ID:1hVmVOYN0
>>551
phpでいいじゃん。何が不満?

554デフォルトの名無しさん (スッップ Sd0a-6CSh)2018/01/17(水) 12:43:27.55ID:0DWA9qEvd
優しくレスしても返答返してくれないからつれぇわ

>>549
何について言ってるのか理解しづらいけど
SQLを外に出すのは悪いことなのでそういうライブラリやフレームワークはない

SQLってただの文字列でしかなくてコンパイル時に間違いがわからない
それを埋め込んでテストを繰り返すことでバグの可能性を限りなく低くしてる

でもORMなどを使っても必ずバグを洗い出せるわけじゃない

>>549
ストアドでも

よく考えると形だけ外出ししてもデータ取得後のソースが
SQLによって変わるからあんまり意味ないっつか見にくくなるだけだな

558549 (バッミングク MMb1-TP79)2018/01/17(水) 17:56:42.19ID:hVz/jIKcM
質問が下手ですみません

javaのibatisのようなxmlでクエリを外部ファイルに置くようなフレームワークはC♯にあるのでしょうかという質問でした

自分は文字列でコード上に直接クエリを書いており、悪手をやっているのではと不安になり質問しました

ご教示よろしくお願いします

559デフォルトの名無しさん (スップ Sdea-xBNd)2018/01/17(水) 18:11:05.45ID:XareNapid
>>558
iBatisって相当昔だと思うけど…C#でもiBatis(MyBatis)は使える
絶対やめた方がいいけど

560デフォルトの名無しさん (スップ Sdea-xBNd)2018/01/17(水) 18:11:53.34ID:XareNapid
普通にDapper使っとけ

561デフォルトの名無しさん (ブーイモ MMc9-XZ0y)2018/01/17(水) 18:20:48.34ID:Hv4w1dTIM
今時は全部ソース内に書くのが普通

562デフォルトの名無しさん (スッップ Sd0a-6CSh)2018/01/17(水) 18:25:50.70ID:0DWA9qEvd
個人的にクエリは定数で宣言して、クラスにまとめる感じで書く。

リフレクション使ってクエリ文字列を引っ張れば管理資料もチョチョイのチョイやで。

563549 (ワッチョイ 5e76-TP79)2018/01/17(水) 18:33:33.76ID:2pD1HrQI0
むしろクエリを外部ファイルに書き出すのは古いのですね
参考になります

564デフォルトの名無しさん (ワッチョイ 25b3-hYQh)2018/01/18(木) 15:36:13.66ID:UDaQCIW60
すみません。この場を借りて質問させていただきます。
C#初心者なのですが、wpfで動画再生アプリを作っています。コピペメインです。

MediaElementを使って動画のコントロールはほぼ実装できたのですが、
動画のフルスクリーンからの復帰の仕方が良くわかりません。
(元の画面にうまく戻せません)

フルスクリーンにするときは、こちらを使っています。
layoutRoot.Children.Remove(myMediaElement);
this.Content = myMediaElement;
this.WindowStyle = WindowStyle.None;
this.WindowState = WindowState.Maximized;

戻すときは以下のようにしてみましたが、
this.Content = layoutRoot;
layoutRoot.Children.Add(myMediaElement);
this.WindowStyle = WindowStyle.SingleBorderWindow;
this.WindowState = WindowState.Normal;
System.ArgumentException: '新しい親 Visual に関連付ける前に、指定された子と現在の親 Visual との接続を切断する必要があります。'
と怒られますw 親子の縁はどのように切ったら良いのでしょうか?
よろしくお願いいたします。

>>564
上と下を見比べて対応してないものをまず見ろ

それにしてもひどいやり方だ

566デフォルトの名無しさん (ブーイモ MMe9-f6Uj)2018/01/18(木) 17:04:33.90ID:vq0hr/63M
まずはフルスクラッチだな

567デフォルトの名無しさん (ワッチョイ 25b3-hYQh)2018/01/18(木) 19:23:42.55ID:UDaQCIW60
ぜんぜんわかりまへん。。

568デフォルトの名無しさん (ワッチョイ 239d-pQa0)2018/01/18(木) 19:44:28.00ID:64hUXuXa0
private void savedata()
{
string name = "aaa.txt";
system.IO.StreamWriter sw;
try
{
sw = new IO.StreamWriter(name, false, System.Text.Encoding.GetEncoding("shift_jis"));
sw.WriteLine("aaaa");
}
catch (Exception ex)
{
MsgBox("Savedata error:" + ex.Message);
}
finally
{
sw.Close();
}
}
Newでエラーした場合にはSw.Closeすると落ちるが、何とかならないものだろうか?

569デフォルトの名無しさん (ワッチョイ 4dcc-GP+B)2018/01/18(木) 19:49:35.26ID:pMlUf2sf0
if(sw != null) sw.Close();
じゃダメなのかしらん?

570愛知人2018/01/18(木) 19:54:23.83ID:9519fNi8
知らんけどusingステートメントでよくね

571デフォルトの名無しさん (ワッチョイ 0b9a-1pyd)2018/01/18(木) 19:54:45.69ID:tGyPdxm00
>>569
Dispose()とかでもそうするのが基本だと思うが
>>568
Fileが無い場合やサイズが0とかの対応全く考えてないのも問題だと思う

572デフォルトの名無しさん (ワッチョイ 239d-pQa0)2018/01/18(木) 20:15:34.43ID:64hUXuXa0
あっそうか Nullで検出できたのか。ありがと。Useingってのもあるんだね。

開発モードではエラーしないのに、Setupファイルでインストールすると、書き込み禁止がかかっているような
エラーになるんだがなにが原因だろ。
System.UnauthorizedAccessException: パス 'C:\Program Files (x86)\test14\あああああ.ini' へのアクセスが拒否されました。

573デフォルトの名無しさん (ワッチョイ 0b9a-1pyd)2018/01/18(木) 20:16:33.01ID:tGyPdxm00
>>572
管理者権限は?

574デフォルトの名無しさん (ワッチョイ 5d17-x16F)2018/01/18(木) 20:18:58.56ID:k+CX8kgw0
>>572
WindowsフォルダやProgramFilesフォルダに書き込むには管理者権限が必要

575デフォルトの名無しさん (ワッチョイ 25b3-GP+B)2018/01/18(木) 20:29:36.57ID:YPPczFY+0
フォームのデザイナが以下のエラーを吐くのですがどうすればいいですか。

"***.dll"を読み込めません:指定されたモジュールが見つかりません。 (HRESULT からの例外:0x8007007E)

プロジェクトは以下の4つです。
MainForm(C#)
MainView(C#) (MainFormの中でNewされる。DLLsを利用する。)
DLLs(C#) (DLLImportする。)
Drawer(C++) (DLLExportする。dllファイルはビルド後に実行ファイルがある場所にコピーされる。)

コールスタックでは、MainViewのDLLsを使用しているところでエラーがでており、
それをコメントアウトすると、デザイナが表示されます。

576デフォルトの名無しさん (ワッチョイ 239d-pQa0)2018/01/18(木) 20:50:42.63ID:64hUXuXa0
>WindowsフォルダやProgramFilesフォルダに書き込むには管理者権限が必要

ありがとう。
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
をいれたら動き出した。しかし立ち上げ時に毎回「この不明なアプリが実行することを許可しますか?」って
Windowsの確認画面がでるんだが、なんとかならないのでしょうか?

>>576
ユーザーコードで対処するのは無理でしょう。
そのためのUACなんだし。

リスク覚悟でUACを無効にするしか
Vista出たのも10年前だし、UACが何だか知らない人も多くなってるのかな

578デフォルトの名無しさん (ワッチョイ c580-oNRk)2018/01/18(木) 22:00:15.46ID:Zc8v9cFo0
Program filesにインストールするようなアプリで今時.iniとかちょっと…

579デフォルトの名無しさん (ワッチョイ 5b7f-XKUo)2018/01/18(木) 22:25:20.18ID:hlxKOq/D0
>>576
コードサイニング証明書取得して、プログラムに署名。

580デフォルトの名無しさん (ワッチョイ 25b3-GP+B)2018/01/18(木) 22:50:24.38ID:YPPczFY+0
>>575
質問取り下げます

581デフォルトの名無しさん (ワッチョイ 239d-pQa0)2018/01/18(木) 23:30:22.02ID:64hUXuXa0
管理者権限でいつも立ち上げるようにすると確かにアクセスできるようになった。
しかしインストール先 パス を'C:\Program Files (x86)、これをやめれば管理者権限で立ち上げる必要はないのでは?

582デフォルトの名無しさん (ワッチョイ 239d-pQa0)2018/01/18(木) 23:33:43.60ID:64hUXuXa0
>コードサイニング証明書取得して、プログラムに署名。

最高だ。これはいい。

とおもったら金がかかるのか? 残念。

583デフォルトの名無しさん (ワッチョイ 2306-GP+B)2018/01/18(木) 23:58:27.78ID:x+1bimBw0
>>582
普通はアプリケーションフォルダにデータを置きます
てか、設定ファイルは.iniを使わなくなって10年以上経ちます
[C# 設定]で、普通の設定ファイルの使い方調べた方がいい

584デフォルトの名無しさん (ワッチョイ 2306-GP+B)2018/01/19(金) 00:03:38.34ID:b8VvEepP0
訂正アプリケーションデータフォルダ(AppDataってやつね)

最近流行らないと思うけど、バイナリと同じ場所に設定ファイルを置くのは
バイナリ自体をUSBメモリに入れて持ち歩くような特殊な用途ぐらいだよね

iniファイルでも悪くないと個人的には思うけど、せっかく便利なシリアライザがいろいろあるのに
わざわざ機能的に劣るiniファイルを使う意味はないわなあ

読み書きするコードも自分で書かなきゃならんし

586デフォルトの名無しさん (ワッチョイ 239d-pQa0)2018/01/19(金) 00:21:35.85ID:reZAGsN60
AppDataってVsのSetupプロジェクトでは作ってくれないですね。Apllicationフォルダーに設定用のデータも入れています。

「iniをつかわない」ってのがあまり意味がわかりませんがいま使っているのは単なるテキストファイルです。
(*.iniという名前にしていますが、)StreemWriterで書いています。XMLに落とすのが普通なのでしょうか?
 しかし単に改行だけのファイルで十分なのでXMLにはしていません。
XMLは設定ファイルとしてはわかり難いですし無駄が多いように思います。
それにエディターで気楽に追加ができないです。

587デフォルトの名無しさん (ワッチョイ 239d-pQa0)2018/01/19(金) 00:26:38.77ID:reZAGsN60
>niファイルでも悪くないと個人的には思うけど、せっかく便利なシリアライザがいろいろあるのに
>わざわざ機能的に劣るiniファイルを使う意味はないわなあ

慣れなんですかね。どうも直観的にわかり難いように思います。だからJsonとかを使う人も多いんではないですか?

588愛知人2018/01/19(金) 00:30:36.53ID:5Myz+qXq
VisualStudioの機能だが

589デフォルトの名無しさん (ワッチョイ 239d-pQa0)2018/01/19(金) 00:32:41.68ID:reZAGsN60
”設定”, 20,
とかをStreemReaderで読みこむと何で ””設定””になるんですかね。ストリングにするためにわざわざ「”」をNULLにReplaceしています。
なんかいい方法はないですかね。

590デフォルトの名無しさん (ワッチョイ fde3-nVvH)2018/01/19(金) 00:38:29.54ID:d7UJaemd0
>>586
俺はええと思うな
XMLは編集するツールがない
プログラマでない人間がぶっ壊したら
自分で直すのは至難の技だ

591デフォルトの名無しさん (ワッチョイ 239d-pQa0)2018/01/19(金) 00:45:09.29ID:reZAGsN60
>VisualStudioの機能だが

・AppDataフォルダ:このフォルダは「C:\Users\ユーザー名\AppData」にあります。ほとんどのプログラムの設定ファイル
はここに置かれています(サブフォルダ「Roaming」の中)。プログラム名か開発企業名のフォルダの中に、設定ファイルや
関連データが保存されていますので、フォルダごとバックアップしておきましょう。

こういうもののようですね。だからSetupプロジェクトにはここに入れる設定データのフォルダーがあってしかるべきですがない?みたいですね。

592デフォルトの名無しさん (ワッチョイ 239d-pQa0)2018/01/19(金) 00:46:26.55ID:reZAGsN60
すいません。ありました。w

593愛知人2018/01/19(金) 00:51:07.58ID:5Myz+qXq

バイナリと同じフォルダにiniファイルだと…

アプリケーション1つにつき設定が一個しかないのでユーザーが複数いると困る
たとえば年賀状ソフトで差出人が全てのユーザーで一つしか設定できない

595デフォルトの名無しさん (ワッチョイ 5523-4b13)2018/01/19(金) 02:08:01.69ID:IgZPOGcu0
今時複数ユーザーなんか考慮しなくていいだろ
健全なファミリーがお前の作ったアプリを使うとでも?

596デフォルトの名無しさん (ワッチョイ 25b3-Smji)2018/01/19(金) 02:36:53.35ID:fKBFwOmr0
j時代の産物だよなあ >1PC複数ユーザ

597デフォルトの名無しさん (ワッチョイ 3deb-v7nw)2018/01/19(金) 05:47:10.29ID:FgdJ6DNZ0
すまんが、列挙型って関数の引数の型に指定することはできないの?
enum A {B, C ,D};
void E(A a){}//ここでエラー
これを書く事ができれば、エディタのアシストが効きまくってミスが減る気がするんだけど・・・・・

598デフォルトの名無しさん (ワッチョイ 23d2-aN4H)2018/01/19(金) 06:28:55.06ID:0J18wCJz0
できるはず
エラーメッセージはどのようなものですか?

599デフォルトの名無しさん (ワッチョイ 5d17-x16F)2018/01/19(金) 09:34:28.81ID:NgQA6vsH0
同名enumが複数あってエラーとなっているに一票

関数内に書いててpublicメソッドにしてるんだろうな

クラス内に書いててpublicメソッドの引数にしてるの間違い

それかenumをpublicにしてないか

602デフォルトの名無しさん (ワッチョイ 03eb-x16F)2018/01/19(金) 15:16:19.49ID:6h+BHP540
Windows Form のコントロールたちって、ここ10年くらい全くもって変わり映えしてない気がするんだけど
もう改善する気がないのかねぇ

グレープシティ壊滅させるまでやらずとも
テキストボックスの縦位置とか枠線スタイルとか複数列コンボとか、そのくらい対応してくれてもいいと思うんだけど

603デフォルトの名無しさん (ワッチョイ 5b7f-XKUo)2018/01/19(金) 21:40:19.48ID:o57JVoz30
>>602
UWPに注力してる以上まずやらんだろ。

XPに対応したVS2005の時代から変わってないのに何をいまさら感w

605デフォルトの名無しさん (ワッチョイ 5d17-x16F)2018/01/19(金) 22:00:59.10ID:NgQA6vsH0
>>603
Windows 10 Mobile が事実上終了したんだからUWPに注力する必要ないよね

606デフォルトの名無しさん (ワッチョイ c580-oNRk)2018/01/19(金) 22:02:05.49ID:4CF5m12I0
Chartがその後で増えたよ
いやまあBCLに入っていなかっただけで前からあった奴だけど

607デフォルトの名無しさん (ワッチョイ 5b7f-XKUo)2018/01/19(金) 22:27:33.99ID:o57JVoz30
>>605
GoogleやAppleのまねしたいみたいだから、あがき続けるんじゃないか。

608デフォルトの名無しさん (ワッチョイ 4d8d-px9Y)2018/01/19(金) 23:30:36.57ID:199CJjI/0
WinFormsって長いこと触ってないが
今でも線引くのにLabel使うとかアホなことしてるの?

609愛知人2018/01/19(金) 23:45:07.67ID:5Myz+qXq
線なんか引くか?
無い物は使わなくてよくね?

底辺の人は底辺の環境で不思議なことをしてる


普通の人は普通の環境で普通なことをしてる

>>608-609
ラベルでヘアライン引くのはよくあるしアホでも何でもない

612デフォルトの名無しさん (ワッチョイ 0b81-pCZf)2018/01/20(土) 00:20:13.00ID:1eaJngIj0
MSがUWPの宣伝しているのを見る度に
ユニバーサルプラットフォームっていうけど
お宅の会社ってPC以外のプラットフォーム持ってましたっけ?
って煽りたくなる

実態はともかく構想的にはMS以外ノプラットフォームも対象なんで
その批判は当たらないかと

614デフォルトの名無しさん (ワッチョイ 0306-GP+B)2018/01/20(土) 00:26:56.64ID:j23dmrcl0
とは言え、ギョーミーなアプリ書く上で、マストなものは粗方揃ったわけだし
クライアントがWindows10で揃えられるなら選択肢として悪くない

615デフォルトの名無しさん (ワッチョイ 5523-4b13)2018/01/20(土) 01:06:06.62ID:5JusgAfv0
とはいえUWPで作れるアプリならWebで十分なんだよね
タッチパネルでの利用を想定しないのであれば、現実的にはあえて選ぶメリットはほとんど無い

616デフォルトの名無しさん (ワッチョイ 630f-GP+B)2018/01/21(日) 06:37:48.04ID:eh2o3Efy0
解像度2560×1440のモニタを使っているのですが、Formアプリの解像度が合いません。
原因はサイズを125%に拡大していることで、通常の倍率に戻すとぼやけません。
FormのAutoScaleModeをDpiに設定してみましたが改善されませんでした。
対策をご存知の方がいましたら教えてください。

617デフォルトの名無しさん (ワッチョイ bdd3-GP+B)2018/01/21(日) 08:46:46.21ID:0JbPJogq0
VSの吐くWinformsのテンプレだと自分でdpiAware仕込まなあかんのじゃなかったっけ

618デフォルトの名無しさん (ワッチョイ 630f-GP+B)2018/01/21(日) 09:07:41.53ID:eh2o3Efy0
>>617
app.manifestを設定したらモニタの解像度に対応できました。
ありがとうございます!!

619デフォルトの名無しさん (ワッチョイ 03eb-x16F)2018/01/21(日) 09:16:30.01ID:dyzIneF20
>>616
exeを右クリしてプロパティの中の互換設定を弄ると直る

620デフォルトの名無しさん (ワッチョイ 630f-GP+B)2018/01/21(日) 09:41:48.00ID:eh2o3Efy0
>>619
なるほど、互換の設定でも対応できるのですね。
勉強になります。

621愛知人2018/01/21(日) 12:27:01.84ID:w5iluM1L
つまり他のソフトもボヤけてるんだな。
XPExplorerインストールすればいいのに。

622デフォルトの名無しさん (ワッチョイ 630f-Qwpo)2018/01/21(日) 19:16:00.62ID:eh2o3Efy0
>>621
さっそくインストールしました
ありがとうございます!

623デフォルトの名無しさん (ワッチョイ 630f-Qwpo)2018/01/21(日) 19:17:14.71ID:eh2o3Efy0
早速インストールしたら好調でした
ありがとうございます!

624デフォルトの名無しさん (ワッチョイ 630f-Qwpo)2018/01/21(日) 19:18:01.63ID:eh2o3Efy0
>>621
早速インストールしたら好調でした
ありがとうございます!

625デフォルトの名無しさん (ワッチョイ a3d4-4jNr)2018/01/22(月) 01:46:46.64ID:B9qWH8zv0
>>621
早速インストールしたら好調でした
ありがとうございます!

626デフォルトの名無しさん (ワッチョイ a3d4-4jNr)2018/01/22(月) 01:47:44.83ID:B9qWH8zv0
>>621
早速インストールしたら好調でした
ありがとうございます!

627デフォルトの名無しさん (ワッチョイ a3d4-4jNr)2018/01/22(月) 01:48:45.74ID:B9qWH8zv0
>>621
早速インストールしたら好調でした
ありがとうございます!

628愛知人2018/01/22(月) 01:49:30.11ID:f1RuTEDX
うっせーよカス

629デフォルトの名無しさん (ワッチョイ a3d4-4jNr)2018/01/22(月) 01:50:19.37ID:B9qWH8zv0
>>621
早速インストールしたら好調でした
ありがとうございます!

630デフォルトの名無しさん (ワッチョイ a3d4-4jNr)2018/01/22(月) 01:51:06.43ID:B9qWH8zv0
>>621
早速インストールしたら好調でした
ありがとうございます!

631デフォルトの名無しさん (ワッチョイ a3d4-4jNr)2018/01/22(月) 01:52:13.61ID:B9qWH8zv0
>>621
早速インストールしたら好調でした
ありがとうございます!

632デフォルトの名無しさん (ワッチョイ fde3-nVvH)2018/01/22(月) 07:20:56.54ID:2aQrNvno0
普通にNGID

633デフォルトの名無しさん (ワッチョイ 5bd6-pQa0)2018/01/22(月) 15:17:28.34ID:rsQqa0Zv0
public static SqlConnection connect = new SqlConnection("接続文字列");
public static SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM Table", connect);
public static DataTable dt = new DataTable();

private void Form_Load(object sender, EventArgs e)
{
sda.Fill(dt);
DataGridView1.DataSource = dt;
}

private void button_publish_Click(object sender, EventArgs e)
{
connect.Open();
〜Tablesへの改変処理
connect.Close();

dt = new DataTable();
sda.Fill(dt);//★
}

Table内容をSqlDataAdapterを使い、データテーブルに入れ込んで、DataGridViewに表示させた後、

Table内容を変更後、再びDataGridViewに表示させるとき、例外がスローされます。

★の部分で、「System.InvalidOperationException: 'ConnectionString プロパティは初期化されていません。'」が出ます。

最新のデータを同じDataGridViewで見るには、どのようにすればよいのでしょうか?

634デフォルトの名無しさん (ワッチョイ 5d17-x16F)2018/01/22(月) 15:55:14.43ID:O29q6QQC0
>connect.Close();
接続切ったらそりゃエラーになるでしょ

635633 (ワッチョイ 5bd6-pQa0)2018/01/22(月) 16:09:10.00ID:rsQqa0Zv0
connect.Open();//★
sda.Fill(dt);
connect.Close();
としたら、★マークのところで、またエラーが出ました。

636デフォルトの名無しさん (ワッチョイ 0306-GP+B)2018/01/22(月) 16:33:20.49ID:R+95xE7/0
まずコネクション以下全てのオブジェクトはクローズしたら再度newしないと使えません
よってスタティックじゃなくて普通のインスタンスとして管理
使う度にnewで新たに作ります

637633 (ワッチョイ 5bd6-pQa0)2018/01/22(月) 16:46:28.18ID:rsQqa0Zv0
そうだったんですね、使いまわせると思ってました・・・

638633 (ワッチョイ 5bd6-pQa0)2018/01/22(月) 17:15:57.30ID:rsQqa0Zv0
インスタンス内で、宣言したら、うまくいくようになりました。
ありがとうございます。

639デフォルトの名無しさん (ワッチョイ 239d-pQa0)2018/01/23(火) 08:14:55.18ID:y6LiRRs70
デバッグで完全に動作するのにインストールして動かすと、途中で落ちる。多分データベースのアクセスではないかなと
思っているんだが、インストールした実行プログラムのデバッグをやろうとしているんだがどうやるのか不明。

VS2013の「デバッグ」から「インストールされているアプリケーションパッケージのデバッグ」に入ってもリストに何もでてこない。
なにか設定があるのだろうと思うが、どこを設定すればいい?
アタッチするまでが分からない。

640デフォルトの名無しさん (スッップ Sd43-pJai)2018/01/23(火) 08:58:36.28ID:Un6nXOVAd
>>639
どうやってインストールしたん?
結局Console.WriteLine()をあちこちに埋め込むのが早かったりする

641デフォルトの名無しさん (ワッチョイ 5b7f-XKUo)2018/01/23(火) 09:29:37.11ID:2MiHwZpp0
>>640
ConsoleよりTraceの方が使い勝手良いぞ。
Trace.WriteLine()とかの情報をDebugViewで時間情報付きで見れる。
フィルターやハイライトとかもかけられる。

642デフォルトの名無しさん (ワッチョイ fde3-nVvH)2018/01/23(火) 09:36:15.82ID:XJEe+tMu0
CallerMemberNameAttribute class

643デフォルトの名無しさん (ワッチョイ fde3-nVvH)2018/01/23(火) 09:37:24.58ID:XJEe+tMu0
っていうか
リリース版でデバッグしたいって聞いてるんでしょ?

644デフォルトの名無しさん (ワッチョイ 5b7f-XKUo)2018/01/23(火) 09:50:04.23ID:2MiHwZpp0
Trace出力でのデバッグはリリース版でやることが多いぞ。
ビュワー立ち上げなければ、ユーザーからは見えないし。

645デフォルトの名無しさん (ワッチョイ bdb8-1VRr)2018/01/23(火) 09:59:10.73ID:iDuW9Lrl0
mono入れたLinuxでmscでコンパイルした実行ファイルを
WindowsにもってこようとするとMicrosoft Defenderでトロイ扱いされてブロックされます
同じコードをWindowsでcscでコンパイルした場合は問題ありません
WindowsでコンパイルしたものはmonoでLinuxでもちゃんと実行できます
なんでmscでコンパイルしたものがトロイ扱いされるんでしょう?

646愛知人2018/01/23(火) 11:14:45.36ID:ZHqgRH1x
どうやって受け渡してる?
zipで渡したらどうなる?

647デフォルトの名無しさん (ワッチョイ bdb8-1VRr)2018/01/23(火) 11:48:58.28ID:iDuW9Lrl0
>>646
scp(ssh)とhttp経由でダウンロードしましたがだめで
その後拡張子を変えたりしましたがだめでした
アーカイブは試しませんでしたが
ダウンロードできても解凍するところでアウトと思われます
軽いプログラムだったのでbase64エンコードした文字列を
Windows側でデコードして出力しようとしたのですが
ファイルに出力した時点でウイルス判定され隔離されました

648デフォルトの名無しさん (ワッチョイ 3d9e-WQmd)2018/01/23(火) 12:35:41.92ID:IdUgpQhE0
C#アプリからCTRL+V以外のホットキーでSendMessageでWM_PASTEを送っても
ペーストできるアプリとできないアプリがあるのですが
ペーストできない原因とどうすればペーストできるのか
分かる方がおられましたらお教えいただけないでしょうか

自作C#アプリ ○
FireFox ○
ThunderBird ○
IE11 ○
Mery ○
秀丸ファイラ ○
MDIE ○


V2C ×
Chrome ×
Vivaldi ×
Everything ×

いやいや、原因は普通に当該アプリがWM_PASTEを処理しないからでしょうw
泥臭いけど素直にSendKeysを使ったらよいのでは?

650デフォルトの名無しさん (アウアウカー Sa21-zP08)2018/01/23(火) 12:43:45.53ID:w7MKK31Na
シリアル通信のプログラムで問い合わせ付のコマンドを送信する場合に、送信結果(bool)とレスポンス結果(string)を取得したいのですが、返り値boolでレスポンス結果をoutで返すといった感じにすればいいでしょうか

651デフォルトの名無しさん (ブーイモ MM99-4b13)2018/01/23(火) 12:44:53.41ID:S3NIjRwTM
WM_PASTEじゃなくて直接キーをハンドリングしてるんだろ
最近のメジャーなアプリは開発者がMacをメインで使ってるケースが多かったりして、
ファッキンドザのために必要以上の特殊な対応はしないというスタンスのものが増えてるよ

652デフォルトの名無しさん (ワッチョイ c5c9-GP+B)2018/01/23(火) 12:50:10.67ID:X0br0i8Q0
>>650
ValueTuple

653デフォルトの名無しさん (ブーイモ MMe9-VZYS)2018/01/23(火) 13:01:37.24ID:P/8oxsShM
>>650
送信結果は例外で

>>650
成否だけ分かればいいなら、失敗した時はnullを返せば十分じゃない?

enum Acknowledgement {ACK,, NAK, NoResply, Offline};
みたいなのを返したいなら、

Class Response
{
  public string Received{get; private set;}
  public Acknowledgement Acknowledgement{get; private set;}
}

みたいなのを返すとか

655デフォルトの名無しさん (ワッチョイ 5dd2-k4Q3)2018/01/23(火) 14:27:23.36ID:jwCBe9IF0
メインメニューにコピーの項目ないなら
直接ペーストするウインドウに送らんと

656デフォルトの名無しさん (アウアウカー Sa21-zP08)2018/01/23(火) 21:20:31.90ID:doIreqsya
>>652-654
ありがとうございます
試してみます

657デフォルトの名無しさん (ワッチョイ 25b3-pQa0)2018/01/24(水) 22:02:38.70ID:pOW1jrho0
classをforeachで回したいのですがGetEnumeratorの書き方はこういう形が一般的なのでしょうか?
プロパティが増える度にGetEnumeratorのyield return追加しないといけないですが
うっかり追加し忘れてバグの元になるから別の書き方があるのかも?と少し気になったので
https://ideone.com/etKQWk

658デフォルトの名無しさん (ブーイモ MMab-4b13)2018/01/24(水) 22:13:23.39ID:N2tfbGLJM
>>657
普通はそんなことはしない
まともな作り方をしていれば、次元の異なるものを列挙することはない

659デフォルトの名無しさん (ワッチョイ c581-x16F)2018/01/24(水) 22:16:06.84ID:BwYqU5Fv0

660デフォルトの名無しさん (ワッチョイ 25b3-zWLY)2018/01/24(水) 22:21:49.07ID:pOW1jrho0
>>658
すっごい単純なものだと
int id
string name
みたいなものでクラス保持してて、そこに他にも付属品が付いてるイメージです
たまにforeach使えないと不便な時があるのでその為に継承させてるのですが

DBから読み出したデータをそのままforeachで出力させたいって時とかに使います
わざわざ全部の項目を関数で読み出して表示ってのも大変な時があるので

661デフォルトの名無しさん (ワッチョイ 25b3-zWLY)2018/01/24(水) 22:38:24.91ID:pOW1jrho0
>>659
Typeの使い方色々調べましたけど、指定方法がイマイチわからなかったのでもうちょい調べておきます

>>660
質問してるんだから人の言うこと素直に聞いた方がいいと思うよw
少なくとも>>658は正しい。

一般的なのでしょうか?
一般的どころかそんなこと誰もしないよw

どうやったらそんなアホなことをせずに目的の仕様を実激できるかを考えた方がいい

663デフォルトの名無しさん (ワッチョイ 25b3-zWLY)2018/01/24(水) 23:04:36.97ID:pOW1jrho0
>>662
すいません、目的の事をしたいのにそうではないと提示してもらったのはありがたいのですが
他の実現方法が分からなかったのでとりあえず現状何をしてるかを更に明確に伝えた方がいいと思ったで

その回答がただ否定してるだけに見えたのなら少し発言が悪かったでしょうか?

>>659
で更に回答いただけたのでTypeの使い方を調べています
とりあえず動くものだけ>>657で暫定で動かしておいて、使い方を理解したら置きかえて行く予定です
個人的に作ってるものなのでとりあえずは手の届く範囲で扱えるので

664デフォルトの名無しさん (ワッチョイ 23d2-aN4H)2018/01/24(水) 23:07:14.93ID:E4B4d2jG0
>>660
やりたいことはこんな感じかな?
https://ideone.com/EfpdAq

665デフォルトの名無しさん (ワッチョイ 25b3-zWLY)2018/01/24(水) 23:23:34.07ID:pOW1jrho0
>>664
ビルドして動作確認しました
この通りの動きです、ありがとうございます
Linqの渡してるところ調べながら読み直して何してるか理解します

666デフォルトの名無しさん (オッペケ Srab-jHVE)2018/01/25(木) 12:22:13.44ID:bvB9i9l+r
>>662
質問されてるんだから屁理屈いってないで素直に答えろよw低能らしいなw

こうしてまた一人変態プログラマーが世に放たれた

668デフォルトの名無しさん (ワッチョイ e39d-1ipv)2018/01/25(木) 14:20:59.96ID:uboI0CmN0

//描画先とするImageオブジェクトを作成する
Bitmap canvas = new Bitmap(PictureBox1.Width, PictureBox1.Height);
//ImageオブジェクトのGraphicsオブジェクトを作成する
Graphics g = Graphics.FromImage(canvas);

//画像ファイルを読み込んで、Imageオブジェクトとして取得する
Image img = Image.FromFile(@"C:\test\1.bmp");
//画像のサイズを2倍にしてcanvasに描画する
g.DrawImage(img, 0, 0, img.Width * 2, img.Height * 2);
//Imageオブジェクトのリソースを解放する
img.Dispose();

//Graphicsオブジェクトのリソースを解放する
g.Dispose();
//PictureBox1に表示する
PictureBox1.Image = canvas;


g,imgはNEWしてないのに何でdispose()する必要があるの?

>>668
Graphics.FromImageもImage.FromFileも直接コンストラクタ呼んでないだけのこと。
中で非公開のコンストラクタが呼ばれてインスタンスが作られてることに変わりないじゃん

お片付けしていいタイミングが分かるのは作った人だけ。
だから作った人がお片付けする責任を負うのが合理的

670デフォルトの名無しさん (ワッチョイ e39d-1ipv)2018/01/25(木) 15:12:28.67ID:uboI0CmN0
そういうことなの。
Graphics g = Graphics.FromImage(canvas);
こいつが内部のコンストラクタでNewしてるかどうかなんてどうしたらわかるの? 分からんよな。
マニュアルをみると確かにこいつだけ「Creates a new Graphics from the specified Image.」と
なってるな。わかり難く紛れ込んでるんだね。

しかも
g.dispose()
PictureBox1.Image = canvas;
と御片付けした後に表示するとはまた不思議な気がする。なんで片づけてから表示するん?
どのみちNEWしたCanvasはDisposeしないといけないでしょ。それならそのときに自動的に全部Dispose()する
とかできないのか?

671デフォルトの名無しさん (ワッチョイ e39d-1ipv)2018/01/25(木) 15:29:46.72ID:uboI0CmN0
これはGraphicsクラスの説明にあるMSのサンプルだけどImageもulCornerもDispose()していないのは何故。
private void DrawImagePointF(PaintEventArgs e)
{
// Create image.
Image newImage = Image.FromFile("SampImag.jpg");
// Create point for upper-left corner of image.
PointF ulCorner = new PointF(100.0F, 100.0F);
// Draw image to screen.
e.Graphics.DrawImage(newImage, ulCorner);
}

別に使い終わってもリソース気にしないなら放置でいいよ
実害は普通の使い方してる限りでない

一個二個リソースが握られただけでは問題ないけど
数千数万とかレベルだと問題がでる
でもわざわざ勘定したり場合わけしながらコード書いているのか?
だったら正しいコードを書こう

newしてるかどうかわからなくても使ってることはわかるだろ?
いつかは自動で解放されるけどタイミングが不明
コード書いてる途中にg,imagを使い終わったと判断できるのは自分だけだから

片づけた後に使うのは当たり前だな
基本的にgなどはつかみっぱなしが良くないので短い範囲で手放してるだけ

これは基本的にwindowsのGDIという仕組みに乗ってるだけなので
他でも使ってる

c#に文句を言うのは筋違い
でもc++スレに行くのも筋違い

30年近くさかのぼってMSの設計者に文句を言ってくればいい
どうしても嫌ならwindowsの仕組みに乗ってないものを使えばいい

674デフォルトの名無しさん (ワッチョイ 27e3-5dAg)2018/01/25(木) 15:46:40.99ID:y1oROuxV0
こういう自分とこでインスタンス作成しといて始末しない設計ってクソだね

って話で終わりだな

もう少し説明
>と御片付けした後に表示するとはまた不思議な気がする。なんで片づけてから表示するん?
仮にgをファイル操作に置き換えたとしよう

ファイル開く
ファイル読み書き処理
ファイル閉じる
表示

これを
表示
ファイル閉じる
にした場合、表示がもし5年かかった場合、ファイルは意味もなく5年間開かれっぱなしで他から操作できない

さらに言えば自動でファイルを閉じる仕組みを作ったにせよ
表示が終わるまで5年間ファイルは閉じられる機会がない

これでもすべて自動でやれという意見は変わらないかな?

677デフォルトの名無しさん (ワッチョイ e39d-1ipv)2018/01/25(木) 16:00:10.16ID:uboI0CmN0
そういう話ではなくて意味が解らないという話だね。
例えばこれは何故当たり前なのかが不明。

>片づけた後に使うのは当たり前だな
>基本的にgなどはつかみっぱなしが良くないので短い範囲で手放してるだけ

折角グラフィック表示するためにgを作ったのに、表示する前に解放するというのが意味不明だ。
Msのサンプルコードではまさにこのgに対してDRAWしている。これで表示が機能しているのに
この例では、PictureにCanvasを代入して表示が完了することになっている。表示する前にg
をdisposeしているから、gの役割が二つの例で意味が不明だ。

gは数が限られている

鉛筆みたいなもの
鉛筆が5本あってみなで共有している
使い終わったらすぐ放棄しないと絵が描けない人がでて困る

必要なくなったのに5年鉛筆を持ちっぱなしが望ましい状態だろうか?

鉛筆5本をそれぞれが持ちっぱなしで
6個目のアプリが起動したらどうなるか?

鉛筆がないのでまともに動かない

680デフォルトの名無しさん (ワッチョイ 2706-bSkF)2018/01/25(木) 16:14:06.03ID:rPbpnmYW0
一つ勘違いがあるけど、newやコンストラクタとDispose()は直接関係ないよ
C#にdeleteは無いし、それに相当するものでもないので、インスタンスを解放する訳じゃない
Dispose()は主にガベージコレクション管理外となるアンマネージリソース等を解放するためのメソッド

そしてGraphicsはBitmapというキャンバスを弄るために用意したに過ぎない、表示するのはBitmapの中身
モノによってはDispose()すると内部バッファとかの書き出しとかもやるし、using等も使いつつ明示的にやりましょう

ちゃんとしたIDispose実装クラスならデストラクタ(ファイナライザ)でもDispose()を呼び出すコードが入ってるけど
タイミングがガベコレ次第になるし高コストなので明示的に呼ばれるとファイナライズキューから外すように設計されてる

>>670
だから、「Disposeする必要があるのは自分がnewしたもの」という勝手な思い込みが間違ってる。
Disposeは作成したオブジェクトが必要なくなった時に呼ぶ。
オブジェクトを作成する方法はコンストラクタ呼び出しだけじゃない。

MSDNの説明にある通り、Graphics.FromImageもImage.FromFileも新しく作成されたオブジェクトを
返す。使いまわしされる共有オブジェクトを返すわけじゃない。

> どのみちNEWしたCanvasはDisposeしないといけないでしょ。それならそのときに自動的に全部Dispose()する
> とかできないのか?
usingステートメントを使う
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/using-statement

C#でたころにGDIの限界までオブジェクト作ったことがあったな
画面がおかしくなって黒いところがあちこちにできる
リソースがないと怒られる

それともc++だったかないずれにせよ20年ぐらい前かな

あら、更新してない間にえらいレス増えてたw

684デフォルトの名無しさん (ワッチョイ e39d-1ipv)2018/01/25(木) 16:27:14.19ID:uboI0CmN0
要するに
Canvas(これはBItmapと同じ?)
Image (これは、Bitmap以外にも多種多様な表示を扱う?)
Graphics (これは描画するための、関数群のようなもの?)
の違いが不明ってことかな。
上の例(DOBON)では
 Picture.Image=Canvas
 これでImageにビットマップを代入して描画が完了することになっている。
 g.DrawImage(img, 0, 0, img.Width * 2, img.Height * 2);
ここでgを使ってimgに描画したのでもうgはいらない。だからgはdisposeした。
ならわかるが、ここでimgをDsiposeするからわけがわからない。

685デフォルトの名無しさん (ワッチョイ e39d-1ipv)2018/01/25(木) 16:34:42.10ID:uboI0CmN0
あっ、コメントにちゃんと書いてあった。

//画像のサイズを2倍にしてcanvasに描画する
g.DrawImage(img, 0, 0, img.Width * 2, img.Height * 2);
ここですでにCanvasに書いているんだな。

はい
解決したね良かったね

写真(img)を見て画用紙(canvs)に鉛筆(g)で絵を描いた
終わったので写真と鉛筆を片付けた

画用紙を額(picturebox1)に入れて飾りました

687デフォルトの名無しさん (ワッチョイ e39d-1ipv)2018/01/25(木) 16:43:44.03ID:uboI0CmN0
DOBONの例の機序
PictureBox1のサイズで空のBITMAPを作成する。
そのビットマップから描画オブジェクトのGraphics gを作成する。
ファイルからBitmapのImageを作成する。
gでそのImageをBITMAPに描画する。(BITMAPに描画したのでg、imgはいらない)
描画したBITMAPをPictureBOxにコピーする。

こういうことか。わかった。お騒がせしました。ペコリ

688デフォルトの名無しさん (ワッチョイ 27e3-5dAg)2018/01/25(木) 16:46:23.63ID:y1oROuxV0
やっぱりuingとか言ってた奴はガイジだっただろ?

689デフォルトの名無しさん (ワッチョイ e39d-1ipv)2018/01/25(木) 16:47:36.29ID:uboI0CmN0
>gは数が限られている

それはおかしい。そんなことはどこにも書いてない。
もしそうだとしたら
Graphics g = Graphics.FromImage(canvas);
このコードが間違いってことになる。ここで数量をチェックしないといけない。

ガイジって言葉を使う奴のほうがどうかしてると思いますよ

691デフォルトの名無しさん (ワッチョイ e39d-1ipv)2018/01/25(木) 16:52:18.84ID:uboI0CmN0
>C#でたころにGDIの限界までオブジェクト作ったことがあったな
>画面がおかしくなって黒いところがあちこちにできる 。リソースがないと怒られる

これはどういう意味? メモリーの限界ではなくて、GDI(ハードウエア)がもつレジスタの限界ってこと?
Graphicsって要するにGDIのリソースを確保するという意味なの?

ググればいいよ思うよ
ここはチャットじゃない

693デフォルトの名無しさん (ワッチョイ 27e3-5dAg)2018/01/25(木) 16:56:18.20ID:y1oROuxV0
ユーザフレンドリーと見せかけてウンコの代表みたいなクラスなので
真面目に考えないほうがいい

結局仕組みを理解するにはwin32の描画文化から知る必要がある

>>689
しょうもないことに突っかかるなあw
数が限られてるって言い方が気に入らないなら高価な共有リソースって言えば分かる?

例えば巨大な配列とか、通信ポートとか、
そういった類のものを「一人」がずっと占有したら他の人が使いたい時に使えないよね?

695デフォルトの名無しさん (ワッチョイ 27e3-5dAg)2018/01/25(木) 16:57:30.81ID:y1oROuxV0
>>694
そんなくだらない例え話じゃなくてちゃんと現象を説明してあげればいいじゃない

696デフォルトの名無しさん (ワッチョイ 2706-bSkF)2018/01/25(木) 17:00:16.17ID:rPbpnmYW0
>>691
GDIはハードウェアっつーより…Windowsでの実装が気になるならReference Sourceでも読んで
メソッド内部では色々チェック入ってるし、しくじったら例外ぶん投げるようになってるから

697デフォルトの名無しさん (ワッチョイ e39d-1ipv)2018/01/25(木) 17:14:44.08ID:uboI0CmN0
例外ね。それならわかる。

698デフォルトの名無しさん (ワッチョイ e39d-1ipv)2018/01/25(木) 17:19:27.46ID:uboI0CmN0
MSの説明はたったのこれだけw
■Graphics クラス
 Encapsulates a GDI+ drawing surface. This class cannot be inherited.

GDI+って要するに、グラフィックコントローラを使うってことでしょ。でも鉛筆5本ってほどしょぼいことはないだろ。

まだググってないのかよ…

700デフォルトの名無しさん (ワッチョイ 8783-fPTX)2018/01/25(木) 18:18:42.61ID:bbltRTAq0
結局リソースリリースタイミングを制御しないといけなくなるわけで、ほんとGCって糞だよな。

701デフォルトの名無しさん (ワッチョイ 8783-fPTX)2018/01/25(木) 18:20:51.02ID:bbltRTAq0
最近のMSのドキュメントはほんと不親切だよな。
幸運なことGDI+は不親切になる前に開発されたものだから、ググればMSも含めて大量にドキュメントが残ってる。

702デフォルトの名無しさん (スッップ Sdda-urNB)2018/01/25(木) 18:22:45.01ID:lTsrogoKd
>>700
論理的に

703デフォルトの名無しさん (ワッチョイ e39d-1ipv)2018/01/25(木) 19:02:27.22ID:uboI0CmN0
ググってみた。
Application.SetCompatibleTextRenderingDefault(false);
というのが設定されるようになっていて、GDI+は糞だからGDIを使いなさいってことらしい。w

704デフォルトの名無しさん (ワッチョイ ae9a-fRM1)2018/01/25(木) 19:09:48.12ID:MFAun2Gg0
>>703
文字列の描画の話だけ持ってきて何がしたい
https://dobon.net/vb/dotnet/control/setcompatibletextrenderingdefault.html
質問じゃないのならチラシの裏にでも書いてくれ

705デフォルトの名無しさん (ワッチョイ 8783-fPTX)2018/01/25(木) 19:23:49.81ID:bbltRTAq0
よく鉛筆5本とか言うけど、Win16ではDCは同時に使用できるのは5つまでだった。
だからDC取得したらその関数内ですぐ開放するのが当たり前だった。

706デフォルトの名無しさん (ワッチョイ 27e3-5dAg)2018/01/25(木) 20:28:49.03ID:y1oROuxV0
c#の{ }って中身が1文の場合、省略できるものとできないものってどうやって決まってるんでしょうか?

namespace、class、
for、switch、while、try、checked、fixed、unsafeなど

707デフォルトの名無しさん (ワッチョイ e39d-1ipv)2018/01/25(木) 20:53:14.29ID:uboI0CmN0
省略しないこと。それが賢いプログラムスタイル。


709愛知人2018/01/25(木) 22:57:58.27
PictureBoxのMouseMoveイベントハンドラ内にInvalidate()を入れるとTimerのTickが止まります。何故ですか?
https://ideone.com/fWNMPP

コード見てないけど
そんな暴れん坊見たいことはしないほうがいいと思う

711愛知人2018/01/25(木) 23:02:00.73
マウスの位置をフィールドに入れて間隔の短いタイマーで描画しますか?

712デフォルトの名無しさん (ワッチョイ 0b9e-ss0X)2018/01/26(金) 01:44:30.98ID:TUeBIint0
すみません質問です。
C#でエクセルを複数起動させるプログラムを書いているのですが、解決できない問題があります。
例えば既にa.xlsxが開かれていて、追加で3つのエクセルファイル(b.xlsx, c.xlsx, d.xltm)を立ち上げるとします。
その場合、process.start("excel", "b.xlsx c.xlsx d.xltm");
とすると、a~dまでが一つのプロセスにまとまるのはいいのですが、テンプレートが編集モードで開いてしまいます。
仕方ないので、
process.start("excel", "b.xlsx c.xlsx");
process.start("d.xltm");
とテンプレートだけ"excel"を抜いて起動すると、ちゃんとテンプレートは新規ファイルで開かれますが、プロセスが3つに分かれてしまいます・・[a.xlsx], [b.xlsx, c.xlsx], [d1]
(何故かa.xlsxまで孤立しちゃうんですよね・・・)

色々試したところ、
process.start("excel", "b.xlsx c.xlsx");を実行して一度処理を終了させた後(この時点ではa~cが一つのプロセスになっている)、
また起動し直しでprocess.start("d.xltm");を単独実行させると、a~cと同じプロセスにdが加わってくれました。
であれば、全部起動完了待ちすればうまくいくか?と思って、
Process p = new Process();
p.StartInfo.FileName = "excel";
p.StartInfo.Arguments = "b.xlsx c.xlsx";
p.Start();
p.WaitForInputIdle();
p.StartInfo.FileName = "d.xltm";
p.Start();
と、インスタンスを作ってからp.WaitForInputIdle();を加えたうえで実行させると、
プロセスは3つじゃなく今度は2つにまとまりましたが、一つになってくれませんでした・・。
[a.xlsx, b.xlsx, c.xlsx], [d1]
という具合で、何れにせよテンプレートだけプロセスが分かれちゃいます。

色々試しましたが、テンプレートファイル含む複数のエクセルファイルを、テンプレートファイルは新規ファイルとして開きつつ、全て一つのプロセスとして起動させる方法が分かりませんでした・・

方法があれば教えてくださいお願いいたします(m_m)

713712 (ワッチョイ 0b9e-ss0X)2018/01/26(金) 02:02:53.98ID:TUeBIint0
712です。
p.WaitForInputIdle();
の後に、System.Threading.Thread.Sleep(1000);
を強引に追加したら上手くいきました・・。
(うまくいったというのはつまり、
a.xlsxだけが最初に開いてあって、
b.xlsx, c.xlsx, d.xltmをC#で開いた時、a~dまで一つのプロセスにまとまり、
d.xltmも新規ファイルで開いてくれたという事です)
でもこれ、絶対正規の解決方法じゃないですよね?
きっともっといい方法ありますよね?・・
ご教授下さい。お願いいたします。

714愛知人2018/01/26(金) 02:18:07.66
長すぎて目が回る


716デフォルトの名無しさん (ワッチョイ 8781-6Oft)2018/01/26(金) 05:52:15.43ID:YXUTlXJp0
>>713
システムハングアウトなめんな。
スリープは大事。

717712 (ワッチョイ 0b9e-ss0X)2018/01/26(金) 12:19:07.12ID:TUeBIint0
>>715
オートメーションってつまり、コムオブジェクト使うって事ですかね?
ちょっと調べてみます。
>>716
スリープも効果的に使えば立派なコードですかね!
ミリ秒時間の調整行って、確実に上手くいく範囲で秒数縮めてみようかと思います。
もっといい方法見つかればそれで実装しますが、それまでスリープで対応しようかと思います。
有難うございました。

718デフォルトの名無しさん (ワッチョイ 56d6-1ipv)2018/01/26(金) 17:21:24.22ID:YG13MR3r0
Form1のデータから、Form2を呼び起こして、
Form2のPrintDocument1_PrintPageを印刷しています。

Form2を閉じて、2回目にForm1から別のデータを印刷すると、
DrawStringで印刷したデータが重複してしまいます。

PrintDocument1_PrintPageを初期化するような方法はないでしょうか?

719デフォルトの名無しさん (ワッチョイ da60-1ipv)2018/01/26(金) 17:29:15.32ID:SCIRVI+W0
getcommandlineargs()で引数を渡すと
スペースとダブルクォーテーションが消えてしまいますがどうすればいいですか?
大文字にしても消えます

720愛知人!id:ignore (ワッチョイ b375-5Mtj)2018/01/26(金) 17:36:10.53ID:56XeCPud0
>>718
意味不明

721愛知人2018/01/26(金) 17:41:29.04
>>719
ダブルクォーテーションは""に置き換える
スペースの入った文はダブルクォーテーションで囲む

722デフォルトの名無しさん (ワッチョイ da60-1ipv)2018/01/26(金) 18:01:50.81ID:SCIRVI+W0
>>719
すいませんかんちがいしました

723デフォルトの名無しさん (ワッチョイ 27e3-5dAg)2018/01/26(金) 18:48:32.92ID:AIK2YVo40
>>708
ありがとう
自分でやってみた結果
埋め込みステートメントができるのは

do,if,else,fixed,for,foreach,lock,using,while

だった

724愛知人2018/01/27(土) 13:34:52.88
pictureBoxに線を引いたり色々描画した後に指定位置のピクセルの値を取得する方法はありますか?
CopyFromScreen?を使うしかないですか?

725愛知人2018/01/27(土) 13:48:07.76
>>724は取り消し

726デフォルトの名無しさん (ワッチョイ e39d-snNQ)2018/01/28(日) 00:10:09.85ID:fNHvxuhr0
(12345).ToString("D8") = "00012345"
だけど、”    12345"にする方法はないのか?

727デフォルトの名無しさん (ワッチョイ 8bc9-rgA5)2018/01/28(日) 00:27:28.05ID:89noKjbb0
>>726
0を半角スペースにしたいならPadLeft(桁数)でいいんじゃね

728デフォルトの名無しさん (ワッチョイ e39d-snNQ)2018/01/28(日) 08:12:58.16ID:fNHvxuhr0
なるほど
" 123"
" 123.0"
" 123.00"
~
みたいなのをformat登録しておいて一括処理したいんだが,,,,
PadLeftをつかうには、独自フォーマットを作って解析して分解するひつようがあるな。
"8,D","12,F1","10,F2","10,F3","8,D"
これをSplitで分解して桁と表示にわけるとできる。みんなこんなことをやってるんだろうか?

729デフォルトの名無しさん (ワッチョイ 5323-jjF6)2018/01/28(日) 09:10:44.54ID:KQzDOLbA0
設計ミスだな
出力の幅なんて最終的な出力の段階で自ずと決まるもんだろ
普通そんなもん必要ない

730デフォルトの名無しさん (ワッチョイ ae81-85sb)2018/01/28(日) 10:28:13.08ID:6EjFtDvJ0
文字列は空白埋めできたような
Formatを2回する
あるいはカスタムフォーマッタを作成

731デフォルトの名無しさん (ワッチョイ 8b80-wOSG)2018/01/28(日) 11:07:52.48ID:DjJaMqeu0
String.Format("{0,8:d}", 12345);

732デフォルトの名無しさん (ワッチョイ e39d-snNQ)2018/01/28(日) 12:35:12.10ID:fNHvxuhr0
>設計ミスだな

ToStringとString.Formatでいちいち仕様を変えるなんざ設計ミスもいいとこだ。

別物を同じように思う脳がおかしい

734デフォルトの名無しさん (ワッチョイ 9e9f-L16n)2018/01/28(日) 13:15:50.33ID:ExF5GMWy0
$"{12345,8} 6.0になってからString.Formatを使わなくなったな

735デフォルトの名無しさん (ワッチョイ e39d-snNQ)2018/01/28(日) 13:38:54.52ID:fNHvxuhr0
>>734
残念。VS2013ではそのスタイルは動かんな。

736デフォルトの名無しさん (ブーイモ MM97-jjF6)2018/01/28(日) 13:44:27.34ID:AvNbdCpkM
最新のVSって毎週バージョンが上がってて、アップデートしたら突然ビルドが通らなくなったりとか時々あるんだよね
自社開発でパパっと対応できる体制の開発が前提になってて、もうジャパニーズドカタには手を出せない代物

質問者が何言ってるのか俺にはさっぱりわからんけどみんなよく分かるなw

738デフォルトの名無しさん (ワッチョイ 8781-6Oft)2018/01/28(日) 13:51:15.96ID:N5xGT/cM0
HAP使ってますか?

俺も正しい意味はわからないけど憶測で判断してる

文章も書けないくらい幼稚だけど偉そうなレスしてるとだけわかる

740デフォルトの名無しさん (ワッチョイ b703-jHVE)2018/01/28(日) 13:54:41.80ID:8+IXgyMg0
お前もやろがw

>>728
これが特に意味不明だけど考えてわかるレベル

>>735
これが偉そう

742デフォルトの名無しさん (ワッチョイ e39d-snNQ)2018/01/28(日) 14:11:02.89ID:fNHvxuhr0
List<string> a = new List<string> {
"x3" ,
"x4" ,
"x5" ,
"x6" ,
"x7" ,
"x8" ,
};
foreach (string el in a)
{
combox1.Items.Add(el);
}

combox1の初期化ってこんな方法しかないのか? 直接は初期化できんのか?

743デフォルトの名無しさん (ワッチョイ e39d-snNQ)2018/01/28(日) 14:12:38.19ID:fNHvxuhr0
>>236
ちゃうちゃう、$”  { valuえ} ”の記述はVs2017しかサポートしとらん。

744デフォルトの名無しさん (ワッチョイ 567f-YJhG)2018/01/28(日) 14:15:41.42ID:Jve/QRxt0
AddRange()使えば

745デフォルトの名無しさん (ワッチョイ ae9a-fRM1)2018/01/28(日) 14:15:49.45ID:EAfEAz/a0
>>742
デザイナのコード見ろよ。あれが基本だ

配列でAddRange初期化出来なかった?

747デフォルトの名無しさん (ワッチョイ e39d-snNQ)2018/01/28(日) 14:43:45.42ID:fNHvxuhr0
Addrange でできた。サンクス。

748デフォルトの名無しさん (ワッチョイ e39d-snNQ)2018/01/28(日) 15:01:38.15ID:fNHvxuhr0
int w = (int)((double)pic.Width / (double)(1 + x ) / 1.3);
doubleとintを混在するときにdoubleに自動的に型推論する機構ってないの?
いちいちキャストするのはメンドクサイよな。

749デフォルトの名無しさん (ブーイモ MM97-jjF6)2018/01/28(日) 15:44:15.18ID:AvNbdCpkM
>>748
int w = (int)(pic.Width / (1.0 + x ) / 1.3);
でいけるはず

750デフォルトの名無しさん (ワッチョイ e39d-snNQ)2018/01/28(日) 16:53:15.56ID:fNHvxuhr0
あっ、ほんとだ。いけた。ありがとう。

751デフォルトの名無しさん (ワッチョイ e39d-snNQ)2018/01/28(日) 17:12:56.15ID:fNHvxuhr0
Fontをファイルに保存したい。この場合name,style,sizeに分解して保存するのだろうか?
他に何かいい方法は?

752デフォルトの名無しさん (ワッチョイ e305-5Mtj)2018/01/28(日) 17:14:48.84ID:WjjZpgjO0
>>745
バーカw

753愛知人 (ワッチョイ e316-5Mtj)2018/01/28(日) 17:18:54.87ID:X+CD44G50
>>751
多分VSのアプリケーション設定のところでシリアライズして保存できるようにできる

754デフォルトの名無しさん (ワッチョイ ae9a-fRM1)2018/01/28(日) 17:20:49.97ID:EAfEAz/a0
>>751
もう少し意味が通じるようにまとめろよ
Font.Familyname:string
FontStyle:int
FontSize:float(single)

755愛知人 (ワッチョイ b375-fuuV)2018/01/28(日) 18:07:26.86ID:QV+bfV+F0
これな
https://i.imgur.com/ZyRzEn7.png

これで保存
Properties.Settings.Default.*** = font;
Properties.Settings.Default.Save();

これで読み出し
var font = Properties.Settings.Default.***;

ユーザーのアプリケーションデータフォルダの中にxmlで保存されるようになってる

756デフォルトの名無しさん (ワッチョイ 8b80-wOSG)2018/01/28(日) 20:22:00.44ID:DjJaMqeu0
var conv = TypeDescriptor.GetConverter(typeof(Font));
var text = conv.ConvertToString(font);
font = (Font)conv.ConvertFromString(text);

757デフォルトの名無しさん (ワッチョイ e39d-snNQ)2018/01/28(日) 20:23:59.60ID:fNHvxuhr0
それがあるのは知っていたけど、Settingsってそんなふうに使うのか。初めて知った。
便利そう。ありがとう。

前に設定してみたけど、ビルドすると直ぐに消えてしまうので、どうやって使うのか
わからなかった。

758デフォルトの名無しさん (ワッチョイ 9606-rgA5)2018/01/28(日) 20:29:18.90ID:siYtS87s0
>>757
バージョンアップすると設定が消えちまうのは仕様です
で、https://qiita.com/hbsnow/items/0d19910a46bb6d902cd5のように回避します

759デフォルトの名無しさん (ワッチョイ e39d-snNQ)2018/01/28(日) 21:15:10.28ID:fNHvxuhr0
Properties.Settings.Default.DispFont = lblFont.Font ;
エラー 1 プロパティまたはインデクサー 'Properties.Settings.DispFont' は読み取り専用なので、割り当てることはできません。

フォントはリードオンリーになるので設定は無理ぽい。

それコピーした?
なんかおかしいけど?

761愛知人2018/01/28(日) 23:47:37.92ID:QV+bfV+F
>>759
え〜。こっちだと問題ないよ〜
https://i.imgur.com/WY2Y4Qb.png

762デフォルトの名無しさん (ワッチョイ e39d-snNQ)2018/01/29(月) 00:40:38.31ID:YDWVgvG40
>>761
スコープのところをアプリケーションにしたのが間違いだった。ユーザーにしたら
いけた。

でも暫くやって意味がわからなかったので結局はJson.netを使って保存した。
クラスをそのままシリアライズしたらFontもなにもかも一切合切勝手にシリアライズ
してくれた。W
これは分かりやすい。一発でわかった。

763愛知人2018/01/29(月) 01:03:38.61ID:pcTu+bOr
だよなぁ〜

764デフォルトの名無しさん (ワッチョイ 8781-1ipv)2018/01/29(月) 01:50:11.03ID:0ju9RGha0
class 年齢 {
public string 名前{ get; set; }
public int 年齢{ get; set; }
}
List<年齢> 年齢リスト = new List<年齢>();
このような年齢型の年齢リストがあったとして、
年齢が21のリストだけを抽出したい場合、ラムダ式ではどのように書けば良いのでしょうか?

765愛知人2018/01/29(月) 01:56:46.26ID:pcTu+bOr
list.FindAll(x=>x.年齢==21)

766デフォルトの名無しさん (ワッチョイ 8781-6Oft)2018/01/29(月) 02:06:43.62ID:0ju9RGha0
>>765
ありがとうございます。明日試してみます!

767デフォルトの名無しさん (ワッチョイ bac2-rgA5)2018/01/29(月) 06:31:31.02ID:1VUu5V2b0
>>761
関係ないけどフォントって何?

768>>767 (ワッチョイ bac2-rgA5)2018/01/29(月) 06:32:39.08ID:1VUu5V2b0
あ、VSの表示に使っているフォントね

769愛知人2018/01/29(月) 13:34:43.26ID:pcTu+bOr
メイリオ

770デフォルトの名無しさん (ワッチョイ 9e9f-eGIS)2018/01/29(月) 16:33:40.56ID:FA24LoNZ0
配列の要素すべてが0もしくは1000でなかったらという論理式を書きたいのですが

で、っていう

その文章、「でない」がどう掛かるのかあいまいで二通りの解釈が可能だから、
解釈の余地がなくなる別の表現を工夫した方がいいと思うよ

772愛知人2018/01/29(月) 17:05:56.81ID:pcTu+bOr
>>770
arr.All(x=>x!=0&&x!=1000)

773デフォルトの名無しさん (ブーイモ MMda-jjF6)2018/01/29(月) 17:42:29.88ID:vA4dMQ1gM
>>771
ドキュメントでよくあるよなこれ
この種のミスをする奴は何度注意しても直らないんだよ

774愛知人2018/01/29(月) 18:26:02.43ID:pcTu+bOr
反射的にレスしてすまん
たしかに2通りあるな

775デフォルトの名無しさん (ワッチョイ b703-rERY)2018/01/29(月) 18:58:15.23ID:z90g+lRG0
ねえわwリアルでもこんなアスペばかりで困るけどなw

776愛知人2018/01/29(月) 19:04:54.22ID:k6Igz8nX
arr.All(x=>!(x==0||x==1000))
!arr.All(x=>x==0||x==1000)

日本語で書くから間違える
最初からコード書けばいいのにね

778デフォルトの名無しさん (ワッチョイ 5717-fPTX)2018/01/29(月) 19:10:08.17ID:CbBWbMhk0
>>775
お前の読解力が絶望的だってのはわかった

779デフォルトの名無しさん (アメ MMaf-Ah9j)2018/01/29(月) 19:48:59.46ID:4EZh8ZpyM
>>777
なるほど、つまり>>770は、

arr.All(x=>!(x==0||x==1000))
を書きたいのですが

もしくは、

!arr.All(x=>x==0||x==1000)
を書きたいのですが

と質問すべきだったと。
確かにこれなら解釈が割れる心配ないね!

780デフォルトの名無しさん (ワッチョイ 9606-rgA5)2018/01/29(月) 20:09:39.08ID:Ml84jtHT0
anyのことも、偶には思い出してやって下さい

781愛知人2018/01/29(月) 21:07:54.20ID:pcTu+bOr
解ってます

782デフォルトの名無しさん (ワッチョイ 0bed-La00)2018/01/31(水) 06:50:26.36ID:ywuJndNd0
>>689
どーせ、CreateCompatibleDCみたいな話

783デフォルトの名無しさん (ワッチョイ 27e3-5dAg)2018/01/31(水) 07:23:04.73ID:NBRruYI30
>>782
それどっかにまとめないかな?

初心者だからわからないんだろうけど
そういうリソース系は数量をチェックしても無駄だよ

チェックした時点で大丈夫かもしれないけど
使うとき限界に達してるかもしれない
どこも保証しない
実行して失敗なら失敗

鉛筆の数をチェックしてあまり1本あっても自分が使うまでのわずかな間に
別のアプリがその鉛筆を使うと自分は使えない

開放のルールがワカンネ

いきなり鉛筆をつかもうとする
つかめなかったらwindowsは異常な事態になってるので回復は不能
アプリを落とす

自分で鉛筆を使ってる場合使わなくなったら即座に開放
たったこれだけ

c♯固有の話では無いですがインターフェースのファイルとクラスのファイルは一般的に同じフォルダに入れてるのでしょうか?

インターフェース用フォルダ、抽象クラス用フォルダ、クラス用フォルダと分けた方が見やすいとかあるのかなと思いまして

c#固有じゃないとは言い切れない

ご自由にというか
その時のルールがあるならそれに従えばいい
c#はjavaのようにフォルダ構造が名前空間じゃないから

790デフォルトの名無しさん (ブーイモ MM06-jjF6)2018/01/31(水) 13:01:03.78ID:5zei4l0gM
>>788
普通は名前空間に合わせる
ソースにオリジナリティを出すな

>>790
なるほど名前空間で別けるのですね

独学初心者には思いもつきませんでした
参考になります

いや、それは単にVSがそういう前提で作ってある(ソリューションエクスプローラから
新規にファイルを作った時のスケルトンの名前空間がプロジェクトの規定の名前空間に
フォルダ階層がくっついたものになる)ってだけの話で、別に必要なら単に分類のために
フォルダ作ってもいいと思うよw

そんなケースはあんまりないとは思うけど

そういう前提には作ってないよ
設定があってチェック外せばどのフォルダで作っても同じ名前空間になる

794愛知人2018/01/31(水) 19:50:28.99
このエラーの原因が分りません、教えてください(>_<)
https://i.imgur.com/0hN1rC0.png

>>794
スペルミス
クラス名見てみろ

796愛知人!id:ignore (ワッチョイ e305-5Mtj)2018/01/31(水) 19:54:02.69ID:3eBSylxa0
>>795
ありがとうございます!

797デフォルトの名無しさん (ワッチョイ 8bc9-rgA5)2018/01/31(水) 19:54:19.37ID:Ul/zaXpy0
>>794
マゲガー

おかしいと思ったらコピーして検索してみろ

799デフォルトの名無しさん (アメ MMaf-Ah9j)2018/01/31(水) 20:41:19.03ID:6Q7+onpXM
>>798
最大で140℃くらいまでしか開かないので、コピー機に入りません(>_<)

800デフォルトの名無しさん (スププ Sdda-La00)2018/01/31(水) 21:11:48.89ID:uhY/QizFd
>>783
昔、GDI+とMFC or Win32APIから.netに移行する表とその説明があったけど、検索で調べきれないわ。

さかのぼると、WM_PAINT, BeginPaintとか古典的な描画APIとかの話になるから

今、ディスプレイドライバーのソースを見てるけど、なかなか説明が難しいわ

ごめんなさいね

801デフォルトの名無しさん (ワッチョイ f783-j4Dg)2018/02/01(木) 03:40:13.00ID:J9JLK/T20
デバイスコンテキストの説明になんでドライバまで降りるねん。

802デフォルトの名無しさん (ワッチョイ f78a-EKSC)2018/02/01(木) 04:01:11.67ID:XxNDw1fe0
最近この板変な人が多いの

803デフォルトの名無しさん (ワッチョイ b7cc-9ylI)2018/02/01(木) 07:50:14.98ID:jtx9E0YE0
知識をひけらかしたいだけでしょ

非常に単純化した話として
windowsは特定のリソースを数字で管理してるけど
その数字の上限が決まってる

管理してる空きがないと確保できない
単純な話

出来ないものはできない
それだけ
何も難しくない

だから使わなくなったらすぐに解放しておけばいい
それだけ
何も難しいことはないけど馬鹿がこねくり回して難しい難しい言ってるだけ

サンプルソースで開放してないのは1個ぐらいもれてても実害はないから

実装する際は自分で実装したらいい

806デフォルトの名無しさん (ワッチョイ 9fc3-SVib)2018/02/01(木) 12:00:06.18ID:1x8PgmKV0
実はウンコもちょっとくらいもれてても実害はない。お前のパンツは飾りか?

807デフォルトの名無しさん (ワッチョイ b7cc-9ylI)2018/02/01(木) 12:09:28.60ID:jtx9E0YE0
パンツに漏れてるウンコなら気にしちゃうけど
公園の片隅に置いてあるウンコは無視しちゃう

808デフォルトの名無しさん (オッペケ Srcb-ggKF)2018/02/01(木) 12:23:03.42ID:0snSQv2vr
気にしたやつが負け

809愛知人2018/02/01(木) 22:50:11.02
WinFormsの自作Componemtでデータをネットから取得するメソッドで、完了と失敗のイベントを実装するのは普通ですか?

810デフォルトの名無しさん (ワッチョイ f706-wbgk)2018/02/02(金) 00:11:33.54ID:JsFuCwNz0
問題ないと思うが、今の流行りならasync Task<Hoge>等で結果返すパターンかな

コールバック地獄は嫌だ

812愛知人!id:ignore (ワッチョイ 9775-jUAt)2018/02/02(金) 00:51:28.62ID:jGftTsx+0
ありがとうございます(>_<)

813デフォルトの名無しさん (ワッチョイ 9fc3-Z3C6)2018/02/02(金) 08:11:51.44ID:prG6i1oZ0
>>801
ごめんね。

低レベルでアロケータがどうなってるのか気になって。
( ノД`)…

814デフォルトの名無しさん (ワッチョイ 1feb-j4Dg)2018/02/02(金) 11:49:47.51ID:BMFcc+go0
U+2028/2029に初めて遭遇したんだが
文字列を1文字ずつ走査して IsSeparator が true だったら削除して詰める、って関数ない?

815デフォルトの名無しさん (オッペケ Srcb-ggKF)2018/02/02(金) 12:19:04.07ID:dTcbVnf+r
秒で書けるのによくそんな事質問する気になるな
気が長いやつだ

816愛知人2018/02/02(金) 12:29:56.98
>>814
Replace

817デフォルトの名無しさん (ワッチョイ 1feb-j4Dg)2018/02/02(金) 12:34:09.95ID:BMFcc+go0
また拡張メソッドが増えた

818愛知人2018/02/02(金) 12:37:13.44
区切り文字を削除したいシチュエーションなんか普通はないしな
知らんけど

819デフォルトの名無しさん (ワッチョイ 1feb-j4Dg)2018/02/02(金) 12:38:34.03ID:BMFcc+go0
ところで拡張メソッドって参照されないんだっけ?

public static System.Data.SqlClient.SqlCommand CreateCommand(this System.Data.SqlClient.SqlTransaction SqlTransaction)
{
  var SqlCommand = SqlTransaction.Connection.CreateCommand();
  SqlCommand.Transaction = SqlTransaction;
  return SqlCommand;
}

BeginTransaction した後のトランザクションを使って CreateCommand すると
トランザクションの内側に入る、的な糞メソッドを作ったんだけど
どうやら、トランザクションの外側になっちゃうっぽいんだ。
→ Rollback しても戻らない
→ ブレークポイントしながら見てると、トランザクション自体が開始されていない

ref this で解決するかと思いきやクラスはダメで使えない
VB.NET だと普通に出来ちゃうと聞くが

820愛知人2018/02/02(金) 19:36:31.54
コードでコントロールのプロパティを規定値(DefalutValue属性の値)にリセットする方法はありますか?(>_<)

821デフォルトの名無しさん (ワキゲー MMdf-lmiZ)2018/02/02(金) 19:54:02.62ID:UX+Yt5X5M
PropertyDescriptor(ctrl).GetProperties()[nameof(ctrl.Property)].ResetValue();

822デフォルトの名無しさん (ワキゲー MMdf-lmiZ)2018/02/02(金) 19:54:48.71ID:UX+Yt5X5M
あ、.ResetValue(ctrl)だった

823愛知人!id:ignore (ワッチョイ 9775-jUAt)2018/02/02(金) 20:50:42.32ID:jGftTsx+0
ありがとうございます(>_<)

824デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/02(金) 21:57:28.18ID:Zl28+evz0
c#っぽい独自言語の解析をしてるんですが
コメントの「//」や「/*」「*/」の解析って
ダブルコーテーション内と外ってどうやって判断したらよいでしょうか?

825デフォルトの名無しさん (ワッチョイ 57b3-E/qE)2018/02/02(金) 21:59:32.04ID:z7oDIr3g0
スタックに積む

>>824
やり方次第

作ったことあるのでわかりやすいのは文法をのままコードにする
頭から呼んでって状態を覚えておく

文字リテラル内は解析しないでエスケープルールや”の監視だけする

//や/*コメントの時は行末まで読み捨て

間違い

/*は*/を読み捨てしたらダメだなw

828デフォルトの名無しさん (ワッチョイ 1705-CU+w)2018/02/02(金) 22:40:01.25ID:pft3AbU10
パーサジェネレータ使えよ

829デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/02(金) 22:48:59.30ID:Zl28+evz0
>>826
それがわからない
文字列リテラルなのかコメントなのか判断できない
ダブルコーテーションから判定するとそれがコメントだったとき駄目
コメントから判定するとそれが文字列リテラルだったとき駄目
っていうパラドックス

>>829
それは変なやり方してるからだろ
おおかた正規表現などで判定してるんだろう

コードを頭から読んでできないのは
文法がおかしいかパースのやり方がおかしいからだ

急がないならどれかの言語のコードでもじっくり読んで勉強したらいい
大体の言語はオープンソースなので好きなのをやればいい
ただしc++の知識ぐらいはいる

急ぐならテストパターンを十分に用意して手あたり次第やればいい

832デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/02(金) 23:08:58.70ID:Zl28+evz0
>>830
やけっぱちで
解析のコメント削除時に「//」か「/*」見つけたら同じ行の前側みて
文字列リテラル中かどうかみる処理入れて乗り切ってみた

833デフォルトの名無しさん (ワッチョイ 57b3-E/qE)2018/02/02(金) 23:10:39.49ID:z7oDIr3g0
>同じ行の前側みて
うん、かなり無茶苦茶だな
先頭から順に読んでいって、「今は文字列リテラル中」とか「今はコメント中」とかの状態を保持しておけよ

独自言語の解析してるんだろ?

他の部分が出来てるなら
普通に頭から読んでって "が出たらリテラルフラグオンにして
//が出たら行末まで読み捨て
/*だったら次の*/がでるまで捨てるだけ

何も難しくない

文字が抜けた

"が出たらリテラルフラグオンにして仕様通りリテラルを最後まで読み切るだけ

836デフォルトの名無しさん (ワッチョイ 7703-skLA)2018/02/02(金) 23:18:02.29ID:HOyQOl0G0
独自言語が逐次実行される前提で話してるな

837デフォルトの名無しさん (ワッチョイ 57b3-E/qE)2018/02/02(金) 23:18:46.57ID:z7oDIr3g0
もしかして、1文字ずつじゃなく1行ずつ読み込んでるんじゃないだろうな

838デフォルトの名無しさん (ワッチョイ 57b3-E/qE)2018/02/02(金) 23:22:20.25ID:z7oDIr3g0
>>836
逐次実行じゃなくても、頭から順に読むのは同じだよ
読んだ物を構文木に積んでいって、評価・実行は最後にやれば良いだけ

>>829
難しく考えすぎでしょう。
>>826が言ってるのはたぶん単純なステートマシン。

enum State
{
  トークン探索中,
  文字列検出中,
  インラインコメント検出中、
  ....
}

stateを表すenumを定義して、stateの値に応じて動作を変えるだけ。
文字列リテラルの始め「"」やコメントの始まりを検出するのはstate = State.トークン探索中の時だけ。
素朴すぎるやり方だと思うが、少なくともこれでそんなパラドックスには陥らない

>>832
本当にめちゃくちゃだな
前方見ても意味ない
確定するためには本当に最初までさかのぼることになる

841デフォルトの名無しさん (ワッチョイ 7717-j4Dg)2018/02/02(金) 23:24:55.99ID:ErA95Rap0
>>834-835で答えが出てるのでこれ以上はスレの無駄遣い

842デフォルトの名無しさん (ワッチョイ 7703-ggKF)2018/02/02(金) 23:27:13.14ID:HOyQOl0G0
>>838
横ぐるまを押したか

843デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/03(土) 00:00:03.20ID:S/Wa3aFw0
>>840
大丈夫だよ
文字列リテラルって2行続かないじゃん確か

844デフォルトの名無しさん (ワッチョイ bf7f-qlLX)2018/02/03(土) 00:06:47.29ID:pHRpw+FT0
>>843
そんなのはルール次第

845デフォルトの名無しさん (ワッチョイ d780-miZj)2018/02/03(土) 00:15:01.77ID:NdjAbgSB0
例えばC#なら@""で改行入れられるし

846愛知人!id:ignore (ワッチョイ 9775-jUAt)2018/02/03(土) 00:17:09.98ID:GkUi/Itq0
そのときだけ行またげばいいだけだし

847デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/03(土) 00:34:25.55ID:S/Wa3aFw0
>>845
ぎゃああああ
出来やがった

既存コードが解析の初っ端でコメント削除からやってるから
弄りたくなかったけど
いよいよ駄目だな

848デフォルトの名無しさん (ワッチョイ 57b3-E/qE)2018/02/03(土) 00:38:09.24ID:AuUEv0AE0
知らんかったんかいw

コメントは削除するんでなく、「読み捨てる」んだ

849デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/03(土) 00:41:40.01ID:S/Wa3aFw0
>>848
いや、似非c#だからそんなことできんだろと

850デフォルトの名無しさん (ブーイモ MMfb-+DFt)2018/02/03(土) 00:53:02.56ID:PxR3gYBlM
ヒアドキュメントを除いたとしてもしソースの先頭の/*をどうやってみつける?
状態を持たないならソースの頭までさかのぼるしかない

851デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/03(土) 00:58:38.87ID:S/Wa3aFw0
>>850
いや、今のルーチンはコメントの削除からやってるのよ

852デフォルトの名無しさん (ワッチョイ b781-j4Dg)2018/02/03(土) 01:03:27.72ID:OVqIgYtY0
コメントも文字列も先に始まったほうが勝つからどうしょうもない

853デフォルトの名無しさん (ブーイモ MMfb-+DFt)2018/02/03(土) 01:06:21.86ID:PxR3gYBlM
質問しといて聞かないパターン=成長しない初心者パターン

ただ悩みを聞いて欲しかったんじゃないですか
女の相談事みたいなw
まあ、どうせ人も減ってるしそれもありでしょう

855デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/03(土) 01:24:32.23ID:S/Wa3aFw0
>>853
いや、アドバイス通り
頭から読んでいくしかないっぽいっすね
クレームが来てるところがまさにそこなので誤魔化しが効かない

856デフォルトの名無しさん (ワッチョイ 9fc3-Z3C6)2018/02/03(土) 08:34:38.62ID:WhjNgY2U0
>>854
お姉さんが聞いてあげるわ。
今夜、川口駅リリア側の出入り口で待ってる

857デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 09:02:44.63ID:LvTBogUR0
swich() { case xxxx: ~
xxxxに変数をつかいたいのだが、switchに変わるものってなに?

858デフォルトの名無しさん (ワッチョイ d780-lEY8)2018/02/03(土) 09:33:50.59ID:NdjAbgSB0
if

859デフォルトの名無しさん (ワッチョイ 9f60-w+Fq)2018/02/03(土) 09:53:42.04ID:nKXUpnsB0
>>857
xxxが数値か文字列なら変数だろうと使えたはずです。オブジェクトの場合、同値の判定が基本型のように単純じゃないから無理。

860デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 10:50:39.85ID:LvTBogUR0
switchi( (button)sender) ){
case Button1: ~
case Button2:~
case Button3:~
}
こんな感じのことがしたい。

〜はMethod()でいいので、
void switch_tb()= {
{Button1, Method1}
{Button2, Method2}
{Button3, Method3}
}
switch_suru((button)sender);
こんなことできんか? 

861デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 10:52:21.97ID:LvTBogUR0
C#はメソッドの中のローカルメソッドってできへんの?

862デフォルトの名無しさん (ワッチョイ fffa-K3c3)2018/02/03(土) 11:00:14.66ID:VOrllN0n0
>>860
素直にButtonのNameプロパティ使え

863デフォルトの名無しさん (ワッチョイ ffc9-wbgk)2018/02/03(土) 11:01:41.64ID:Ns10a1iN0
>>861
C#7で出来るようになったよ

864デフォルトの名無しさん (ワッチョイ f783-j4Dg)2018/02/03(土) 11:41:19.78ID:ZFgrbY8z0
糞化が止まらないのか。

メソッド内メソッドは無くてもいい機能
メンバー封じ込めの方法はいくらでもあるし

ないほうがエラー見つけやすいと個人的には思う

866デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 12:24:29.31ID:LvTBogUR0
いい方法をみーつけ

867デフォルトの名無しさん (オッペケ Srcb-ggKF)2018/02/03(土) 12:24:59.79ID:ROxRBp/zr
バグだろwなにちょっと誤魔化そうとしてんのw

868デフォルトの名無しさん (スッップ Sdbf-uiFW)2018/02/03(土) 12:29:16.06ID:0dr4TWncd
>>864
言語の変化についていけないやつの糞化な

869デフォルトの名無しさん (ワッチョイ 9f60-w+Fq)2018/02/03(土) 12:30:20.78ID:nKXUpnsB0
>>860
Buttonと関数のDictionaryでできそう
試してないけどこんな感じでメソッド取ってくれば…

Dictionary<Button, Func<T, TResult>>

メソッド内メソッドはjavaでずっと使ってたけど
クラスを小さくしていくと使う場面は限られていく

871デフォルトの名無しさん (ワッチョイ 1705-CU+w)2018/02/03(土) 12:33:37.55ID:Iq/kHIZ+0
初心者っぽくていいじゃん
「この機能が存在する意味が分からないんですけど、何の役に立つんですか?」
って定番の質問じゃん

872デフォルトの名無しさん (ワッチョイ f783-j4Dg)2018/02/03(土) 12:40:45.58ID:ZFgrbY8z0
使ってる奴も糞ばっかになったな。新しい機能一つ覚えただけでマウンティングしだすアホとか。
なぜその機能が糞かが理解できない脳みそ。取り巻きからして残念な言語になってしまった。

873愛知人2018/02/03(土) 12:41:41.35
あらら、怒っちゃった(笑)

874デフォルトの名無しさん (ワッチョイ ff9a-HmOu)2018/02/03(土) 12:43:15.80ID:8oBsvnpG0
>>860
上は>>862に追加して
if (sender is Button) switch ((sender as Button).Name)
{
case "button1":
case "button2":
}
isの判定とasのキャストはControlとかToolStripMenuItemでも状況に合わせて

875デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/03(土) 12:45:57.31ID:DOsYwXsiM
今後も言語仕様はどんどん拡張されるよ
他の言語の有名なのどんどん取り入れてってカオスになっていく

個人的には範囲指定が欲しい
1..5か1:5みたいなの

876愛知人2018/02/03(土) 12:50:20.68
Enumerable.Rangeじゃだめなん?

877デフォルトの名無しさん (ワッチョイ 7717-j4Dg)2018/02/03(土) 12:51:56.63ID:8eNVn+fl0
>>874
せめてnameof使って書けよ

878デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/03(土) 12:56:57.86ID:DOsYwXsiM
foreach(var i in Enumerable.Range(1,5))

foreach(var i in 1..5)

どっちがいい?

879デフォルトの名無しさん (ワッチョイ 7717-j4Dg)2018/02/03(土) 12:58:29.57ID:8eNVn+fl0
圧倒的に上

880デフォルトの名無しさん (ワッチョイ d79b-CNA0)2018/02/03(土) 13:02:13.44ID:kCPWN5tp0
>>860
ButtonのTagにやりたいこと突っ込んどけ

881デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/03(土) 13:06:02.52ID:DOsYwXsiM
いい方法
buttun1.Click=>{Method1();};

882デフォルトの名無しさん (ワッチョイ f783-j4Dg)2018/02/03(土) 14:17:08.45ID:ZFgrbY8z0
どう書いたらいいか分からないのが糞言語の証左。

883デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 15:26:42.67ID:LvTBogUR0
証左、難しい言葉をしってるね。

>>881
エラー 2 '=>' は無効です。
ってなるが、、、

884デフォルトの名無しさん (スッップ Sdbf-Ismr)2018/02/03(土) 15:30:37.45ID:d68F6UhId
>>874
こういう実装を参考にして欲しくないな
コントロールのプロパティを自由に修正できなくなるじゃん

885デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 15:33:25.80ID:LvTBogUR0
var aa = ((Button)sender).Equals(button1) ? func1() :
((Button)sender).Equals(button2) ? func2() :
func2();
これどう?

886デフォルトの名無しさん (ワッチョイ ff9a-HmOu)2018/02/03(土) 15:34:12.79ID:8oBsvnpG0
>>884
ButtonのName変更ってどんな実装に必要なんだよ・・・

887デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 15:39:26.04ID:LvTBogUR0
>ButtonのName変更ってどんな実装に必要なんだよ・・・

最初はBUtton1だろ。出来上がって綺麗に整理するときにbtnSetParamとか分かりやすく書き換える。

888デフォルトの名無しさん (ワッチョイ ff9a-HmOu)2018/02/03(土) 15:40:26.14ID:8oBsvnpG0
>>885
それならEqualsじゃなくてsender==button1?でいいよ。キャストもいらない

889デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 15:40:45.84ID:LvTBogUR0
Button.Nameをつかうくらいなら、Tagに書き込んだ方がまし。

890デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 15:41:39.80ID:LvTBogUR0
>888
あ、そうなん?

891デフォルトの名無しさん (スッップ Sdbf-Ismr)2018/02/03(土) 15:43:31.84ID:d68F6UhId
実装後にスペルミスに気付いた、他の画面との兼ね合いで名称を統一することになった、仮の名前をちゃんとした名前に置き換えた、とか色々あるだろ
リフレクションでデータ取得する方針のせいでガチガチに名前が決められている画面を作らされたときの面倒さったらなかったわ

892デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 15:43:52.16ID:LvTBogUR0
キャストしないとインテリセンスがでないから、キャストしたほうがいいよ。

こんなの考えたが、
public class CaseAction
{
  public CaseAction(object @object, Action action)
  {
    Object = @object; Action = action;
  }
  public Action Action { get; private set; }
  public object Object { get; private set; }
}

public static class Extensions
{
  public static void Switch(this object o, params CaseAction[] caseActions)
  {
    caseActions.FirstOrDefault(x => x.Object == o)?.Action();
  }
}

やっぱり使いづらそうだなw

ところで書いててちょっと思ったけど、==演算子の動作って隠蔽(new)と同じように変数の型に
依存するのか、それともオーバーライドと同じようにオブジェクトの型に依存ずるのか、どっちだっけ?

894デフォルトの名無しさん (ワッチョイ 9f60-w+Fq)2018/02/03(土) 20:30:42.15ID:nKXUpnsB0
ふと思ったが、ふつうにそれぞれのボタンのイベントに実装したらダメなの

895デフォルトの名無しさん (ワッチョイ 9fb3-mP5N)2018/02/03(土) 20:34:51.83ID:Zh144c7Y0
>>894
ほとんど共通でボタン毎にちょっとだけ処理が違うとかじゃね

896デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 21:11:27.96ID:LvTBogUR0
グループボックスにボタンを貼り付けて、それをコピーして貼り付けると、イベントが同じところになるだろ。
だからエディット都合だな。
イベントで分けるのが一番いい方法かもしれない。w

897デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 21:13:35.51ID:LvTBogUR0
再表示するために tabPage1.Controls.Add(grp);で追加したgrpだけをクリアするにはどうしたらいいの?
tabPage1.Controls.Clear(); やるとボタンが消えてしまう。

898デフォルトの名無しさん (ワッチョイ 9f60-w+Fq)2018/02/03(土) 21:27:16.93ID:nKXUpnsB0
Controlsプロパティの型はControl.ControlCollectionで
そのクラスのドキュメントを見ましょう。
Remove(Control)というのがあったのでそれで削除できそうです。

899デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 21:35:57.81ID:LvTBogUR0
Removeを使うのはわかるんだが、要するになにがしたいのかというと
Linqを使ってControlsにAddしたGroupBoxだけを選択して、クリアしたいということ。
その書き方がわからない。ということ。

再表示とかクリアとか俺様な用語法されても何言ってるのか分からないよw

901デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 21:46:23.78ID:LvTBogUR0
tabPage1に貼り付けたコントロール群をLinqを使って選択的に消去したいということ。これでもわからん?

902デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/03(土) 21:49:30.86ID:DOsYwXsiM
>>901
言葉が不自由なんですね
わかります

903デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/03(土) 21:52:32.07ID:DOsYwXsiM
煽って悪かったけど
その書き方じゃ誰にもつたわらないよ

意味がわからないけどgrpを消したいならgrpをどこかに記録しておけばいい
終わり

はい次の方〜

904デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 21:54:28.34ID:LvTBogUR0
解決した。w

905デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/03(土) 21:55:50.09ID:DOsYwXsiM
>>904
よかったね
言葉遣いや表現力だけ見ると小学生かなって思うけど

906デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 21:57:07.86ID:LvTBogUR0
>903
Keyになる言葉の意味がわからないと解らないと思うよ。それが解る人にはわかる。

907デフォルトの名無しさん (ワッチョイ 9fd2-uiFW)2018/02/03(土) 21:59:39.27ID:bTwAHw5A0
なんでこいつこんなに偉そうなの?

908デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/03(土) 22:00:08.72ID:DOsYwXsiM
小学生だから

var toRemove = tabPage1.Controls.Cast<Control>().FirstOrDefault( .... );
if (toRemove != null)
  tabPage1.Controls.Remove(toRemove);

これを1行にしたいってことだったのかな?
拡張メソッド使ってControl側に自分を包含するコンテナのControlCollectionを
引数に撮るメソッドを定義しないとできない気がする

何でもいいけど、冗長でもいいから分かるように書いて欲しいよね

910デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 22:13:41.72ID:LvTBogUR0
そんな書き方しかでけん?

911デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/03(土) 22:16:15.65ID:DOsYwXsiM
>>897
これでスタートして答えをもらおうとして失敗

次に >>899 要するにと言ってるけど何も要してないどころか条件を追加してる

そして これ >>901 への流れ

トンチンカン
最初のレスでなぜ伝わると思ったのかが分からない

無理矢理だなあ
Action<Control> removeMe = x => x?.Parent?.Controls.Remove(x);
removeMe(
tabPage1.Controls.Cast<Control>().FirstOrDefault( .... )
);

913愛恥人2018/02/03(土) 22:34:23.85
最初のレスだけで理解できる俺は天才なのか

むしろエスパー

915デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/03(土) 22:43:30.44ID:DOsYwXsiM
そして明後日の方向のレスに食いついてる

916デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 22:54:26.09ID:LvTBogUR0
private void button3_Click(object sender, EventArgs e)
{
var grps = tabPage1.Controls.Cast<Control>().Where(c => c is GroupBox );
foreach (var grpB in grps)
{
tabPage1.Controls.Remove(grpB);
}
}
これで一回で消えないのは何故だろう? grpsには全部のグループボックスが
入っている。しかしforeachでところどころ飛ばしてしまう。

917デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 23:19:59.77ID:LvTBogUR0
あっ、謎がとけた。けっこう落とし穴だな。

918デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 23:32:01.66ID:LvTBogUR0
ケツから消していくとうまくいくんだろきっと。
まえからでもこうやるとうまく行く。
    private void button3_Click(object sender, EventArgs e)
         {
             var grps = tabPage1.Controls.Cast<Control>().Where(c => c is GroupBox );
             List<GroupBox> gg = new List<GroupBox>();
             foreach (var grp in grps)
             {
                 gg.Add(grp);
             }
             foreach (var grpB in gg)
             {
                 tabPage1.Controls.Remove(grpB);
             }
          }

919デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 23:33:46.33ID:LvTBogUR0
さて、原理は分ったが、これを1行で書くにはどうするのか?

920愛恥人2018/02/03(土) 23:40:30.32
逆にグループボックス以外を抽出してからパネルの中身全消去からの追加とかはどうかな(>_<)

921デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/03(土) 23:40:55.06ID:OIRW+vs20
>>919
改行全部消せばいいじゃん

922デフォルトの名無しさん (ワッチョイ bf7f-qlLX)2018/02/03(土) 23:43:21.17ID:pHRpw+FT0
>>918
>>916のLinqにReverse()追加すれば

923デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/03(土) 23:43:41.06ID:OIRW+vs20
>>919
なんで1行にこだわってるの?
どれだけ読みにくいソースにできるか研究でもしてんの?

924デフォルトの名無しさん (ワッチョイ 179d-mIUl)2018/02/03(土) 23:49:22.30ID:LvTBogUR0
>920 それ、俺もちょっと考えた。
>921 それは最終手段にとっておいたのに。

Reverse()ってあるんか? それだ!!

もう気が済んだかもしれんけど、無理に何でもインラインで書こうとして
可読性落とすなんて愚の骨頂で、普通にメソッドに外だし(別に拡張メソッドじゃなくてもいいけど)
した方がいいと思うけどね

public static class Extensions
{
  public static void RemoveChildren(this Control control, Func<Control, bool> predicate)
  {
    var controls = control.Controls;
    controls.Cast<Control>().Where(predicate).ToList().ForEach(x => controls.Remove(x));
  }
}

926デフォルトの名無しさん (ワッチョイ f7f7-NsDz)2018/02/04(日) 05:54:59.74ID:vxeWu10H0
https://qiita.com/taigaaa2/items/7f05ad950a57033892ae
この方法で値を保存しているのですが
cドライブに保存されている様でプログラムを他のPCに移すなどすると値が保持されていません
どうすれば他のPCでも記憶した値を使える様になるでしょうか

927デフォルトの名無しさん (ワッチョイ ff81-CU+w)2018/02/04(日) 06:23:40.03ID:ldOBh/kr0
ファイルをコピーする

928デフォルトの名無しさん (ワッチョイ ff81-CU+w)2018/02/04(日) 06:38:53.27ID:ldOBh/kr0
真面目に答えるならサーバーやクラウドストレージのSettingsを読み書きするSettingsProviderを自作することだが
初心者にはひと月ふた月かかるだろうしはっきり言って時間の無駄

929デフォルトの名無しさん (ワッチョイ 7703-skLA)2018/02/04(日) 08:14:14.99ID:ge7PbLBn0
真面目な答の方が愚策という変な人、というかおそらくバカ

930デフォルトの名無しさん (ワッチョイ ffc9-wbgk)2018/02/04(日) 08:55:21.88ID:qZv4HzKZ0
>>926
ユーザー共通になっちゃうけど、スコープをユーザーからアプリケーションに変更すればexeと同じディレクトリに保存するよ

931愛恥人2018/02/04(日) 10:35:42.99
>>762でユーザーにしたら動いた原因はなに?

932デフォルトの名無しさん (ワッチョイ 9f19-iu0y)2018/02/04(日) 12:47:08.55ID:+N3aAgKo0
例えば.net 4.7で作られたプログラムを4.5しか入ってないPCで動かすとどうなりますか?

933デフォルトの名無しさん (ワッチョイ 9fd2-uiFW)2018/02/04(日) 13:40:36.37ID:zMXPgQ7i0
うごかない

934デフォルトの名無しさん (ワッチョイ 9fd2-uiFW)2018/02/04(日) 13:41:03.95ID:zMXPgQ7i0
てか4.5とかサポート切れだから論外だし

935デフォルトの名無しさん (ワッチョイ 179d-jn1r)2018/02/04(日) 13:48:00.41ID:HudK1GnQ0
>ユーザー共通になっちゃうけど、スコープをユーザーからアプリケーションに変更すればexeと同じディレクトリに保存するよ

アプリケーションじゃ動かんかったな。動くこともあるんだろうな。意味がわらかんし、マニュアル読んでも書いてないし
それにビルドで設定値が消えるから、、、最初から打ち直し。w
こんな意味の解らん機能はつかわない方がいい。JSON.NET使った方が遥かに楽。というのが俺の感想だ。

936デフォルトの名無しさん (ワッチョイ bf7f-qlLX)2018/02/04(日) 14:04:22.94ID:CmrmETVT0
>>932
開発環境が4.7でも対象フレームワークを4.5に設定してビルドすれば、4.5が入ってるPCでも動く。
ただし、4.7でないと動かない機能は使えなくなる。

937デフォルトの名無しさん (ワッチョイ 179d-jn1r)2018/02/04(日) 14:13:13.77ID:HudK1GnQ0
public static void RemoveChildren(this Control control, Func<Control, bool> predicate)
  {
    var controls = control.Controls;
    controls.Cast<Control>().Where(predicate).ToList().ForEach(x => controls.Remove(x));
  }
これは非常にスマートだという感じだが意味わからんなー。
predicate: 対象となるコントロールの場合はTrueを返す関数?
ToList() :predicateで判定したコントロールのListを作る。
ForEach:ToListからひとつづつコントロールをとりだしてxにセット、Removeする。
という意味だろうか?

Funcって初めて見た。いま調べてみるとよく使う標準デリゲートらしい。であれば
 controls.Cast<Control>().Where(ラムダ式).ToList().ForEach(x => controls.Remove(x));
で一行でできる筈だな。
つまり
 controls.Cast<Control>().Where(x=>x is GroupBox).ToList().ForEach(x => controls.Remove(x));
で実験してみると
tabPage1.Controls.Cast<Control>().Where(c => c is GroupBox).ToList().ForEach(x => tabPage1.Controls.Remove(x));
わーいうまく行ったぞ。

938デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/04(日) 14:22:22.77ID:2sg7PnbOM
日記はちらしのうらにでm…

939デフォルトの名無しさん (ワッチョイ 9fd2-uiFW)2018/02/04(日) 14:22:36.96ID:zMXPgQ7i0
>>936
>.net4.7で作られた
をどう解釈するかだな

940デフォルトの名無しさん (ワッチョイ 179d-jn1r)2018/02/04(日) 14:24:43.87ID:HudK1GnQ0
Castを無くすために
tabPage1.Controls.OfType<GroupBox>().ToList().ForEach(x => tabPage1.Controls.Remove(x));
これでも動くのに、

tabPage1.Controls.OfType<GroupBox>().ForEach(x => tabPage1.Controls.Remove(x)); 
これは動かないのはなぜ?

941デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/04(日) 14:26:44.56ID:2sg7PnbOM
実装してないものが使えるわけないだろ
魔法じゃないから

942デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/04(日) 14:30:00.97ID:2sg7PnbOM
そもそも列挙してる最中のものを削ると列挙に失敗する可能性が高い

最初から何番目の要素を取り出す
次はそれプラス1の要素としてるのに
1番目から消すと何番目というのがずれるだろ?

一番目を取り出すそれを消す
○×▼

×▼

二番目を取り出すそれを消す
×▼

×
三番目は取り出せない

943デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/04(日) 14:31:09.88ID:2sg7PnbOM
ずっと一番目を消すと全部消える

944デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/04(日) 14:34:48.14ID:2sg7PnbOM
ToList()で控えを作る

できたList  ○×▼ をみて対象を消していく
こちらは消し終わってList内容はそのまま

945デフォルトの名無しさん (ワッチョイ 179d-jn1r)2018/02/04(日) 14:35:11.95ID:HudK1GnQ0
>>941
いやまあそうなんだが、疑問というのは
var grps = tabPage1.Controls.OfType<GroupBox>();

varじゃわからないのだが、この型は何なの? Listじゃないよね。

946デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/04(日) 14:36:12.24ID:2sg7PnbOM
>>945
IDE使えばでるだろ
カーソル当てろ

947デフォルトの名無しさん (ワッチョイ 9fd2-uiFW)2018/02/04(日) 14:36:23.56ID:zMXPgQ7i0
>>945
メモ帳で開発してんの?

948デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/04(日) 14:37:00.62ID:2sg7PnbOM
可能性が高いと書いたのは列挙の方法がちがうかもしれないから 

949デフォルトの名無しさん (ワッチョイ ffc9-wbgk)2018/02/04(日) 14:37:31.37ID:qZv4HzKZ0
>>945
Enumerable.OfType<TResult> メソッド
https://msdn.microsoft.com/ja-jp/library/bb360913(v=vs.110).aspx

950デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/04(日) 14:38:10.32ID:2sg7PnbOM
ここは個別指導スレじゃないだろ
いい加減にわきまえろ

質問じゃなくて誰かに教えてもらいたいなら金を払って個人指導受けろ

951デフォルトの名無しさん (ワッチョイ ffc9-wbgk)2018/02/04(日) 14:41:30.60ID:qZv4HzKZ0
IEnumerableやyield returnの動作知らずにLINQ使うのって怖くないのかな

952デフォルトの名無しさん (ワッチョイ 9fd2-uiFW)2018/02/04(日) 14:41:58.66ID:zMXPgQ7i0
>>949
相変わらずひどい翻訳やな

953デフォルトの名無しさん (ワッチョイ 179d-jn1r)2018/02/04(日) 14:50:13.12ID:HudK1GnQ0
var grps = tabPage1.Controls.OfType<GroupBox>();
var ggg = tabPage1.Controls.OfType<GroupBox>().ToList();

IDEでみるとgrpsは
{system.Linq.Enumerable.OfTypeIterater<GroupBox>}
gggは
count=10
と出る。

954デフォルトの名無しさん (ワッチョイ 9fd2-uiFW)2018/02/04(日) 14:53:40.22ID:zMXPgQ7i0
わろた

955デフォルトの名無しさん (ワッチョイ 179d-jn1r)2018/02/04(日) 14:53:56.98ID:HudK1GnQ0
>IEnumerableやyield returnの動作知らずにLINQ使うのって怖くないのかな

何故怖いの? 
IEnumerableとEnumerableの違いを端的に説明すると、どういうこと?

956デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/04(日) 14:55:56.43ID:2sg7PnbOM
キーワードがわかってるなら聞かないで自分で勉強したらいいのに
勉強したり努力してわからないならここで聞けばいい

957デフォルトの名無しさん (ワッチョイ 179d-jn1r)2018/02/04(日) 14:59:19.86ID:HudK1GnQ0
Enumerable.OfType <GroupBox > grps = tabPage1.Controls.OfType<GroupBox>();
これはできないよ。エラーになる。

List<GroupBox > ggg = tabPage1.Controls.OfType<GroupBox>().ToList();
これはOK

958デフォルトの名無しさん (ワッチョイ 179d-jn1r)2018/02/04(日) 15:01:43.20ID:HudK1GnQ0
>Enumerable.OfType<TResult> メソッド

あっと見落としてた、型じゃないのか。メッソドか。

959デフォルトの名無しさん (ブーイモ MMcf-+DFt)2018/02/04(日) 15:01:43.24ID:2sg7PnbOM
ダメな初心者=エラー内容を読まないし調べない

960デフォルトの名無しさん (ワッチョイ 9f19-iu0y)2018/02/04(日) 15:05:12.21ID:+N3aAgKo0
>>936
ありがとうございます。
ターゲットフレームワークが4.7、動かそうとしているPCが4.5、プログラムの内容が4.5までで実現できるwinformsの場合でも起動すらできないですか?

961デフォルトの名無しさん (ワッチョイ 179d-jn1r)2018/02/04(日) 15:12:42.24ID:HudK1GnQ0
>例えば.net 4.7で作られたプログラムを4.5しか入ってないPCで動かすとどうなりますか?
4.7が動作しないPCはない(筈だ)から、4.7をダウンロードしたらいいだけだよ。
4.7をシステムに追加すれば問題なしに完璧に動作するよ。

962デフォルトの名無しさん (ワッチョイ bf7f-qlLX)2018/02/04(日) 15:17:08.79ID:CmrmETVT0
>>960
クライアントがターゲットフレームワーク未満の場合は、起動時にエラーダイアログが出て終了する。
その内容だったら、ターゲットフレームワークを4.5に変更すれば良いのでは。
厳密には、4.5はサポート切れてるから、4.5.2に設定した方が良いと思うけど。

963デフォルトの名無しさん (ワッチョイ 979a-it6M)2018/02/04(日) 15:18:11.54ID:UjaEvCGn0
ワッチョイ 179d にもう触んな

964デフォルトの名無しさん (ワッチョイ ff81-CU+w)2018/02/04(日) 15:43:41.74ID:ldOBh/kr0
魚類に釣り絵に噛みつくなと説いてもムダムダ

965デフォルトの名無しさん (ワッチョイ 9f19-iu0y)2018/02/04(日) 15:55:30.93ID:+N3aAgKo0
>>961,962
よく分かりました。ありがとうございます

なんとなくpublicならプロパティ
privateならフィールドにするように
しているんだが

public なフィールドやprivateなプロパティって使うことある?

967デフォルトの名無しさん (ワッチョイ 9fb3-mP5N)2018/02/04(日) 16:06:43.52ID:88eIJAAv0
>>951
> IEnumerableやyield returnの動作知らず
そいつらは実装者には必要だけどLINQ使う側には必要ないだろ

968デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/04(日) 16:11:21.66ID:nSH8cPbn0
そもそもこんな疑問でちゃう時点で機能としての出来が良くないんだから
使わない俺の大勝利

969デフォルトの名無しさん (ワッチョイ ff81-CU+w)2018/02/04(日) 16:12:24.36ID:ldOBh/kr0
頭の出来がよくないの人のせいにするとは

970デフォルトの名無しさん (ワッチョイ f7f7-NsDz)2018/02/04(日) 16:12:44.65ID:vxeWu10H0
>>930
スコープがアプリケーションだと書き込みができない様で、書き込みのできる方法はありますでしょうか?

アプリケーションでいじった値をアプリケーションのあるフォルダなどに保存する方法が知りたいです
visualstudioで生成したDebugフォルダをコピーするだけで同じ設定のものがコピー出来る様になりたいです

971デフォルトの名無しさん (ワッチョイ bf9e-QBDq)2018/02/04(日) 16:19:07.58ID:YE7Mv6Fc0
>>824
そんなレベルの疑問を自力で解決出来ないのに独自言語なんて作れるのか?

972デフォルトの名無しさん (スッップ Sdbf-uiFW)2018/02/04(日) 16:22:45.65ID:s5exZTb6d
>>968
使ってることに気づいてないアホがこれ

>>970
>>930を真に受けちゃダメ

MSはバイナリをProgram Files以下のディレクトリにインストールして使うのが
標準的な使い方だと考えているので、アプリケーション設定も当然バイナリと同じフォルダに
保存する方法は用意されてない。(言うまでもないけど、Program Files以下のディレクトリに
ファイルを書き込むには特別な権限が必要)

バイナリをUSBメモリに入れて持ち歩くような使い方を想定しているようなアプリなら
当然バイナリと同じディレクトリに設定ファイルを保存するのもありだけど、
そういう場合は自分でそういうコードを書くしかない

974デフォルトの名無しさん (スッップ Sdbf-uiFW)2018/02/04(日) 16:32:40.51ID:0pkor+t3d
>>973
嘘まみれ

975デフォルトの名無しさん (ワッチョイ 9f06-wbgk)2018/02/04(日) 16:43:23.86ID:RXHjrV0B0
>>970
つ ふっかつのじゅもん

.netの前はアプリなどがシステムフォルダににDLLを入れていた
それでアンインストールなどを繰り返すとどれがどれに依存しているかわからなくなった
これをDLLヘルという

これを教訓にしてアプリではdll依存を極力避け
アプリの配布はビルドしたものを適当な場所にxcopyしただけで可能なように設計された

977デフォルトの名無しさん (ワッチョイ 17e6-CU+w)2018/02/04(日) 18:11:17.96ID:IdDneOZ60
ApplicationSettingsみたいなゴミを使うの止めればいいんじゃないの
何でこだわってるの?
ApplicationSettingにこだわらなければ10分で済む話だよね?
なんで半日も一日も掛けてるの?
不死身で時間が無限にあるの?
無職で時間が余ってるの?
休日ぼっちで暇なの?
ねえなんで?

978デフォルトの名無しさん (ワッチョイ f7f7-NsDz)2018/02/04(日) 18:13:05.97ID:vxeWu10H0
無職です申し訳ありません

そもそもアプリケーション設定の解説なんていくらでもweb上に存在するのに
どうしてまずそれらを読まずに最初からできもしないことをできるはずだと思い込んでるのか、
そこが不思議。

980デフォルトの名無しさん (ワッチョイ f7f7-NsDz)2018/02/04(日) 18:17:04.23ID:vxeWu10H0
アプリケーション設定には特にこだわりはありません
保存さえ出来れば構いません
出直してきます
申し訳ないです

981デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/04(日) 18:17:36.06ID:nSH8cPbn0
オススメはCSVファイルの保存で

982デフォルトの名無しさん (ワッチョイ 9fd2-uiFW)2018/02/04(日) 18:31:08.74ID:zMXPgQ7i0
>>981
キチガイ

983愛恥人2018/02/04(日) 18:49:17.79
>>935
バインド出来ないじゃん(>_<)

984デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/04(日) 18:50:28.24ID:nSH8cPbn0
>>982
エクセルで編集できて便利じゃん

985デフォルトの名無しさん (ワッチョイ ff9a-HmOu)2018/02/04(日) 18:50:55.56ID:YkvE7FF30
>>980
自分で貼ったリンクに保存場所書いてあるし
プロジェクト名がHogeのとき
C:\Users\{User名}\AppData\Local\Hoge\...\1.0.0.0\user.config
でProperties.Settings.Defaultって書いてあるんだからググったら
パスの取得の仕方は
https://dobon.net/vb/dotnet/programing/mysettings.html
に書いてある
このパスを必要な場所にコピーしたらいいだけ
俺の場合はこれの使い方を把握できなかったんで自分でパーサー書いた方が早かったなw

986デフォルトの名無しさん (ワッチョイ f7f7-NsDz)2018/02/04(日) 19:03:57.70ID:vxeWu10H0
>>985
プログラムを別のマシンに移しても設定が保存されるようにしたいのです
でも保存場所を変えることは出来ないんですよね?

987デフォルトの名無しさん (ワッチョイ 9f06-wbgk)2018/02/04(日) 19:34:44.52ID:RXHjrV0B0
>>986
最近の流行りだと、設定を捨ててjson.netってやつで管理する
上記のそれはクラスオブジェクトをテキストにする(シリアライズと言う)ソフトなので
コレを普通のテキストファイルとして読み書きするだけです

988デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/04(日) 19:45:17.78ID:nSH8cPbn0
>>987
何の会社かよくわからないし
MSのCSV読み込みにしといた方が良くない?

989デフォルトの名無しさん (スッップ Sdbf-uiFW)2018/02/04(日) 20:09:49.43ID:fm2Gs9xAd
>>984
Excelでの編集が必要なほどデータが大量ならDB使えよ

990デフォルトの名無しさん (スッップ Sdbf-uiFW)2018/02/04(日) 20:10:29.46ID:fm2Gs9xAd
>>987
お前もなんか勘違いしてんぞ

991デフォルトの名無しさん (ワッチョイ 9fd2-uiFW)2018/02/04(日) 20:11:34.16ID:zMXPgQ7i0
>>988
JSON.NET知らないのはさすがにモグリやろwww

>>986
一番簡単なのは、永続化(保存)したい情報だけをまとめたクラスを作って
シリアル化/逆シリアル化する方法。

シリアル化/逆シリアル化のための機能は.NETの標準ライブラリにも用意されてるので
わざわざサードパーティーのを使うことない

しかし、意地悪なのかマジなのか知らんけど、
なんか人を惑わすようなこと書く人ばっかりで質問者も大変だなw

993デフォルトの名無しさん (ワッチョイ 9fd2-uiFW)2018/02/04(日) 20:19:44.54ID:zMXPgQ7i0
>>992
普通にappsettings.json使えばいいのにね

994デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/04(日) 21:44:52.13ID:nSH8cPbn0
>>991
えー、知らない
すぐ死ぬことがない根拠ある?

995デフォルトの名無しさん (ワッチョイ 179d-jn1r)2018/02/04(日) 21:48:45.96ID:HudK1GnQ0
CSV:一般的でシンプルで扱いやすい。
INIファイル:以前の標準、いまでも使えるがCOMオブジェクトロードする必要がある。フォーマットは直観的で使いやすい。
Json:上記に比べると、オブジェクトをそのまま保存可能というメリットがある。フォーマットは上記よりわかり難いが特に問題はない。
XML:汎用性があるが、直観的なフォーマットではないのでわかり難い。普通はこんなものをたいそうに使う必要はない。

などがあって、基本はCSVが標準だろうと思う。しかしクラスをそのまま保存するような場合はjsonがおすすめだ。例えば
カラーコードやフォントを保存する場合にはCSVだと、いちいちテキストなどに変換する必要があるが、jsonのシリアライズを
使えば何にも考えずに保存できる。MSもJnonのIFを用意しているが、Json.netの方が優れているのでそちらの方を使った方がいい。

996デフォルトの名無しさん (ワッチョイ f7e3-uppE)2018/02/04(日) 21:53:43.05ID:nSH8cPbn0
>>995
json.netは俺が信用できないし
エクセルで編集できないしやめたほうがいいよ

997デフォルトの名無しさん (ワッチョイ 9fd2-uiFW)2018/02/04(日) 21:54:18.80ID:zMXPgQ7i0
>>994
Microsoft自身もJSON.NETを製品に使ってる(.NET Core CLIとか)

998デフォルトの名無しさん (スプッッ Sd3f-uiFW)2018/02/04(日) 21:55:08.37ID:FsQDUxLEd
>>996
お前が信用してなくてもMicrosoftは信用してる

999デフォルトの名無しさん (スップ Sd3f-uiFW)2018/02/04(日) 21:56:36.47ID:l4jEutiZd
>>996
はいキチガイ

1000デフォルトの名無しさん (ワッチョイ 9fd2-uiFW)2018/02/04(日) 21:57:51.63ID:zMXPgQ7i0
>>996
お前の信用なんか誰も求めてない

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 67日 2時間 33分 53秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。