[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 10/29 16:42 / Filesize : 310 KB / Number-of Response : 1032
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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

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

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

■コードを貼る場合は↓を使いましょう。
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
referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

96 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 12:58:41.12 ID:luJyaFhBa.net]
>>81
まあ、一言でいうと愚問だねw
そんなこと考えても時間のムダ。

真面目な話、その疑問はそのまま放置して前に進む方がいいと思う。

97 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 13:08:12.31 ID:9jg3Q7S00.net]
>>93
オブジェクト指向ってやつか!
オブジェクトを使うと結果がない処理にも意味があるってこと?

>>94
まとめるなら「結果がない処理の価値がわからない」って感じかなあ

>>95
詰め込み教育への皮肉だと思うけど正直分かりにくいかも
もし本気で言ってるならさすがに時代遅れだから考え直したほうがいいよ

98 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 13:26:58.95 ID:luJyaFhBa.net]
>>96
経験が足りないために起こる疑問は経験を詰むことでしか解決しない。

構造化プログラミングの意義もOOPの意義も、体感できるのは
実際にコードを自分でコードが書けるようになってから。
本で読んだだけで最初からそれが分かるのは一部の天才だけ。

逆にいえば、>>81の疑問は頭の良い人が考えた難しい理論を理解しないと
解決しないような問題じゃなく、誰でも体験すれば自然と分かる程度の話ってこと

99 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 13:48:46.74 ID:o6RSJKQdd.net]
>>92
0と1?何を言ってるのかわからん
14時に集合ってメール出して、全員からわかったみたいな返信きてもうざいだろ?
だから、14時集合(返信不要)ってメールをおくる方が受け取る側も返信しなくていいし、送る側も無駄な受信を減らせるしでwinwin
この辺りは経験だったりセンスだろうな

100 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 14:03:32.43 ID:0EVFmTU60.net]
>>96
成否の観点では単にフィールドの値を設定するメソッドを鑑みても
メモリに書き込み失敗の概念があっても、代入に失敗の概念はない
設定前の値を返すにしても、わざわざ退避する処理を強制するのか?

想定外の発生は基本的に例外をぶん投げるものだし
常人が気にしない様な事を考えて躓いてそうである

101 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 19:05:49.61 ID:W6WTRmLV0.net]
関数型プログラミングの才能があるな

102 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 20:30:59.54 ID:kti4nAgp0.net]
>>96
戻り値がないのは常に「成功」を返す関数と考えて良い
C#では失敗した場合は例外を投げるので、成否を戻り値で判定することはない

C言語とかgoみたいに例外という概念がない言語は、成功したかどうかが戻り値に入ってることが多い
それでも絶対に失敗しないか、失敗したらプログラムが強制終了するような処理は戻り値がない場合もある

103 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 21:05:01.73 ID:Yi5F0BBw0.net]
>C#では失敗した場合は例外を投げるので、成否を戻り値で判定することはない
えぇ…

104 名前:デフォルトの名無しさん [2018/04/20(金) 21:14:39.58 ID:7WlEIf700.net]
>>101
> C#では失敗した場合は例外を投げるので、成否を戻り値で判定することはない
ケースバイケース。何でもかんでも例外にしちゃ駄目。



105 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 21:42:51.61 ID:9jg3Q7S00.net]
>>97
とりあえず>>95が本気なのとそれが思考停止の詰め込み教育信奉じゃないのは分かったよ
偉そうなこと言ってごめん

>>98
自分もちゃんとは理解してないけどコンピューターは0と1だけで動いてるらしい
でも初心者用スレで

106 名前:出す話ではなかったと反省
メール送信の例は分かりやすい!と思ったけど本当に結果が何もないと送信済みマークも付かないのでは・・・?

>>99-103
詳しい人でも意見が割れるくらい難しい問題なのね
>>100は皮肉なんだろうけど意味どころか自分に向けられた言葉なのかも分からないから反応に困る・・・
[]
[ここ壊れてます]

107 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 21:52:31.13 ID:7WlEIf700.net]
>>104
元の発言の「結果が無い」って言葉を勘違いしてる。
関数で処理した結果を返り値と言う形で関数の呼び出し元に伝える必要が無いって意味だ。
ちゃんと意味のある結果は発生している。

