■ このスレッドは過去ログ倉庫に格納されています
ふらっと C#,C♯,C#(初心者用) Part137
- 1 :デフォルトの名無しさん :2018/04/06(金) 17:40:19.48 ID:oKXVP34zM.net
- 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
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/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part136
http://mevius.5ch.net/test/read.cgi/tech/1520057345/
■コードを貼る場合は↓を使いましょう。
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
- 2 :デフォルトの名無しさん :2018/04/06(金) 17:40:50.10 ID:oKXVP34zM.net
- (*゚∀゚)v2get!
- 3 :デフォルトの名無しさん :2018/04/06(金) 18:51:49.77 ID:+Q3Wd1R20.net
- ワッチョイ付きGJ
- 4 :デフォルトの名無しさん :2018/04/06(金) 22:54:25.33 ID:e2Dy7HRM0.net
- 前スレ>>993, >>998
例外が発生しないようなコードを書くべきというのはそのとおりだと思いますが、例えば
ファイルパスが適切であることを確認してファイルが存在することも確認して、その上で
オープンしようとしてもそのタイミングでファイルが消されている、といった状況だと例外が
発生しますよね
流石にそういうケースでは例外で止めるべきだというのも一つの考え方ですが、それを
検出して処理を戻したいケースもあるだろう、と思っての質問でした
- 5 :デフォルトの名無しさん :2018/04/06(金) 23:04:09.92 ID:mLoQW3Pc0.net
- >>4
誰かが編集中なときもあるし
そもそもぶっ壊れてるときもあるし
アプリの動作も含めて仕様を決めないとどうしようもないじゃん
- 6 :デフォルトの名無しさん :2018/04/06(金) 23:16:26.79 ID:5BPKzXhXa.net
- まあ、最初から言ってるように、抽象的な質問には抽象的な答えしか返しようがないw
例外に対処するイディオム的な物を教えてくれ、と言ってるように聞こえるけど
そんなものはないとしか...
- 7 :デフォルトの名無しさん :2018/04/07(土) 04:26:23.93 ID:1UMv7o170.net
- なかなか意図するところが伝わってないのですが、「例外処理をループの中に閉じ込めて、
例外が発生しなかった場合だけループを抜ける」という書き方を知りたかったのです
処理の内容とかはどうでも良くて、ループの囲い方とその抜け出し方を
なので、以前レスいただいたように、whileで無限ループを作って、tryブロック内にbreakを
置いてループを抜ける、という回答で私には十分でした
試してみれば一発で分かる話だったのですが、tryブロックから外側のループを直接抜ける
ことができると思っていなかったので、それに気づかなかったということです
皆様お付き合いいただいてありがとうございました
また質問をした際には付き合っていただけると幸いです
- 8 :デフォルトの名無しさん:2018/04/07(土) 16:14:52.82 ID:XH6L+7hBM
- https://ideone.com/lasZ8b
のようなクラスを他プロジェクトやライブラリでICollectionの型として使いまわしたい場合
どのように依存させる構成にすればいいのでしょうか?
インターフェースとかでこの型の実装を強制ってできるんでしょうか?
それかインターフェースは使わないで他の参照方法が望ましいんでしょうか?
- 9 :デフォルトの名無しさん :2018/04/07(土) 12:22:01.31 ID:mY3UUgcs0.net
- 困っているわけじゃないんだけどちょっと気になってることがあるので分かる方がいたら教えてください
次のコードを実行すると y に true が代入されますが、これはどういうときに使うのでしょうか
string x = null;
bool y = x is var z; // y に true が代入される
- 10 :デフォルトの名無しさん :2018/04/07(土) 13:18:31.43 ID:pLXvASH10.net
- private void button1_Click(object sender, EventArgs e)
{
if (sender is Button b)
{
}
}
方法: as 演算子と is 演算子を使用して安全にキャストする (C# プログラミング
ガイド)
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/types/how-to-safely-cast-by-using-as-and-is-operators
- 11 :デフォルトの名無しさん :2018/04/07(土) 15:27:01.26 ID:Uoh/XEtya.net
- チラシの裏
C#の構造体にこんな落とし穴が存在することをついさっき知った
http://ufcpp.net/study/csharp/resource/readonlyness/#this-rewrite
- 12 :デフォルトの名無しさん :2018/04/07(土) 16:25:57.16 ID:jbOaYf+S0.net
- public class Test
{
public int Id{get;set;}
public string Text{get;set;}
public string Other{get;set;}
}
このようなクラスを他プロジェクトやライブラリで
ICollectionの型として使い回したい場合
どのような依存をすればいいのでしょうか?
インターフェースでこの型実装を強制させるとかでしょうか?
インターフェースを使わないで他の参照方法のが望ましいのでしょうか?
- 13 :デフォルトの名無しさん :2018/04/07(土) 16:37:35.07 ID:Y4t1vYpsM.net
- 継承
- 14 :デフォルトの名無しさん :2018/04/07(土) 18:27:15.12 ID:7KARL849a.net
- >>12
悪口言いたくないんだけど、俺様用語が多過ぎて何を言ってるのか全然分からないよw
- 15 :デフォルトの名無しさん :2018/04/07(土) 19:44:44.45 ID:jbOaYf+S0.net
- >>14
List〈Test〉等を他のプロジェクトでも扱いたいのでTest型で返す関数を作成して
それをこれをパッケージした時に他のプロジェクトでも受け取れるようにしたいって事ですね
public Test GetTest();
みたいな関数でTest型を使いまわせるようにしたいです
- 16 :デフォルトの名無しさん :2018/04/07(土) 19:53:33.05 ID:jbOaYf+S0.net
- >>13
Abstractって指摘も入ってるので
型クラス(Test)を実装しておき
これをベースにして
public Test GetTest();
を継承先に実装するようにするのが一番賢い設計ですかね・・・?
機能というよりはC♯を使った設計の質問と少し抽象的な話なのでスレチだったらすいません
- 17 :デフォルトの名無しさん :2018/04/07(土) 20:14:36.36 ID:7KARL849a.net
- >>15
publicな型はそれを含むプロジェクト(アセンブリ)を参照する別のプロジェクトからも
普通に使えると思うけど、そういう話ではなくて?
- 18 :デフォルトの名無しさん :2018/04/07(土) 20:27:35.94 ID:jbOaYf+S0.net
- >>17
dll状態だと戻り値Test型って何?ってならないかと思って構造どうすればいいのか悩んでましたけど
そもそもそういう事を考えること自体がおかしかったかもしれないです・・・
Test型のみを他のプロジェクトに流用させたい時とかも考えていたんですけど
そもそもその設計自体がおかしいと思い至りました
- 19 :デフォルトの名無しさん :2018/04/09(月) 11:45:33.84 ID:xaQ7bksS0.net
- >>12
もうちょっと掘り下げて質問し直します
EntityFrameworkを使ってSQLにTest型の入出力をするクラスと
WebからスクレイピングしてTest型を返すクラスを作りたいのですが
ここでTest型を両方で共通で使いたいと思ってます
Test型はプロパティが減ることは無いですが追加はしたいものとします
この時Test型はどのように実装するのが好ましいのでしょうか?
今だとSQLに接続したい時とスクレイピングする時に読み込むクラスが分けれないので困っています
- 20 :デフォルトの名無しさん :2018/04/09(月) 11:56:58.59 ID:xaQ7bksS0.net
- >>19
これはTestクラスを作成して単独でビルドし
これを参照させたSQLクラスとスクレイピングクラスに継承させて扱うのが正解なのでしょうか?
- 21 :デフォルトの名無しさん :2018/04/09(月) 23:41:29.92 ID:XPDmd+wz0.net
- C#というよりクラスタイプoop全般の話だと思うのですが、クラスを呼んだ時のパラメータは、コンストラクタに与えるのが良いのでしょうか、メソッドに与えるのが良いのでしょうか
両方できるので無造作に使ってるのですがOO的に間違った事をしていそうで
よろしくお願いします
- 22 :デフォルトの名無しさん :2018/04/09(月) 23:43:55.56 ID:fSLWGn340.net
- クラスを呼ぶってなに?
- 23 :デフォルトの名無しさん :2018/04/09(月) 23:44:42.97 ID:MCzflE3YM.net
- 場合によるのでその都度考えてください
- 24 :デフォルトの名無しさん :2018/04/10(火) 06:59:42.37 ID:EnsNk18IM.net
- >>22
インスタンスを作るのとメソッドをコールすることと意識が混ざっている素人で失礼しました
インスタンスを作る時にパラメータを渡すのと、メソッドの引数にパラメータを渡すの、oo的にはどちらが正しいのかお聞きしたかったです
- 25 :デフォルトの名無しさん :2018/04/10(火) 07:04:03.54 ID:EnsNk18IM.net
- >>23
oo的にはこう、というのは無く、スマートに記述できる方で良いという感じでしょうか?
今自分は気分や雰囲気で使い分けてるのですが、実はルールがあるのではと心配しておりました
- 26 :デフォルトの名無しさん :2018/04/10(火) 12:42:18.35 ID:KG4vxU3va.net
- >>25
正直何が聞きたいのかよく分からんけど、
いろいろ想像してみると、たぶん本当に聞きたいことはコンストラクタ云々じゃなくて
あるデータをプロパティとしてオブジェクトに持たせるかどうかをどういう基準で決めるか、
じゃないのかな。
例えばSystem.Timers.TimerにはpublicなプロパティIntervalがあるけど、
これをprivateかprotectedにしてユーザーからアクセスできないようにして、
Startメソッドの引数として与える仕様でも同じじゃないのかと
- 27 :デフォルトの名無しさん :2018/04/10(火) 20:54:09.92 ID:i+408CBT0.net
- >>26
理解が浅く説明が拙くすみません
そのような事です
どちらでも出来てしまいますが、使い分けのルールや指標はあるのかなと
- 28 :デフォルトの名無しさん :2018/04/10(火) 23:02:10.41 ID:IMFDPHVza.net
- そのパラメーターが変更可能なのかどうかでやり方がいろいろある
インスタンスを作るときに最初に決めたパラメーターを変える必要がないもしくは変えたくないなら
コンストラクタで渡してしまえばいい
毎回変えるかもしれないならメソッドで渡せばいい
- 29 :デフォルトの名無しさん :2018/04/10(火) 23:36:50.93 ID:v03YChI+M.net
- >>27
そんなもの無い
その時々で苦悩して答えを出すしかない
プログラミングってそういう仕事
- 30 :デフォルトの名無しさん :2018/04/10(火) 23:44:32.77 ID:yYP5pHxz0.net
- >>21
教科書的にはメソッドの引数しかありえない
- 31 :デフォルトの名無しさん :2018/04/11(水) 00:46:06.20 ID:qa2FEnRqa.net
- >>27
基本的には全部引数でも間違いではない
あくまで関数が主であって、オブジェクトは関数のコンテキストに過ぎない、と考えるのが今時のプログラミング
端的に言えば、毎回同じ引数を渡すのが面倒だと思うならクラスにすることを検討するというだけの簡単な話
- 32 :デフォルトの名無しさん :2018/04/11(水) 00:50:03.90 ID:mkq9MyW9a.net
- >>27
いや、プロパティとして持つべきデータかの判断は一般的にはそんなに難しくないはず。
上に例に挙げたTimerだって、Startの引数でIntervalを指定する方式だと
問題や不自然さがあることはちょっと考えれば分かるはず
- 33 :デフォルトの名無しさん :2018/04/11(水) 01:12:44.96 ID:KJoDibHNM.net
- >>32
別に問題も不自然さも無いよ
System.Timers.TimerやSystem.Windows.Forms.Timerのインターバルがプロパティなのは、デザイナで設定できる必要があるからだ
実際、デザイナに貼れないSystem.Threading.Timerはコンストラクタかメソッドで周期を設定する
(ライブラリではなく)アプリケーションの開発に関して言えば、データクラス以外でプロパティを使う必要があるケースは稀だよ
データクラスを除けば、一度設定した値を取り出したくなるのは殆どの場合設計が間違っている
- 34 :デフォルトの名無しさん :2018/04/11(水) 01:25:13.83 ID:nomvJ3n3M.net
- >>21
・コンストラクタで渡す
var a = new Test(1, "A");
・メソッドで渡す
var b = new Test().SetId(2).SetName("B");
・オブジェクト初期化子で渡す
var c = new Test{
id = 3,
name = "C",
};
通常はコンストラクタで、メソッドチェーンはファクトリパターンでよく使う
オブジェクト初期化子は閉じてるクラスの可読性を上げたいときに使う
まあ統一性さえ確保出来ていればどれを選んでも大差ないよ
- 35 :デフォルトの名無しさん :2018/04/11(水) 01:44:35.49 ID:mkq9MyW9a.net
- >>33
System.Threading.Timerがプロパティを持たないのは何か意図があると思うが
使ったことがないのでよくわからない。(軽量であることが「コンセンプトだから?
あるいんた単に設計者の頭が古いだけかもしれない}
TimerのIntervalをプロパティとして実装しなかった場合。
(1) タイマー動作時にIntervallを変更するためにはStartを実行することになるが、
OOP的に不自然
(2) そもそもTimerオブジェクトは、少なくとも動作時にはIntervalの値を保持している。
だったらこれをプロパティとして公開する方が自然
- 36 :デフォルトの名無しさん :2018/04/11(水) 02:01:15.23 ID:nomvJ3n3M.net
- >>35
動作中にIntervalの値を変えられると困る場合、
Start時のみ設定可能にするのは別に不自然でもないよ
OOPの目的はメンテナンス性と事前の徹底したバグ潰しだから、値を変更できるルートを予め絞っておくことは理に適ってる
- 37 :デフォルトの名無しさん :2018/04/11(水) 02:46:11.71 ID:mkq9MyW9a.net
- >>36
現実と違う仮定を置いたら何でも言える
- 38 :20 :2018/04/11(水) 07:04:30.38 ID:Q5HB2TyRM.net
- 色々とアドバイスありがとうございます
統一性があれば、後はデザパタに従うか等で決定するのが一般的と解釈しました
田舎の中小1人情シスでコードレビューもされないので世間の動向が分からず参考になります
都会の大手の人は切磋琢磨し洗練されたコードを書くんだろうなと憧れます
- 39 :20 :2018/04/11(水) 07:52:53.54 ID:Q5HB2TyRM.net
- >>29
あまり我流過ぎるとチーム開発の時に混乱するという心配がありまして
- 40 :デフォルトの名無しさん :2018/04/11(水) 11:00:26.66 ID:uvPDHOSBM.net
- >>39
対象を無視してオレオレナントナク基準で決めるほうが我流
物事にはそれぞれ特性があり最適な答えはいつも違う
それを導き出すには都度考えて議論を重ね実験を繰り返すしかないんだよ
- 41 :デフォルトの名無しさん :2018/04/12(木) 20:03:06.85 ID:XQKU/nO90.net
- 見積り終わってるのに時間かけても無駄
一円の利益にもならない
今回の開発で黒字でなければ2回目はない
よって一番時間がかからない方法が正義
- 42 :デフォルトの名無しさん :2018/04/12(木) 20:52:33.85 ID:bR5mzWUWM.net
- 業務系はそれでいいのかもね
保守するのは自分でも自社でもない
ならどんなに汚いコードでも早くしあげたほうが勝ち
ただし納品された顧客はとんでもない借金を背負うことになる
罪悪感ってないのかね
- 43 :デフォルトの名無しさん :2018/04/12(木) 21:50:50.18 ID:XQKU/nO90.net
- >>42
いや
君のやり方だって怪しいもんじゃない?
具体的に○○さんのコードは見易くてわかりやすいですねって言われた実績あるの?
無いのに勝手な妄想で自分のコードを保守しやすいと思い込んでない?
- 44 :デフォルトの名無しさん :2018/04/12(木) 21:55:35.29 ID:kW0JyjC+0.net
- まーた始まった
- 45 :デフォルトの名無しさん :2018/04/12(木) 21:57:30.18 ID:XQKU/nO90.net
- >>44
お前なんか全身elseで強化した俺の敵じゃねぇ
- 46 :デフォルトの名無しさん :2018/04/12(木) 22:06:57.86 ID:kW0JyjC+0.net
- >>45
ナマ言ってすみませんでした
- 47 :デフォルトの名無しさん :2018/04/13(金) 01:45:08.04 ID:JNl7+QPK0.net
- VisualStrudioのC#でPS4を入力を表示するソフトを作りたいんだけども、
どんなライブラリが便利かな?
- 48 :デフォルトの名無しさん :2018/04/13(金) 06:13:51.49 ID:Om81X5Te0.net
- >>47
PS4の入力ってなに?
コントローラの事?
- 49 :デフォルトの名無しさん :2018/04/13(金) 07:25:42.50 ID:ko86uHhA0.net
- 日本語でOK
- 50 :デフォルトの名無しさん :2018/04/13(金) 18:47:05.89 ID:GNeQyvWjM.net
- PS4を窓の外に出力する
入力すならまずはアマゾンで注文
- 51 :デフォルトの名無しさん :2018/04/14(土) 14:59:27.41 ID:x6wpDOBa0.net
- 作画ソフトを作成したいのですが
解像度より大きな領域を扱うことになりそうです
10%〜800%まで拡大縮小ができて
編集操作を行う必要があるのですが
どのような造りにしたら良いのでしょうか?
自分でスクロールバーを置いて編集領域は自前で描画するのでしょうか?
PictureBoxのようなコントロールでスクロール操作までできてしまうのでしょうか?
- 52 :デフォルトの名無しさん :2018/04/14(土) 15:03:33.67 ID:A6JgIv/D0.net
- ドロー系?
ペイント系?
- 53 :デフォルトの名無しさん :2018/04/14(土) 15:08:53.93 ID:x6wpDOBa0.net
- >>52
具体的には印刷すると模造紙ぐらいの大きさのでっかい回路図を作成します
保存するファイル形式はXmlです
- 54 :デフォルトの名無しさん :2018/04/14(土) 15:26:50.36 ID:whWbsAFN0.net
- >>50
入力酢?
- 55 :デフォルトの名無しさん :2018/04/14(土) 16:20:27.70 ID:411sIKLXa.net
- >>51
自分でスクロールの機能まで実装してもいいけど、
特に理由がないならコンテナ(例えばPanel)の中にPictureBoxを入れて使うのが
普通じゃないですか
- 56 :デフォルトの名無しさん :2018/04/14(土) 17:09:28.19 ID:D8vt8UcC0.net
- >>51
PictureBoxにスクロールバー表示するのは
https://dobon.net/vb/dotnet/graphics/scrollimage.html
例ではコードでプロパティ設定しているけどデザイナで設定しても同じようにできる
- 57 :デフォルトの名無しさん :2018/04/14(土) 17:16:13.98 ID:A7r7eR+xa.net
- 模造紙レベルのでっかいpitureboxで画像のまま編集は現実的じゃないけどね
実際は表示部分だけ都度計算して描画することになる
ドロー系にしてもまあ普通は向いてない
C++でやるような内容だよ
- 58 :デフォルトの名無しさん :2018/04/14(土) 18:55:16.11 ID:A6JgIv/D0.net
- 論理座標とワールド座標、デバイス座標をよく理解すべき
- 59 :デフォルトの名無しさん :2018/04/14(土) 19:31:26.26 ID:x6wpDOBa0.net
- >>55-58
ありがとうございます
頑張って見ます
- 60 :46 :2018/04/14(土) 20:40:54.18 ID:iGVhaI1m0.net
- すいません、PS4のコントローラをPCに接続して、
入力ボタンを表示したいのです。
- 61 :デフォルトの名無しさん :2018/04/14(土) 21:18:11.42 ID:whWbsAFN0.net
- >>60
https://game.watch.impress.co.jp/docs/series/ggl/637329.html
- 62 :46 :2018/04/14(土) 23:01:59.31 ID:iGVhaI1m0.net
- 配置が違うだけなのか。
でも認識させるにはDirectXのラッパーとか使うしか無さそうなのね。
- 63 :46 :2018/04/17(火) 01:46:03.23 ID:kRrGnVcd0.net
- 出来ましたー、ありがとうございます。
DirectInput
http://nanoappli.com/blog/archives/4772
Xinput
https://gist.github.com/kb10uy/7368358
- 64 :デフォルトの名無しさん :2018/04/17(火) 13:28:00.94 ID:NEdohK8t0.net
- Task.Factory.StartNew(またはTask.Run)で生成したスレッドの優先度を変える方法はあるのでしょうか。
- 65 :デフォルトの名無しさん :2018/04/17(火) 14:11:36.85 ID:NEdohK8t0.net
- 63ですがスレッドプールを使わず、スレッドで対応することにしました。
- 66 :デフォルトの名無しさん :2018/04/17(火) 16:42:17.15 ID:joazaAE7M.net
- なぜレガシィな方向へ走るw
- 67 :デフォルトの名無しさん :2018/04/17(火) 17:42:06.89 ID:NEdohK8t0.net
- >>66
Taskだと処理中に割り込み?が割と入ってきて、処理時間が遅延してしまうのです。
スレッドレベルで優先度を上げたいと思いまして。
結局Threadにして優先度を上げても割り込みは入ってくるのですが、多少マシになったような気がします。
- 68 :デフォルトの名無しさん :2018/04/17(火) 18:11:29.55 ID:xGjbcgxza.net
- どんだけタイムクリティカルな要件なのよww
- 69 :デフォルトの名無しさん :2018/04/17(火) 21:11:51.39 ID:kHPr9dOS0.net
- パソコンぶん投げてPLCにしよう
- 70 :デフォルトの名無しさん :2018/04/17(火) 23:58:42.15 ID:zXGef27d0.net
- picでも使えよ
- 71 :デフォルトの名無しさん :2018/04/18(水) 00:12:24.46 ID:WXSfEMqB0.net
- >>67
それ単にスレッド生成で遅延しているなんてオチじゃないよな?
- 72 :デフォルトの名無しさん :2018/04/18(水) 10:23:12.22 ID:+D/RfByR0.net
- 受託案件なのでC#で作らざるを得ないのです。
自分自身はファーム屋なので、マイコンでやりたいんですけどね。
>>71
まだ遅延の原因はわかってませんです
生成時だけの遅延じゃないので、違うとは思いますが・・・
- 73 :デフォルトの名無しさん :2018/04/18(水) 12:14:14.43 ID:wyULW0oVM.net
- プロセスの優先度もあげるといいらしいぞ
- 74 :デフォルトの名無しさん :2018/04/18(水) 12:31:04.61 ID:WeKuLBkMM.net
- 糞多い要素群にlinqで遅延実行+ループとか?
- 75 :デフォルトの名無しさん :2018/04/18(水) 18:10:56.40 ID:jY7uFFSia.net
- >>72
Win32で作る
- 76 :デフォルトの名無しさん :2018/04/18(水) 21:09:40.32 ID:unjr58vW0.net
- >>72
GCやJITは対策してる?
- 77 :デフォルトの名無しさん :2018/04/19(木) 18:59:16.22 ID:Yr3hu/ey0.net
- ユーザーコントロールのプロパティをデザイン時のプロパティウィンドウでコンボボックスにしたく
人様のサイトで恐縮なのですが、以下をほぼコピペしました。
http://blog.okazuki.jp/entry/20070207/1170820895
が、テキストボックスのままで選択肢になりません。
公開プロパティに、なにか別の宣言が要りましたでしょうか?
- 78 :デフォルトの名無しさん :2018/04/19(木) 19:15:06.26 ID:Yr3hu/ey0.net
- 継承ユーザーコントロールだったのですが、継承元にも
[System.ComponentModel.TypeConverter(typeof(〜 が必要だっただけみたいです。
すみませんでした。
- 79 :デフォルトの名無しさん :2018/04/19(木) 19:48:23.98 ID:Yr3hu/ey0.net
- 引き続きすみません。
たとえばユーザーコントロールに
Folder
File
という2つのstring型の公開プロパティを用意します。
IDEのプロパティウィンドウからFolderを設定(通常のテキストボックス)すると
そのフォルダ内のファイルを舐めてFileの選択肢にしたいのです。
TypeConverterで、静的な候補が出て選択できるところまでは出来たんですが
動的に候補を変更する場合、どうするんでしょうか。
IDEのプロパティウィンドウに、どうアクセスしたらいいのか、そこが分かれば何とかなる気がしてるんですが。
- 80 :デフォルトの名無しさん :2018/04/20(金) 01:01:44.37 ID:xYBhqDqu0.net
- >>79
Visual Studio .NET プロパティ ブラウザによるコンポーネントの本格的な RAD 化
https://msdn.microsoft.com/ja-jp/library/aa302334.aspx#vsnetpropbrow_topic04
このドロップダウンでできると思う
- 81 :デフォルトの名無しさん :2018/04/20(金) 05:10:41.06 ID:OZAtcLZg0.net
- 初歩的な質問で申し訳ないのですが、
戻り値なしのメソッドと、引数なしのメソッドはどういう状況で使用するのでしょうか?
戻り値なしのメソッドは
その後にどこかに代入したりする予定はなく出力が目的の場合に使用すると
読んだのですがその通りですか?
万が一、後で代入したくなった場合に備えて取り敢えず戻り値は設定しておいたりしないのでしょうか?
引数なしのメソッドは
引数がない(=変数宣言がない?)とそのメソッド自体、動いてくれないイメージがあるのですが、実際は動きますよね
何も値を与えられていないのに動くのはどうしてですか?
宜しくお願いします・・・
- 82 :デフォルトの名無しさん :2018/04/20(金) 05:52:22.55 ID:6mS8vUfV0.net
- >>81
オーバーロードで検索してみると良い
- 83 :デフォルトの名無しさん :2018/04/20(金) 06:02:00.71 ID:OZAtcLZg0.net
- >>81
例えば
int Add(int a, int b) {
int c;
c = a + b;
return c;
}
というメソッドですと、Add(3, 5)ならaとbにそれぞれ3、5が入りc=8となると思うのですが、
abc = xyz,Add()といった風に使用しても、cの値も何も返ってこないのに、
引数なしのコードを見かける様な・・・
- 84 :デフォルトの名無しさん :2018/04/20(金) 06:29:51.46 ID:wjKqEKEv0.net
- >>81
デフォルト引数で統合しなされ
- 85 :デフォルトの名無しさん :2018/04/20(金) 09:05:47.03 ID:3LwLCVWq0.net
- >>81
メソッドってのは別に数値の計算だけするわけじゃない
何かの処理なので、その処理に引数が必要なら引数を渡すし
その処理に結果があるなら戻り値がある
- 86 :デフォルトの名無しさん :2018/04/20(金) 09:40:55.97 ID:9jg3Q7S00.net
- >>85
横からごめん
処理に結果がないならそれはもう何も処理してないのと同じじゃないの?
- 87 :デフォルトの名無しさん :2018/04/20(金) 09:50:08.64 ID:3LwLCVWq0.net
- >>86
君がうまい説明してあげてね
- 88 :デフォルトの名無しさん :2018/04/20(金) 10:06:30.92 ID:9jg3Q7S00.net
- >>87
>>85の説明が間違ってると言いたいんじゃなくて
単純に理解できなかったんだけど誤解させたならごめん
とはいえせっかくだから自分なりに説明を考えてみたんだけど
プログラムを動かすことが目的じゃなくて人間に読ませてアルゴリズムを
分からせることが目的の場合は最終的な結果は必要ないって感じかな?
- 89 :デフォルトの名無しさん :2018/04/20(金) 11:57:10.77 ID:DKeEixVwd.net
- >>81
メソッドは外注さんへの作業手順書みたいなもん
引数は、その作業に必要な情報がある場合に外部から渡すための窓口
情報不要なら省略できる
引数なし=こっちから情報渡さなくても作業できるよね?みたいな感じ
メソッド内で作業が完了したあと、なんか返事してほしい場合は戻り値をつかう
返事不要の場合void
戻り値なし=作業さえしてくれたら結果レポートいらね!
メソッドコール(外注さんへ仕事依頼)したら作業はちゃんとされるので、結果のレポートを使って、さらになんか作業をしたいなら戻り値よこせよ!って作業手順書に書いておけばいいし、仕事さえしてくれたら、返事不要なら戻り値いらない
- 90 :デフォルトの名無しさん :2018/04/20(金) 11:59:20.85 ID:o6RSJKQdd.net
- >>81
コントロールにupdateってメソッドがあるだろ?
これは自身の再描画をするだけのメソッドなんだから引数を取りようがない
また再描画するだけなのに失敗するわけないんだから戻り値もいらない
無理やり成否を返すこともできるが、失敗する可能性があるメソッドに様変わりし、呼び出し元で失敗を意識した実装にしなきゃいけないから負担を強いることになる
って感じかな
- 91 :デフォルトの名無しさん :2018/04/20(金) 12:23:49.11 ID:9v7e203Yr.net
- 引数のとりようも戻り値の返しようもなんぼでもあるわ
へんな忖度みたいな真似すんなボケ
- 92 :デフォルトの名無しさん :2018/04/20(金) 12:38:55.75 ID:9jg3Q7S00.net
- >>89
作業が行われればレポートは要らないというのは例えば殺し屋みたいな?
でもコンピューター上でそれを再現するならターゲットもターゲットの生死も0と1のデータなんじゃないの?
だとしたらそのデータはどこに消えるの???
>>90
同じようなことばっかり聞いて悪いんだけど再描画の結果も0と1のデータなんじゃないの?
それがメモリに残らないのに再描画は成功という意味がわからない
>>91
戻り値の返しようがあるというのは返さない選択肢もあるということ???
戻り値を返さないプログラムに人間に読ませる以上の価値があるとすればそれを教えて欲しい
- 93 :デフォルトの名無しさん :2018/04/20(金) 12:44:06.99 ID:yZlfbYWOM.net
- オブジェクトとは何かね
- 94 :デフォルトの名無しさん :2018/04/20(金) 12:52:07.95 ID:wBOVlPyYM.net
- >>92
横からで悪いけどたとえ話がおかしいし
言ってることが伝わらない
もっとまとめてから書くべき
- 95 :デフォルトの名無しさん :2018/04/20(金) 12:58:41.12 ID:luJyaFhBa.net
- >>81
まあ、一言でいうと愚問だねw
そんなこと考えても時間のムダ。
真面目な話、その疑問はそのまま放置して前に進む方がいいと思う。
- 96 :デフォルトの名無しさん :2018/04/20(金) 13:08:12.31 ID:9jg3Q7S00.net
- >>93
オブジェクト指向ってやつか!
オブジェクトを使うと結果がない処理にも意味があるってこと?
>>94
まとめるなら「結果がない処理の価値がわからない」って感じかなあ
>>95
詰め込み教育への皮肉だと思うけど正直分かりにくいかも
もし本気で言ってるならさすがに時代遅れだから考え直したほうがいいよ
- 97 :デフォルトの名無しさん :2018/04/20(金) 13:26:58.95 ID:luJyaFhBa.net
- >>96
経験が足りないために起こる疑問は経験を詰むことでしか解決しない。
構造化プログラミングの意義もOOPの意義も、体感できるのは
実際にコードを自分でコードが書けるようになってから。
本で読んだだけで最初からそれが分かるのは一部の天才だけ。
逆にいえば、>>81の疑問は頭の良い人が考えた難しい理論を理解しないと
解決しないような問題じゃなく、誰でも体験すれば自然と分かる程度の話ってこと
- 98 :デフォルトの名無しさん :2018/04/20(金) 13:48:46.74 ID:o6RSJKQdd.net
- >>92
0と1?何を言ってるのかわからん
14時に集合ってメール出して、全員からわかったみたいな返信きてもうざいだろ?
だから、14時集合(返信不要)ってメールをおくる方が受け取る側も返信しなくていいし、送る側も無駄な受信を減らせるしでwinwin
この辺りは経験だったりセンスだろうな
- 99 :デフォルトの名無しさん :2018/04/20(金) 14:03:32.43 ID:0EVFmTU60.net
- >>96
成否の観点では単にフィールドの値を設定するメソッドを鑑みても
メモリに書き込み失敗の概念があっても、代入に失敗の概念はない
設定前の値を返すにしても、わざわざ退避する処理を強制するのか?
想定外の発生は基本的に例外をぶん投げるものだし
常人が気にしない様な事を考えて躓いてそうである
- 100 :デフォルトの名無しさん :2018/04/20(金) 19:05:49.61 ID:W6WTRmLV0.net
- 関数型プログラミングの才能があるな
総レス数 1006
311 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★