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

■ このスレッドは過去ログ倉庫に格納されています
2017/10/09(月) 19:00:56.93ID:Y4203ffV0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

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

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

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

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

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

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

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/10/20(金) 20:35:27.08ID:36f4Sv1zM
>>362
Windows なら Enhanced Meta File でいいんじゃね?
c# emf 作成
とかでググれば作り方はわかると思う
374デフォルトの名無しさん (ワッチョイ 4e8a-/wYC)
垢版 |
2017/10/20(金) 20:51:02.95ID:vd2jZWHS0
いつまでスレチ続けるんだクズども
2017/10/20(金) 20:56:22.63ID:BrAKv0lza
>>373
ありがとう
svgと合わせて調べてみます

>>374
なんか話したい話題があるなら質問しろ
376デフォルトの名無しさん (ワッチョイ c575-G561)
垢版 |
2017/10/20(金) 21:08:47.27ID:QPjbx7Pr0
>>372
slip見て自演バレバレ
2017/10/20(金) 22:46:03.30ID:h+e+zHrd0
>>375
御託はいいから新小岩駅に行ってNEXに飛び込んで死ね
2017/10/21(土) 04:38:43.15ID:J3/Oov/oa
>>377
スレ違いどころか
板すらあってないじゃんw
2017/10/23(月) 09:42:48.16ID:iZTfc9Gp0
プロパティとメソッドの使い分けってどうするのです?

例えばクラスが持ってるリストの件数を返すCountとか、ある項目が存在するかどうかを返すIsItemExistとか
こういうのはプロパティかメソッドかどっちで実装するのです?
2017/10/23(月) 09:58:16.86ID:WjGqLCS1M
>>379
クラスの内部状態を返すのならプロパティでしょ。
2017/10/23(月) 10:13:47.78ID:zzY32qse0
DIでInjectしたServiceは、フィールドに保持する?それともプロパティに保持する?
どっちも見かけるから、皆さんどういう風に使い分けてるかなと
2017/10/23(月) 10:47:51.67ID:UXX8AsCPa
困ったら全部getなんちゃらでメソッドにしちゃえばいいじゃん(適当)
Isなんちゃらはプロパティでね、大抵
2017/10/23(月) 10:50:57.14ID:ebDYa8pU0
>>381
オレはパブリックはプロバティーでプライベートはフィールドってのが軸だな
勿論例外もある

つまりコンストラクター使ってDIならフィールドかな
2017/10/23(月) 10:57:06.62ID:WjGqLCS1M
MSが自動実装プロパティなんて作るから
2017/10/23(月) 11:15:16.91ID:UZkZRiTF0
IsItemExistって何だよ…噓だろ…
2017/10/23(月) 11:33:35.62ID:Y7RvEsYBd
>>383
ありがとう
2017/10/23(月) 12:29:52.29ID:UXX8AsCPa
>>385
確かにw
Isなんちゃらはプロパティ、なんちゃらExistはメソッドってイメージがあるな
2017/10/23(月) 12:42:32.30ID:UiLH3I11M
>>387
動詞が2つ有るって言いたいのだろう。
2017/10/23(月) 13:06:11.13ID:UXX8AsCPa
>>388
ごめん
確かに、はそれが変だなってことにかかってて、そのあとは俺が持ってるイメージの話
分かりにくかったな
2017/10/23(月) 13:11:49.28ID:ZgE4a7c5a
>>389
よこからついでに突っ込むけど、メソッドでexistって動詞を使うこともまずないと思うよ
存在しろって言われても困るでしょうw
〜Exitsというプロパティなら普通にある
2017/10/23(月) 13:17:00.15ID:JL5vrncla
なんか突っ込みどころが多すぎて
登場人物全部抜けてる気がする

File.Exists メソッド
String.IsNullOrEmpty メソッド
2017/10/23(月) 13:23:02.70ID:ZgE4a7c5a
>>391
どっちも静的メソッドだよねそれ