108 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 22:00:49.23 ID:kti4nAgp0.net]
>>102-103
書き方が変だった
C言語やgoと比べて成否を例外で処理することが多いから戻り値がなくても良い場合が多い程度の意味で言った

>>104
メール送信の結果は戻り値ではない方法で返しているというだけ
C#には例外やイベントのように色々な機構があるから、とりあえず細かいことは気にせず先に進んだ方がいい

109 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 22:22:51.74 ID:UaVetxYYM.net]
関数という言葉に惑わされてるということかな

メソッドは数学で言う関数そのものじゃない
(y=x+1とかそういうのじゃない)
やることを順番に書いてあるもの
サブルーチン
戻り値が定義されてたそれを返すだけ

ほかの言語で戻り値がないものは関数と区別してる言語もあるけど
わざわざ二種類つくるより戻り値なしで共通にしてある

110 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 23:07:04.14 ID:0EVFmTU60.net]
>>104
その辺は想定外と書いたように>>103よろしくケースバイケースだよ
十分想定され例外情報すら要らんなら戻り値で成否を返す事もあるし
InvalidProgramExceptionみたいに言語レベルでは処理できない物もある

話が逸れたけどOSレベルでは例外を発生させる余地などが有ったとしても
プラットフォーム次第になったりと言語レベルで突き詰めない場合は多い

111 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 23:38:50.80 ID:iIb0CR1w0.net]
いろいろ調べたり考えたりしたのですが、解決出来ないので質問します。
https://dotnetfiddle.net/SoCII1
このようなコードがあって
List<ITest>にいれていったときに
ListのXだけを全て足して返す関数は出来たのですが、今後ITestのプロパティは増える予定で、それぞれに足して返す関数をつけたいです。
そのときに似たようなコードになるので一つに纏めようとしたのですが中々できず困っています。どのような書き方をすればいいでしょうか?

112 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 02:21:21.95 ID:lHgu/nQp0.net]
>>109
基本的にはプロパティを動的に指定するのはリフレクションとかDictionaryを駆使とか、何らかの形でコストを払うことになると思う
状況にもよるけど、コンパイル時に確定してるならT4テンプレートとかコード生成とかで対応するのが一番正しいんじゃないかな

113 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 02:34:40.78 ID:m0t/bmNLa.net]
>>109
そんなものは自作しなくてもList自身(正確にはIEnumerable<T>だけど)が持ってるw
名前もそのまんまSumだからよくMSDNを見てみ
https://msdn.microsoft.com/ja-jp/library/6sh2ey19.aspx

114 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 03:42:29.63 ID:MaG6OThU0.net]
>>111
んー、エスパーだけど、質問者はプロパティをforeachみたいに回して全てにsumするようなのをプロパティの数に限らず1行で書きたいってことじゃね?



115 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 07:59:48.29 ID:z4AHgN+yd.net]
>>104
メソッドの戻り値とコンピュータの世界は全く関係がない
低級のマシン語をわかりやすくするための高級言語なんで初心者用スレで〜というよりは見当違いなことを言ってる

っで、結果とは低級レベルでの結果とメソッドレベルの結果のどちらをさしている?
低級レベルでの結果が表に出てこないのは普通のこと
メソッドレベルで見てもメールの送信済マークを含めてないのでメソッド戻り値の返さない

116 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 08:37:04.35 ID:i7kmKmol0.net]
>>110
リフレクションについて調べて何とか出来ました!ありがとうございます!
>>111,>>112
もう少し具体的に書いていれば良かったですよね・・・今後質問するときはもっと詳しく書くので、そのときはよろしくお願いします!

117 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 10:09:06.82 ID:XwcbmKc5a.net]
連続時間的な関数ってあります?

118 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 10:52:04.99 ID:WnG+wEwt0.net]
連続時間 is 何

119 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 11:00:42.32 ID:k3YYD8ov0.net]
エポック秒のことかなぁ

120 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 12:09:05.27 ID:Y1+gKOzZa.net]
アナログメーター的なやつです

121 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 12:39:56.06 ID:k3YYD8ov0.net]
>>118
プログレスバーでググってみてはどうか

122 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 13:49:43.77 ID:gbvJ8fZ/a.net]
時空連続体と空目した

123 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 18:22:05.73 ID:V5ZTEj450.net]
プログレスバーってもろデジタルメーターじゃないですか