どっちも機能的には明らかにプロパティじゃないのにプロパティ風の名前になってるのは
妥協の産物でしょう。
2017/10/23(月) 14:52:16.08ID:Hm5Sp4K20
>>379
原則状態はプロパティ、動作がメソッド
ただし、利用者はプロパティはループ毎にキャッシュせず読んでもいいくらいに軽い処理だと考える場合があるので、時間がかかるならメソッドにしたほうがよいかも
2017/10/23(月) 19:30:33.33ID:TFf0LeB2M
プロパティはもちろん取得系のメソッドも何度も呼んでいいよ
実測した結果、遅くなってると分かったらキャッシュを導入する
パフォーマンスだけのために説明変数を追加するのはNG
395デフォルトの名無しさん (ワッチョイ c575-G561)
垢版 |
2017/10/23(月) 19:34:24.82ID:HemzWECS0
説明変数とは
2017/10/23(月) 19:50:51.54ID:+URhnDB80
聞きかじりで理解した気になってるからこういう
2017/10/23(月) 20:07:22.56ID:IDuIqN9Mp
>>396
初心者スレでマウントとりたいだけのバカは邪魔なのでわんくまにでも行ってどうぞ
2017/10/23(月) 20:10:22.51ID:TFf0LeB2M
>>395
var cachedUnko = GetBigUnko();
こういうやつ
2017/10/23(月) 20:35:02.50ID:y4/LHG7i0
- IsItemExitsはHasItemに
- Existsは引数を取るので基本メソッド
- IsNull、IsEmpty, HasValue等の問い合わせ系は悩ましいので選択基準を規約で決めておく

問い合わせ系については引数不要で十分チープなら
.NET Frameworkでは基本的にプロパティが使われている
ただメソッドにしないといけないケースも少なからずあるので
個人的にはメソッドに統一しといたほうがいいと思ってる

https://msdn.microsoft.com/en-us/library/ms229054(v=vs.100).aspx
2017/10/23(月) 20:35:25.45ID:VIpRDakhM
回帰分析とかで説明変数って聞くけど他じゃあまり聞かない
2017/10/23(月) 20:39:21.38ID:VIpRDakhM
HasItemってどんなときつかうんだろうか
もしそれがコレクションならContain使うよ

引数ないならプロパティって暴論あるけど
2017/10/23(月) 20:41:00.92ID:y4/LHG7i0
リファクタリングやリーダブルコードにも説明変数って出てくるぞ
2017/10/23(月) 20:41:10.77ID:SUJ4sB5na
それはないと思うよw
説明変数なんて割とよく聞く言葉だと思う。
まあどうでもいいので終了。
2017/10/23(月) 20:41:38.26ID:TFf0LeB2M
bool HasItems => _items.Count() >= 0;
2017/10/23(月) 20:41:43.62ID:VIpRDakhM
>>402
なにか教えてほしい
2017/10/23(月) 20:43:00.01ID:y4/LHG7i0
>>401
if (treasureBox.HasItem) {…}
2017/10/23(月) 20:44:11.93ID:y4/LHG7i0
>>405
>>398
2017/10/23(月) 20:44:50.20ID:VIpRDakhM
>>407
意味が分からないので教えてほしい
2017/10/23(月) 20:45:10.88ID:TFf0LeB2M
>>408
おまじないみたいなもの
2017/10/23(月) 20:48:10.90ID:VIpRDakhM
仕事で統計の説明変数という言葉を使うので
全然別の定義の説明変数という言葉があるなら知っておきたい
2017/10/23(月) 20:48:28.25ID:ANMjmVZtM
>>406
オブジェクト指向の原理主義的には典型的なアンチパターンだよそれ
空なら何もしないとかアイテムが入ってればプレイヤーのアイテム袋に入れるとかは宝箱のOpenメソッドの中に実装するべき
2017/10/23(月) 20:50:20.23ID:SUJ4sB5na
>>408
要するに可読性を上げるためだけに使用される一時変数のこと
数学だったら「ここで〜をxとおくと」みたいなあれ

var count = 3;
var sum = a + b + c;
return sum/count;
2017/10/23(月) 20:56:10.39ID:ed977JSR0
>>410
「プログラミング 説明変数」でググってみては?
2017/10/23(月) 20:58:45.70ID:y4/LHG7i0
>>411
うん、そこは論点じゃないから
IsItemExistな名前はHasItemに変えられるよってこと

>>401はItemという名前からコレクションの要素を連想してるみたいだから
そうじゃないのをイメージしやすい例を出したの
HasSomethingでもいいよ
2017/10/23(月) 22:41:58.44ID:Hm5Sp4K20
>>394
ポリモーフイズムの関係で実測があてにならん状況も多いんだよね
Countは実装依存でo(1)だったりo(n)だったり、データベース呼び出しが走る可能さえある

それに対してLengthプロパティはo(1)でインライン展開されるだろうと高をくくってもだいたい問題ない
ネックになればそのときに測定
2017/10/23(月) 23:09:35.17ID:TFf0LeB2M
>>415
ポリモー関係ないじゃん
もしかしてストップウォッチ派?
2017/10/23(月) 23:39:27.16ID:y4/LHG7i0
>>415
CountプロパティをO(n)で実装するのは良くない
ガイドラインに反してる

CollectionのCountはプロパティで
EnumerableのCountはメソッドになってる理由と同じ
2017/10/24(火) 00:01:28.06ID:7XcVEnvtM
>>413
今ググったらプログラミングで説明変数って使い方をしてるのはごく一部だという印象

一般的に使われてない
2017/10/24(火) 00:09:05.80ID:7XcVEnvtM
統計の説明変数はexplanatory variable

リーダブルコードの人がExplaining Variableという名前を付けて書籍に残した
日本語訳するときに適当な言葉が思いつかなかったので説明変数にした

翻訳者に学がなかった
2017/10/24(火) 00:14:38.95ID:CMLwKKPKa
>>419
酷い言い掛かりw
違う分野でダブってる専門用語なんていくらでもあるだろうに

そもそも変数だって関数だって数学からの借り物だが全然別の意味で使ってる
2017/10/24(火) 00:22:45.84ID:7XcVEnvtM
いやそーいうことじゃなくて日本では同じ表現だけど向こうじゃ別だから厄介

国内でも説明変数で通じるかどうか
422デフォルトの名無しさん (ワッチョイ c575-G561)
垢版 |
2017/10/24(火) 00:41:38.88ID:lU4ejLPG0
もういいよその話
2017/10/24(火) 02:24:33.77ID:2soFq68da
>>421
フツーに考えてexplanatory とexplaining が別の言葉だと思えませんけどw
現に"explanatory variable" "explaining variable"でググると結構混用しちゃってる例が見つかるよ
2017/10/24(火) 02:34:47.38ID:2soFq68da
ついでに、思いっきり脱線で申し訳ないけど、前から疑問に思ってたけど
プログラミングの世界の分割統治はdivide and conquer、
古代ローマの植民地支配戦略の分割統治はdivide and ruleというが、
これもたぶんどっちでも通じると思うんだよね
2017/10/24(火) 02:38:09.67ID:TDbe+Bw3r
自分の知らない言葉が出てきた時に
その人の性格が現れるのかもしれないねw
2017/10/24(火) 02:43:26.14ID:lLS52e6w0
知ったかに喋る権利を与えるなよ
2017/10/24(火) 02:46:51.17ID:lLS52e6w0
396の時点で
馬鹿が一丁前に発狂してしばらくは荒れるんやろなと思っとったが
やはりだろう
まったくクソボケは期待を裏切らないな
2017/10/24(火) 06:55:50.50ID:hsifRvdf0
IList<T>の中身をソートしたいのですがどうすればいいでしょうか?
SortメソッドはListクラスにあってIList<T>インターフェースにはありません。
LINQのOrderByは元のコレクションの中身をソートしませんよね??
IList<T>の中身を直接入れ替えたいのです。
2017/10/24(火) 07:35:45.56ID:A9t42mE4M
>>428
ない
自分でクイックソート実装しろ
2017/10/24(火) 07:53:32.68ID:cp08Hl/JM
>>428
var sorted = ilistobj.OrderBy(...).ToArray();
ilistobj.Clear();
foreach (var item in sorted)
ilistobj.Add(item);
2017/10/24(火) 09:34:12.61ID:Y6LvzYD50
入力フォーム画面から入力されたデータを集めてDBなり別の出力クラスに渡すプログラムを.NET2.0の頃に作った時は、入力フォームとデータクラスの関連付けにBindingとか使ってた記憶あるんだけど、今もその辺は変わってないの?
2017/10/24(火) 09:46:53.52ID:pwJ57chea
使いたければ使えばいいし
使わなくても別に動くし
2017/10/24(火) 09:49:37.38ID:eDzdiXecM
>>431
バインドはもっと進化してる
2017/10/24(火) 11:03:06.97ID:yNkD48rCM
WinFormなら.NET 2.0のあとで機能追加されたのってChartぐらいじゃないっけ
BindingSourceは.NET 2.0でもう入ってたよな
2017/10/24(火) 14:16:13.31ID:TDbe+Bw3r
中身をソートする発想は非常にセンスがよろしくない
2017/10/24(火) 17:02:08.12ID:hsifRvdf0
>>429