数百〜数千の筋繊維を一本の糸で表現できるような関数はないですかね

124 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 18:29:18.80 ID:LQq77Lfe0.net]
you!画像ファイル扱っちゃいなyo!



125 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 18:52:17.79 ID:rKiuu7+10.net]
>>121
>>118のアナログメーターも全く関係ないんだけど?
筋線維もよく意味が分からないし、糸の振動の軌跡の描画みたいなことやりたいのなら自分で作るしかないよ

126 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 00:35:03.08 ID:XfnBBJY5M.net]
プリンタの印刷設定の縦横を変更したいです。
DefaultPageSettings.Landscape プロパティから変えられるのは確認しましたが
一時的なものではなく、プログラムが終了したあとも変わったままにしておきたいのですが
なにか方法はないでしょうか?
bbs.wankuma.com/index.cgi?mode=al2&namber=2377&KLOG=2
このサイトも参考にしてSetHdevmodeなどもやってみましたが、プログラム終了後にもとに戻ってしまいます。
Windows7,10 64bitです

127 名前:デフォルトの名無しさん [2018/04/22(日) 00:38:42.31 ID:2TRizD7z0.net]
筋繊維を糸で表現ってそれもう物理演算じゃん

128 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 01:10:17.94 ID:6eouzp2p0.net]
何がしたいのかよう分からん
>数百〜数千の筋繊維を一本の糸で表現できるような関数
が欲しいなら
「アナログメーター」なんて単語は出てこんと思うのだが

なんか特殊な知識が必要なことやってるなら
なおさらキチンと説明しないといかんだろう

129 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 02:16:18.41 ID:I1dKrIqPa.net]
>>124
次回そのプログラムを起動した時も同じ設定が適用されるようにしたい、
という意味なら、Landscape を永続化すればいいだけでしょう。

同じ設定が他のプログラムにも適用されるようにしたい、って意味なら、
たぶんそんなことは出来ないんじゃないかと...
よく知らんけど

130 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 07:35:23.33 ID:XfnBBJY5M.net]
>>127
後者の方を考えています。
なにか方法があればいいのですが、、、

131 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 09:24:44.12 ID:RctEGmkE0.net]
他のプログラムでも同じ設定を使いたいんならプリンタドライバの設定変更以外に方法はない
てかそれってC#関係ないよね

132 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 19:36:51.14 ID:YjWQK7FP0.net]
[[['[] ]]] { {] ]][ '[][][] [][] [][][]  [] '[] []

133 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:23:13.30 ID:AB//w8nmp.net]
c#勉強始めたての者です。
indexofで文字列を検索しようとしているのですが、長文を検索するとエラーが出てしまいます。

MSDNを見ると戻り値がint32とあり、戻り値がintの範囲を超えるとlongエラーになるように推測していますが対応方法はあるのでしょうか。

134 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:24:53.81 ID:AB//w8nmp.net]
すみません上記文中のlongは誤植ですので読み飛ばしてください。



135 名前:デフォルトの名無しさん [2018/04/22(日) 21:30:18.18 ID:PsQCMKRd0.net]
そう言われるともうlongしか見えない

136 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:37:33.88 ID:hhQLBFvv0.net]
文字数がintに収まるように文字列を切り出しながら検索すればいいんじゃないか
もちろん切れ目に検索対象の文字列が有るときの対策して切り出さなきゃならんけど

137 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 22:10:29.71 ID:VNNE7LSc0.net]
ありがとうございます。
matchメソッドというのを見つけました。
全然見つからなかったのに投稿し出来すぐ見つかるものですね。
matchで出来なかったらint分割にトライしようと思います。

138 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 22:23:25.89 ID:f9F/Sp5R0.net]
フォーム上のコントロールを、プログラムから参照するいい方法はないでしょうか

SplitContainer上に配置した合計20個のチェックボックスについて、textをファイルから
読み込んだものに動的に変更したいと考えています