>>430
2017/10/24(火) 17:19:30.78ID:VubGQCWPM
>>430
ToArray→Array.Sort→書き戻し
のほうが速いはず
2017/10/24(火) 21:04:22.55ID:Y6LvzYD50
>>433-434
Web漁ってもWPFネタばかりだったわ・・・
2017/10/24(火) 21:51:38.33ID:NHCjs86oa
Formのバインディングはずいぶん前だけどわんくまの人が結構まとまった記事書いてたはず
コードはVBだと思ったが
2017/10/24(火) 21:55:17.75ID:s18UOlL+a
>>439
intの変数とテキストボックスをバインディングして
実行時にテキストボックスに「うんこ」って入れると死ぬじゃん
普通どうやって作るの?
2017/10/24(火) 22:14:43.68ID:lLS52e6w0
脳みそウンコはママにオムツでもしてもらえ
442デフォルトの名無しさん (ワッチョイ c575-G561)
垢版 |
2017/10/24(火) 22:39:01.84ID:lU4ejLPG0
>>440
普通にフォームのTextプロパティと同じ型にするんだろ
2017/10/24(火) 23:18:41.89ID:kX+BI6hp0
前から変なレスしているアウアウオーがいる
アウアウオー Sae2-jbpI
これNGしとけ
2017/10/25(水) 00:11:21.67ID:vZNm40SOa
>>442
でもさ、入れる値は数値なのに一旦文字列にしないとじゃん?
2017/10/25(水) 00:36:46.65ID:WIc18nYy0
>>444
文字列にしないと Text プロパティに値を設定できないじゃん?
2017/10/25(水) 00:37:56.23ID:Q2yRg5qV0
テキストボックスのコントロール側でバリデーションしろよ
2017/10/25(水) 00:41:23.45ID:7bqawKXsa
>>445
数値が欲しくても入力チェックの必要があるときは一旦文字列でもてって言ってる?
2017/10/25(水) 02:32:41.64ID:WIc18nYy0
>>447
Text プロパティは文字列なんだからバインド云々以前に一旦文字列にするのは当たり前
(どこかで 数値 <--> 文字列 の変換が必要)
って意味で言った

でも ErrorProvider 使えば数値型プロパティでいい感じにバインドできるんじゃないかと今思った
2017/10/25(水) 06:04:30.07ID:6FPeEgMNM
list<list<string>> hoge

このようなデータ構造のものをdatagridviewに表示させたいのですが、datasorceにhogeをセットすると入れ子のlistのcount数が表示され、肝心の中身が表示されません。
解決方法おしえてください
2017/10/25(水) 08:28:58.19ID:M5t9KVaY0
つか、数値入力はカスタムコントロールかビヘイビア作って対応しろや
Valueプロバティーなど作ってintやdoubleと直接バインド出来る
2017/10/25(水) 09:36:00.51ID:+tJOBv1wM
NumericUpDownさんの立つ瀬がない

>>449
適当なクラス作ってList<string>をそっちに移し替えるのが一番楽だよ
2017/10/25(水) 09:38:13.76ID:lkuOTBBm0
>>451
WPFにそれ無くて愕然としたわ
Nugetから拾ってねってことなんだろうけど、流石にForm時代のコントロールは用意しとけよと
453デフォルトの名無しさん (ワッチョイ 5502-G561)
垢版 |
2017/10/25(水) 12:10:32.13ID:5tcC17L/0
WPFを好きになれない
2017/10/25(水) 12:25:41.50ID:Lk4Aq805H
今更好きになる必要はない
死んだプラットフォームだよ
2017/10/25(水) 14:53:18.95ID:NEHk3FBt0
Formを拡張してくれてもいいのに、
新機能はWPFを使えとかだからなぁ
2017/10/25(水) 17:48:18.55ID:QxbqfPpga
明らかにビジネスニーズを外してると思うんだが
やっぱり海外でも同じなんだろうなって思う
2017/10/25(水) 18:09:40.11ID:hcA39hyC0
質問に関係ない雑談は他でやれ
>>449
Listを直接表示する機能はないのでDataTableにしてからDataSourceとして代入してください
MSDNでもそうなっている
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.datagridview.datasource(v=vs.110).aspx
458デフォルトの名無しさん (ワッチョイ c575-G561)
垢版 |
2017/10/25(水) 18:14:21.08ID:Ho4Id2OA0
仕切り屋ウゼエ
2017/10/25(水) 18:48:44.36ID:BTS+nNEQM
>>457
class作る場合はcolumn数固定だし、この方法が良さそうです。
ありがとう。
2017/10/25(水) 19:51:15.93ID:NJvUwgFjr
お年寄りには無理かもねww
2017/10/26(木) 21:25:01.19ID:wrijmML40
>>460
何歳からお年寄り?
2017/10/26(木) 21:35:06.39ID:axdI+VLP0
「最近の若いもんは」とか言い出したら年寄り
463デフォルトの名無しさん (ガックシ 068b-AYwW)
垢版 |
2017/10/26(木) 23:11:07.62ID:32PzTYul6
多次元配列について

二つの変数i,jを代入したときに三次元ベクトルの値が帰ってくるような多次元配列の書き方を教えてほしいです。
2017/10/26(木) 23:16:22.52ID:ZYb1HzvY0
宿題はNG
465デフォルトの名無しさん (ガックシ 068b-AYwW)
垢版 |
2017/10/26(木) 23:26:46.05ID:32PzTYul6
大学の研究で使いたいですorz
どこのサイト調べたら乗ってますか、、、
2017/10/26(木) 23:28:13.23ID:/JkeP1u6a
>>463
たぶん俺だけじゃないと思うけど、何言ってるのか全然わからないよw
2017/10/26(木) 23:32:24.39ID:gKJtyuf20
>>465
要件を切り分けよう。そうしたら自分でググれる
>>463の内容だとC#以前に日本語として通じない
468デフォルトの名無しさん (ガックシ 068b-AYwW)
垢版 |
2017/10/26(木) 23:34:06.91ID:32PzTYul6
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)

??? = Vector3; //Vector3はiとjで定まるベクトル
}

この???に入る関数の正しい形がわからなくてずっとエラー吐き出してます
2017/10/26(木) 23:35:43.85ID:LSWABSRs0
f(a, b) -> (a, b, a・b)
これを配列でやりたいんかねえ
無茶言うな
2017/10/26(木) 23:36:15.67ID:LSWABSRs0
わー全然違った
471デフォルトの名無しさん (ワッチョイ d175-rVGZ)
垢版 |
2017/10/26(木) 23:37:53.64ID:Fjma9sq90
>>468
多次元配列ならarray[i, j]
ジャグ配列ならarray[i][j]
2017/10/26(木) 23:40:05.56ID:gKJtyuf20
>>468
Vector3ってx,y,zがいるよね。そこでi,jから算出したいって言われてもわからないよ
クラスまたは構造体にそれを格納したいの?
>>471のように配列にしたいの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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