手元の書籍(作って覚えるc#)では、forループの中で

splitContainer1.Panel2.Controls[i].Text = mistakeText;

という形でやっていましたが、今回自分で用意したフォームはほかにもテキストボックスや
ラベルがあり、うまくチェックボックスを対象としてくれません
デザイン画面で配置した順番にやや依拠しているようですが、最後においたものほど添字が
小さそうだ、程度しかわかりません
今後デザインを変更する、あるいはチェックボックスを増やす可能性を考えると、何らかの
プロパティで順番を指定できるといいなと思いますが、発見できませんでした

Form1.Designer.cs のメンバ変数宣言欄に記載がある順番のように思えますが、IDEが
自動生成したコードを並べ替えるのも何やら気持ち悪く、今の所手を出していません

今回はチェックボックスですが、ほかにもラベルを順に参照するとか、テキストボックスを
順に参照する方法などあれば、教えていただけると助かります

なお、今回のフォームでは、とりあえずチェックボックスの名前は初期値(checkBox1など)に
なっています

139 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 22:25:29.08 ID:tqpEX+7y0.net]
>>136
if (Controls[i] is CheckBox)

140 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 22:43:50.37 ID:VtQV/Dmoa.net]
>>136
根本的に考え違いをしてると思う。
たぶんありもしないものをあるはずだと勝手に思い込んでる。

コントロールをテーブル参照したいなら自分で明示的にテーブル(配列)を
宣言しましょう。

デザイナには君が欲しいと思っているものを忖度して自動で作ってくれるような
都合のいい機能は存在しない。

141 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 23:18:57.35 ID:f9F/Sp5R0.net]
>>137
とりあえずチェックボックスだけを選択することは可能になりました
順番はやはり思っているとおりにいきませんが、これは実行結果を見つつ、デザイナで
並べ替えるしかないかなと思い始めました

>>138
デザイナが忖度してくれるとは思っていないので、プロパティか何かで明示的に選択する
事ができないかな、と思ったのです
以前VBAで似たようなものを作った際は、
Controls("CheckBox" & i).Caption = Cells(i, 1)
こんな選択の仕方ができたので、c#でもなにか方法はあるのではないかと思いました

142 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 23:35:35.52 ID:Kp2niQOT0.net]
>>139
コントロールに名前付ければいいじゃん
フォームにあるコントロールをどうやって特定したいと思ってるの?

143 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 23:50:44.34 ID:f9F/Sp5R0.net]
>>140
例えば
Panel.Controls.CheckBox[i]
みたいな形で指定できればいいなと思ってるんですが、残念ながらそうできないですね

>>138
が書いている、自分で明示的にテーブルを宣言するというのは、例えば
cbox[1] = CheckBox1;
cbox[2] = CheckBox2;
とかいうコードを予め書いておく、ということでしょうか?

144 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 00:02:33.07 ID:Xa6TKCtV0.net]
>>141
意味がわからない
何がしたいの?

@コントロールを特定する必要がある
A複数のコントロールに共通の処理がしたい

Aにしか目が行ってないけど@をやらなきゃいけない時点で
Aの方法なんてエレガントにできたってウンコブリブリじゃん



145 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 02:11:14.44 ID:kNAX3uRd0.net]
オムツの取り替えまでやって欲しい要介護は大人しくVBやってろ

146 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 03:09:44.29 ID:0OUySOiKa.net]
>>141
だから、配列が欲しいなら配列を自分で作ろうよ。

配列が欲しい、でもなんだか自分で配列を書くのは嫌だ。
この発想がおかしい。

var cbs = new[] {CheckBox1, CheckBox2, ...};

これ書くのがそんなに面倒?
変な方向に努力する方が余程面倒でしょ
ローカル変数じゃなくてメンバ変数かプロパティとして実装する場合だって手間は大差ないよ

147 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 06:08:01.85 ID:wp3u/AuE0.net]
>>144
配列を書くのは別に面倒でもなんでもないです
コピペしてちょっと直せば済むので

ただ、コピペで済む内容なら、コードで表現する方法があるのではないかと思ったのです
「新しくなにかプロパティを実装する」のではなく、「このプロパティを参照するとわかる」
という情報が存在するのかと考えました

>>138
が書いてくれたように、「ありもしない物をあるはずだと思い込んでる」のかもしれません

148 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 06:12:48.73 ID:Xa6TKCtV0.net]
>>145
それって同じフォーマットの行が並んだ設定ファイルみたいになんでしょ?
どの部分を自動でやってくれると思ってん?

149 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 07:30:25.22 ID:wp3u/AuE0.net]
>>146
自動でやってくれると言うか、Controls[n] の n に相当する部分を、何らかのプロパティで
持っているのではないかと思ったのです
それがわかれば、IDEでプロパティを書き換えてやればそれで済むな、と

あるいはそれがなければ、例えば

for (int i = 0; i < CBOX_ELEMENTS; i++) {
string s = "checkBox" + (i+1).ToString();
Controls(s).Text = ...
}

みたいな形で指定できないかな、と思っていたのですが、これは無理そうですし

150 名前:デフォルトの名無しさん [2018/04/23(月) 07:45:09.58 ID:7CTglbRxa.net]
配列作って突っ込んどくのが何より簡単だし自由だろ

151 名前:デフォルトの名無しさん mailto:sage釣 [2018/04/23(月) 08:09:08.34 ID:voecBiJS0.net]
>>147
インデクサじゃ駄目なの?

152 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 08:16:30.00 ID:C4a+50u5M.net]
>>147
ちがくね?
お前がやりたいのって別のデータとid(?)が一致する項目にデータを入れていきたいんじゃねーの?
でもそれってコントロールを特定する必要があるんだよね?
コントロールとデータを紐付ける何かはあるの?

153 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 08:33:16.26 ID:KdhM7QliM.net]
GetAllControlsのカウント取るとかそういう?

154 名前:デフォルトの名無しさん mailto:sage釣 [2018/04/23(月) 08:37:13.12 ID:+9lDlXeaM.net]
Type.GetPropertiesの方かな



155 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 09:14:18.74 ID:y08K2+qf0.net]
VB6はコントロール配列があったけどなー。.Netの世界にはないからの。

156 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 12:01:51.66 ID:joGGyVH30.net]
ttps://dobon.net/vb/dotnet/control/findcontrolbyname.html
名前で探せばいいのでは?

157 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 12:30:43.09 ID:b1ST+81Ba.net]
だから配列に突っ込めば済む話を何でわざわざより面倒な方法で解決しようとするのw

158 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 12:34:22.72 ID:HUKatAJtr.net]
>>150
いや、単純にファイルから読み込んだ名前で、チェックボックスの文字を変えたいだけです
例えばファイルの中身が 犬,猿,雉だったら?CheckBox1-3の文字をそれぞれ犬、猿、雉にしてCheckBox4-20は「使用不可」にでもするような
だから機械的に参照できればよかったのです

>>154
これでほぼ解決です、ありがとうございます

159 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 12:39:13.94 ID:HUKatAJtr.net]
>>155
まあ一言でいうと、わざわざ自分で配列を作らなくても、それを実現する方法はすでに存在するだろうと思ってたのです
配列作ったら「そんなことしなくてもこう書けば一発で参照できるのに」って言われる方法があるんじゃないかと

160 名前:デフォルトの名無しさん mailto:sage釣 [2018/04/23(月) 12:39:38.75 ID:+9lDlXeaM.net]
>>156
その下にインデクサによる説明もあるだろw

161 名前:デフォルトの名無しさん [2018/04/23(月) 13:33:10.44 ID:48XgAlPp0.net]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Name ).ToArray();
}

private CheckBox[] checkBoxes;
}

162 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 17:06:56.96 ID:FWk6fNJV0.net]
public class B : private A
{

}

みたいなこと C# じゃ出来ないんだっけ?

163 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 17:10:12.77 ID:BY7S8wKYd.net]
>>160
継承元をprotectedにすれば継承したクラスからしかアクセスできないようにはできる

164 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 17:25:36.44 ID:b1ST+81Ba.net]
>>160
何言ってるのかわかりませんw



165 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 18:05:17.14 ID:BY7S8wKYd.net]
そのクラス経由でしかアクセスできないようにしたいってことじゃないの?

166 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 18:18:07.68 ID:CCSIsfHWM.net]
ゆとりしか居ないのかなぁ
C#はprivate継承はサポートしてないよ
フィールドに持たせて移譲メソッド書くしかない

167 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 18:31:05.83 ID:VMRJeQmYd.net]
>>164
ゆとりなんてもうオッサンやでおじいちゃん?

168 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 18:38:07.42 ID:BY7S8wKYd.net]
これ参考にすればいいのかな
ufcpp.net/study/csharp/oo_conceal.html

protected internal 同一プロジェクト内のクラス内部、または、派生クラスの内部からのみアクセス可能

private protected (C# 7.2 以降)同一プロジェクト内のクラス内部、かつ、派生クラスの内部からのみアクセス可能
こういうこと?

169 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 18:52:13.60 ID:Xa6TKCtV0.net]
>>156
それで解決しねーだろ
バラっバラにくんじゃね?
俺はてっきりコントロールの
座標でソートして名前付けたいのかと思った

170 名前:135 mailto:sage [2018/04/23(月) 21:02:25.52 ID:wp3u/AuE0.net]
皆様いろいろありがとうございました

>>159
書いてくださった方法が、ほぼ私が求めていたものを完璧に実現しています
抱かれてもいいくらい惚れました
ただ、試してみたところピックアップされる順番は必ずしもコントロールを配置した
順番通りではなく、はっきりした法則性も見いだせませんでした
テストプログラムを書いて、インデックスと見た目を一致させるようデザイナで
コントロールを並べ替えようかとも思いましたが、後日コントロールを追加した際
悩むことになりそうなのでやめておきました

>>154
結局この方法でコントロールを検索し、発見したコントロールをリストに追加するという
方法で対応することにしました

>>155
配列に突っ込むにも、コード上に直接 checkBox1 とか checkBox2 とかのリテラルを
埋め込みたくなかったので、検索した上で配列を作ることにしました

>>149, 150, 151
実は書いていることがわからないレベルなので、これから勉強します
「作って覚える」は一通りやったので、「独習c#」を紐解いてみます

>>167
これで解決しました
158の方法で解決するかと思っていたのですが、やってみたところバラバラの順番でした
皮肉でもなんでもなく、コントロールの座標でソートとか、なぜそういう操作をしたいのだろうと
推測したのか教えていただけると嬉しいです
今後も質問すると思いますので、疑問点がわかりやすい文章を意識する必要があるので

171 名前:デフォルトの名無しさん [2018/04/23(月) 21:07:14.52 ID:QriAiZTC0.net]
今日からC#勉強し始めたけど、
結構ネスト深くなる言語っぽいね、これ。こんな…


namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
try
{
checked
{
sbyte a = 64;
sbyte b = 65;
sbyte c = (sbyte)(a + b);
}
}
catch (OverflowException ex)
{
Console.Write(ex.Message);
}
}
}
}

172 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 21:09:42.34 ID:b1ST+81Ba.net]
>>168
いやいやいやcheckBox1 とか checkBox2 とかはリテラルじゃないってw
ただの識別子(フィールド名)

コードにリテラルを埋め込むというか、コンパイル時に誤りを検出できない
(普通の理解では)お行儀の悪いコードになるのはむしろ>>154みたいな方法だってw

173 名前:デフォルトの名無しさん [2018/04/23(月) 21:09:53.25 ID:QriAiZTC0.net]
namespaceとかcheckedがブロックなのが何かなぁ…

174 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 21:27:15.55 ID:wp3u/AuE0.net]
>>170
おっと・・・
どうやら根本的なところで間違っていたようです
書いてあるとおりだとすると、質問とレスが噛み合っていない理由がわかりました
わざわざ行儀の悪い書き方を探していたのか



175 名前:デフォルトの名無しさん [2018/04/23(月) 21:37:46.50 ID:48XgAlPp0.net]
>>168
>>159はOrderBy()でチェックボックスの名前(Name)順にソートしてる。
Nameの代わりに、TabIndexかTagを設定してそれを利用しても良い。
というか、Nameだとチェックボックスが10個以上になるとソートが望むようにならないか。

176 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 21:45:21.31 ID:Xa6TKCtV0.net]
>>168
おそらく配置したコントロールから欲しい情報は座標とサイズぐらいしかない
それらの特定情報は別ファイルにある
なのでコントロールが上から
もしくは左からか順番に取得できれば
別ファイルに記述した通りの順番で情報を並べることができる
Controlsで取得できる順番はよく知らないけど
作った順かあるいわなんの特徴もなくランダムか何かを保証するものではないのかな?と

177 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 22:10:47.18 ID:48XgAlPp0.net]
>>174
Controlsが返す順番は保証されてないけど、自分でソートすれば良い。

(1)TabIndex順 (各CheckBoxにタブオーダー(TabIndex)を設定しておく)
this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.TabIndex ).ToArray();
(2)Tag順 (各CheckBoxのTagに数値を設定しておく)
this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Tag ).ToArray();
(3-1)Location順(左から)
this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Location.X ).ThenBy( x=> x.Location.Y ).ToArray();
(3-2)Location順(上から)
this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Location.Y ).ThenBy( x=> x.Location.X ).ToArray();

178 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 22:33:20.75 ID:fnmaDcrK0.net]
>>156
そういう使い方なら、チェックボックスを先に作っておくんじゃなくて
ファイルから読んだ内容で動的に作っていった方が手っ取り早い
どうせチェックボックスは全部等間隔に並べるんじゃろ?

179 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 22:53:14.98 ID:pYJnxPYX0.net]
WPFのサンプルでありそうな話だ

180 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 23:04:57.82 ID:0nhwdYRFa.net]
>>127,>>129
>>124です
SetPrinter関数を使用することで実現できました。ありがとうございました。

181 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 00:40:53.09 ID:U7B9av/W0.net]
>>169
そのtry意味ないんだけど。。

182 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 00:55:02.77 ID:P/LpDfjz0.net]
>>179
ネストのイメージ書きたかっただけだろうよ

183 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 06:02:26.80 ID:PLNFE8AC0.net]
>>174
なるほど、コントロールから情報を取得する必要があると思えたのですね
実際はそれ以前の段階でしたが

>>176
それも考えたのですが、デザイナで画面を確認したいので、静的に用意して
おきたいという結論になりました
動的に置くほうが難易度高そうだ、と思ったのもありますが

184 名前:デフォルトの名無しさん [2018/04/24(火) 11:44:27.10 ID:MJ0NRymv0.net]
>>179-180

「意味無い」って、どういう意味?



185 名前:デフォルトの名無しさん [2018/04/24(火) 12:45:33.19 ID:MJ0NRymv0.net]
うぇぇ、C#、goto文使えるし…

186 名前:デフォルトの名無しさん [2018/04/24(火) 13:15:16.40 ID:MJ0NRymv0.net]
うーん、string x = "10"; に対して
x.toString(); するんじゃなくて、int.Parse(x); するのか…。
xオブジェクトにintegerを吐き出させるのではなく、
integerオブジェクトにxオブジェクトを与えてintegerを吐き出させる…。

これは初めての体験だな…。

187 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 13:18:45.32 ID:Ajvhvjmq0.net]
何もかも間違っててワロタw

188 名前:デフォルトの名無しさん [2018/04/24(火) 13:34:52.91 ID:MJ0NRymv0.net]
なにゆえ?

189 名前:デフォルトの名無しさん [2018/04/24(火) 13:45:01.31 ID:MJ0NRymv0.net]
expression-bodied関数は、なんかエロいな…

190 名前:デフォルトの名無しさん [2018/04/24(火) 13:46:08.52 ID:MJ0NRymv0.net]
やってる事は違うけど、考え方的にはCのマクロに近いのかな…

191 名前:デフォルトの名無しさん [2018/04/24(火) 13:50:59.68 ID:MJ0NRymv0.net]
LINQ…、エロいな…。

192 名前:デフォルトの名無しさん [2018/04/24(火) 13:53:53.94 ID:MJ0NRymv0.net]
関数名がアッパーキャメルなのは感心せんなぁ…

193 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 14:00:18.73 ID:a0zqzGgA0.net]
ここ質問スレなんで日記は他所でな

194 名前:デフォルトの名無しさん [2018/04/24(火) 14:04:20.23 ID:MJ0NRymv0.net]
なんだよ、ToString()メソッドあるじゃねぇかよ…。



195 名前:デフォルトの名無しさん [2018/04/24(火) 14:05:02.22 ID:MJ0NRymv0.net]
>>191

ごめん。

質問です。なんだよ、ToString()メソッドあるじゃねぇかよ…

196 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 14:39:12.39 ID:5gRbnpaG0.net]
VisualStudioでC#のフォームアプリを開発するときに
プロジェクトのプロパティから
出力の種類を「コンソールアプリ」にして
デバッグ用のConsole.WriteLineを出力できるようにしてるんだけど
リリースするときは、種類を「Windowsアプリ」にするだけで
コード中のConsole.WriteLineはコメントアウトとかしなくても
大丈夫ですか?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<310KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef