C#, C♯, C#相談室 Part71
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2012/03/24(土) 16:43:24.60C#, C♯, C#相談室 Part70
http://toro.2ch.net/test/read.cgi/tech/1327570969/
Visual Studio 2010 Express
http://www.microsoft.com/japan/msdn/vstudio/express/default.aspx
0583デフォルトの名無しさん
2012/04/28(土) 21:55:54.06>列挙の要素が10あると100通りのif文を書く方法しか思いつかなくて
列挙の要素が10あると2^10通りのif文を書く方法しか思いつかなくて
の間違いじゃね?
0584デフォルトの名無しさん
2012/04/28(土) 21:59:46.49だろ。
0585デフォルトの名無しさん
2012/04/28(土) 22:03:59.12んー、そうだなあ。
if文を減らすため、ていう単独の目的なら、常に「列挙できないか」という視点を持って見ると良いかも。
今回ので言えば、俺ももう一人の人も、Enum.GetValuesとか、Type.GetEnumValuesとか、
列挙体(enum)を列挙(IEnumerableとして取得)して、実現させてるでしょう?
C#の一つの方向性として、IEnumerableの活用ってのはそれなりに熱いし、
Microsoftもある程度注力しているから、そこは大事かな。
全体的なスキルの向上に関しては、目的に従って検索したら、
たとえ目的に合わない様な検索結果でも、とりあえず理解出来ないかトライするってのが良いと思う。
懇切丁寧に教えてくれる人が身近にいないなら、自分で自分にムチを打つしかない。
あとは、MSDNの「クラス一覧」みたいなのを、片っ端から読んでみるのも面白いよ。
どうしても分からない事があったら、こういうところで聞くのもあり。
ただ、最初の内は自分が思っている以上に人に伝わる質問が出来ないもの。
可能なら最初から自分のソースコードを可能な限り広い範囲で晒してみるのが良いと思うよ。
0586デフォルトの名無しさん
2012/04/28(土) 22:06:15.31「質問するのに必要なのはここだけだろう」とソースをごく狭い一部分だけ切り出すんじゃなくて、
関連しそうな部分は「可能な限り」全部晒す、ということなので念為
0587デフォルトの名無しさん
2012/04/28(土) 22:09:48.03毎回、if〜で判定して…とか面倒だ↓
汎用的に使えるようにリフレクションとか使えば、できそうだ。
するとどうだろう、毎回if〜で判定してチェックボックス設置してという作業から
ユーザーコントロールひとつ設置して型を登録するだけとお手軽になる。
2,MSDNなり、インテリセンスなり調べる。気になるクラスのメタデータをF12(定義に移動)で
見てみるだけでも良い。何か使えそうなプロパティなりメソッドがあれば、それがヒント。
0588デフォルトの名無しさん
2012/04/28(土) 22:15:47.39ソース自体は全然悪くないと思うよ。今回みたいに、目的が限られているならこれで十分だと思う。
逆に、自分が晒したみたいなソースコードは、時によっては忌避されるべきこともある。
(何でもかんでもリフレクション、なんでもかんでもforeachすりゃ良いってもんでもない)
最初は素直に、こういう風に組んでみるのは全然良いことだと思う。
「一体どこで何が行われるべきなのか」っていうことを知るためには、if文と単純ループだけで作るのが一番大事な基礎だと思うし。
逆に、そういう段階を踏まないと、「なんだ、こんな便利なものがあるのか」と道具頼りで、いざ道具が無い場面に遭遇した時に何も出来ないただのお馬鹿になってしまう。
そこから脱却したい、という話なので、>>585のようなことを考えなきゃいけないね、ということ。
それに、毎回毎回似たようなコードを書くのも面倒臭い、となれば>>587の言うとおり、後で楽するために今苦しむ、というスタンスで行くことになる。
0589デフォルトの名無しさん
2012/04/28(土) 22:19:52.08今回は、リフレクションと列挙体の知識が足りなかったということで勉強になりました
0590デフォルトの名無しさん
2012/04/28(土) 22:21:44.12そうなあ。MSDNの日本語の難解さは異常。
長い時間はかかるけど、いずれ慣れるよ。
俺もWPFの勉強にMSDNと格闘、七転八倒してるところだから頑張ろうじゃないか。
0591デフォルトの名無しさん
2012/04/28(土) 22:22:17.240592デフォルトの名無しさん
2012/04/28(土) 22:24:43.51MSDN見て?が頭の上に3つ浮かびそうになったら、他にわかりやすいところないか
ググる。それでもないならMSDNを解読するしかない。
0593デフォルトの名無しさん
2012/04/28(土) 22:26:09.540594デフォルトの名無しさん
2012/04/28(土) 22:27:05.880595デフォルトの名無しさん
2012/04/28(土) 22:28:25.100596デフォルトの名無しさん
2012/04/28(土) 22:29:21.92ハイパーリンクの偉大さはあるけど。
あと、場合によっては英語で直読みした方が捗る。
0597デフォルトの名無しさん
2012/04/28(土) 22:30:37.75それとも「余所でやれ」と投げ出すかで色々変わる。
スレ違いの話題は忌避されるべきだけど。
0598デフォルトの名無しさん
2012/04/28(土) 22:33:21.41横文字が専門用語のことを言っているのか、英会話の一般的なニュアンスなのか
ここがごちゃごちゃになっているから理解に苦しむ
0599デフォルトの名無しさん
2012/04/28(土) 22:35:17.25だからこそ、HTMLにも色んな要素があるわけだ。
専門用語のことを言っている箇所はそれなりの要素に納めて、
ブラウザはそれを斜体表示するとか。
0600デフォルトの名無しさん
2012/04/28(土) 22:35:57.28既述が分かりにくいという批判はちょっと違うと思う。
0601デフォルトの名無しさん
2012/04/28(土) 22:38:48.98文脈依存だから単語で見るとわからない。
自分は、単語AとBが出てきたら頭の中でフュージョンしたり分離したりしてる。
とりあえず、英単語はプリミティブまで分解して考えないとムズいかしいと自分は思っている。
あと、外国はぶらっくじょーくが起源になってたりするからその可能性も考慮しないといけないような気がする。
0602デフォルトの名無しさん
2012/04/28(土) 22:41:18.93コラム的な書きっぷりのページは、確かに向こうの文化とかも押さえておかないと面食らうことがあるな。
重要なこと言ってるかのように見えて、読み終えてみるとたんなる前口上だったりとか。
0603デフォルトの名無しさん
2012/04/28(土) 22:44:16.74台湾にして繁体字な漢文に設定して読めばめっちゃ読み易くなるよ?
0604デフォルトの名無しさん
2012/04/28(土) 22:45:05.98台湾人愛してる
0605デフォルトの名無しさん
2012/04/28(土) 22:47:44.590606デフォルトの名無しさん
2012/04/28(土) 22:51:58.10確かに。リフレクションなんてカタカナにするから駄目なんだよな。
漢は黙って「Reflection」=「反映」だな。
0607デフォルトの名無しさん
2012/04/28(土) 22:53:41.98次のコード例では、各クラスの複数のオブジェクトを作成し、メソッドはそれらを比較するのEqualsの使用方法を示して、二つのパラメータのカスタムAttributeクラスを定義します。
Attribute.Equals メソッド (System)
http://msdn.microsoft.com/ja-jp/library/09ds241w.aspx
0608デフォルトの名無しさん
2012/04/28(土) 23:02:13.43なぜ短く端的に表現できないのか
0609デフォルトの名無しさん
2012/04/28(土) 23:04:12.610610デフォルトの名無しさん
2012/04/28(土) 23:05:18.180611デフォルトの名無しさん
2012/04/28(土) 23:14:38.330612デフォルトの名無しさん
2012/04/28(土) 23:16:29.92あれのせいでMSDN読む気が起きなくなった。
ちょっとコピーしようとしたら、ポップアップが邪魔しやがる。
0613デフォルトの名無しさん
2012/04/28(土) 23:19:04.85公 階層 属性先引数:属性
{
///これは属性の構築です。
公 属性先引数(文字列 目標文章)
{
これ.目標文章 = 目標文章;
}
//目標文章は、属性文章のための記憶装置です。
保護 文字列 目標文章;
//基本が生成するものに文章を追加するには、文字列に変換()を上書きします。
公 上書き 文字列 文字列に変換()
{
戻り値 基本.文字列に変換()+":"+目標文章;
}
}
0614デフォルトの名無しさん
2012/04/28(土) 23:19:56.33俺はGoogleのインスタントプレビューは鬱陶しいだけだと思うけど、
MSDNの原文表示は別に鬱陶しいと思わないけどな
0615デフォルトの名無しさん
2012/04/28(土) 23:23:36.17もうそこまでいったら、なでしこでやれww
0616デフォルトの名無しさん
2012/04/28(土) 23:30:10.20和製英語ももちろんダメだからな
0617デフォルトの名無しさん
2012/04/28(土) 23:34:38.47メール欄にsageって書いてるぞ
0618デフォルトの名無しさん
2012/04/29(日) 00:09:54.64釦押下時に「こんにちわ、世界」という声明を窓で表示するにはどうしたらよいのでしょうか?
0619デフォルトの名無しさん
2012/04/29(日) 00:24:34.42ああ、そうか、日本語と横文字で単なる文章とそうでないものの見分けが付くから分かりやすいんだな、と。
0620デフォルトの名無しさん
2012/04/29(日) 00:26:26.140621デフォルトの名無しさん
2012/04/29(日) 00:29:13.10C#
オススメはせんけどな。
0622デフォルトの名無しさん
2012/04/29(日) 02:11:56.72>>574
どちらも型をまず登録しなければいけないんだけど
そういう場合はコンストラクタを使ったほうがいいと思うんだけど
それをしなかったのはなぜですか?
あと~の意味はなんですか?ぐぐっても出てこない
this.value & ~changedFlag
0623デフォルトの名無しさん
2012/04/29(日) 02:13:49.501の補数
0624デフォルトの名無しさん
2012/04/29(日) 02:22:55.00確かにこういう場合はコンストラクタを使いたいんだけど、
UserControlのコンストラクタに引数を設定してしまうと、
デザイナで貼り付けられないからだね。
this.value & ~changedFlagは、
this.value と changedFlag の(1の)補数のビット論理積を求めている。
この場合、changedFlag で指定されたフラグを、this.value から解除するためにこうしてる。
参考�@:http://yas-hummingbird.blogspot.jp/2009/02/c_11.html
参考�A:http://ufcpp.net/study/csharp/st_operator.html
参考�B:http://no23.xrea.jp/learning/cs/cs0207Operator4.html
0625デフォルトの名無しさん
2012/04/29(日) 02:31:26.79やっぱりFlagsAttribute付きのenumはちと使いにくいな。
boolをいっぱい持ったclassなりstructの方が使いやすいと感じる。
0626デフォルトの名無しさん
2012/04/29(日) 02:38:47.16>>624
ありがとう
0627デフォルトの名無しさん
2012/04/29(日) 02:45:19.86今までは拡張メソッド作ってたけど、知らんかった。
どうせなら演算もビット演算じゃなくてちゃんとメソッドで定義してくれればいいのに。
static Enum Off(this Enum value, Enum flag)とか
static Enum On(this Enum value, Enum flag)とか作ればいんだろけど、
value.GetType().GetEnumUnderlyingType()して・・・とか考えるとおっくうだなあ。
0628デフォルトの名無しさん
2012/04/29(日) 02:49:22.980629デフォルトの名無しさん
2012/04/29(日) 02:50:32.480630デフォルトの名無しさん
2012/04/29(日) 05:13:54.85資産が何もない状態と仮定して
UMLなどのクラス設計?
いきなりGUIを作成?
抽象クラスを大量に作成する?
Consoleアプリでテストも兼ねて実装から書く?
0631デフォルトの名無しさん
2012/04/29(日) 05:48:21.220632デフォルトの名無しさん
2012/04/29(日) 05:55:39.83どうしたら手に入るか分からない。。。誰か助けてくれい
0633632
2012/04/29(日) 07:08:56.16そうか・・・BindingContextってこうやって使うんだな・・・
0634デフォルトの名無しさん
2012/04/29(日) 07:14:50.45Consoleとdllで2つプロジェクトを作ってモデルの実装と
実験コードの実装を並行して行う。
0635デフォルトの名無しさん
2012/04/29(日) 07:29:04.69・未だにwebAPIを用意しないで昔ながらの差分取得させてる糞仕様に対応した通信系
・糞BEなどを排除しろと五月蝿いキチ対応のための絞込み機能とテキスト検索
・この辺のUIは横へもってこいや!とネットチンピラ対応の柔軟なUI設計
くらいじゃないの?
大まかに分けると
0636デフォルトの名無しさん
2012/04/29(日) 07:41:37.24自民党政府は、日本近海の海底にメタンハイドレートやレアメタルなどの海底資源の存在が確認されたことから、
平成20年11月に7海域(計約74万平方キロ)で大陸棚の延伸を申請していた。
200カイリを超えて海底資源の権益を主張できる大陸棚の拡大について、政府は27日、国連の大陸棚限界委員会が
日本の国土面積の約8割に相当する計31万平方キロの拡大を認める勧告を採択したと発表した。日本が同委員会の勧告を受けるのは初めて。
沖ノ鳥島をめぐっては、中国と韓国が「岩であり大陸棚は設定できない」と反発していたが、
国連の大陸棚限界委員会は日本の大陸棚の拡大を認定した。
http://sankei.jp.msn.com/science/news/120428/scn12042808010001-n1.htm
∧_∧
三 (´Д`) _○_
三/ \/| |
∩ / /| |_| 勝 |
||||| | | |
||ニヒO ヽ \| | 訴 |
∪ /\ ヽ |__|
三 / /| |
三 /_/ | |
\_) (__)
0637デフォルトの名無しさん
2012/04/29(日) 09:33:31.66dynamicで楽々実装
0638デフォルトの名無しさん
2012/04/29(日) 12:09:57.59いまさら2chブラウザなんて作ってみようなんてくらい酔狂なんだから
そのくらい屁でもないだろ
0639デフォルトの名無しさん
2012/04/29(日) 12:39:46.710640デフォルトの名無しさん
2012/04/29(日) 12:47:13.510641デフォルトの名無しさん
2012/04/29(日) 18:44:47.80それとも、起動時にすべて翻訳してるんですか?
0642デフォルトの名無しさん
2012/04/29(日) 18:58:28.320643デフォルトの名無しさん
2012/04/29(日) 19:01:11.50まずは、JIT の意味を調べてから質問しようよ。
0644デフォルトの名無しさん
2012/04/29(日) 19:02:40.06非同期処理でも一行づつだと思うか?
0645デフォルトの名無しさん
2012/04/29(日) 19:05:37.06http://ufcpp.net/study/dotnet/il_about.html
に、「コンパイルしながら実行されます」とあるんで1行1行やってるんでは?
たしかに遅いわけだw
0646デフォルトの名無しさん
2012/04/29(日) 19:18:24.48クラス単位とか、ある程度の区切りでコンパイルされてると思う。
詳しいことは、知らないけど。
0647デフォルトの名無しさん
2012/04/29(日) 19:18:40.56JITはメソッド単位。
始めた呼んだメソッドがあったら、そこで全部ネイティブ化して、以降は直接ネイティブコード実行。
0648デフォルトの名無しさん
2012/04/29(日) 19:29:41.860649デフォルトの名無しさん
2012/04/29(日) 19:33:36.80毎回コンパイルするわけではなく、必要となったときに部分的にネイティブコードに変換して
キャッシュしてるのでは?
0650デフォルトの名無しさん
2012/04/29(日) 19:48:13.81ユーザーコントロールを作成して MouseClick イベントの処理を行うとしていますが、
ユーザーコントロール内にあるラベルの上をクリックすると
ラベルに邪魔されて MouseClick イベントが発生しません。
ラベルの上かどうかを気にせず MouseClick イベントを発生させるには
どのようにするのが一番でしょうか?
ラベルの MouseClick イベントで OnMouseClick を呼ぶ方法を試してみましたが、
ラベルの上でマウスボタンを押して
ラベルから外れた(同ユーザーコントロール上の)位置でマウスボタンを離すと
MouseClick イベントが処理されないため(逆も同様)、
いい加減にクリックしてるとたまに反応しません
0651デフォルトの名無しさん
2012/04/29(日) 19:53:01.62C# via CLSって本で解説されてたけど、内容は忘れたw
0652デフォルトの名無しさん
2012/04/29(日) 19:54:01.59ラベル程度なら使わない方がいいんじゃないの
ユーザーコントロールのOnPaintでDrawStringやDrawText使って文字列描画してあげたらどう
0653デフォルトの名無しさん
2012/04/29(日) 19:55:12.18クリックイベントは子コントロールから伝達される
設定さえしていれば
0654デフォルトの名無しさん
2012/04/29(日) 20:09:43.92GUI で位置調整しづらいので、直接描画は最後の手段にしたいなあ・・・と
ネイティブだと子コントロールをスルーして親にイベントを送るようなフラグがあったような記憶があって、
C# でもそれがあればと思ってます
>>653
見る限りそれらしいものが見つからないです・・・
0655デフォルトの名無しさん
2012/04/29(日) 20:27:36.15子コントロールのイベントを受け取るかどうかのプロパティがある
0656デフォルトの名無しさん
2012/04/29(日) 20:54:25.79ありませんね・・・
ひょっとして 4.0 からのプロパティとかですか?
今は 3.5 で作ってます
0657デフォルトの名無しさん
2012/04/29(日) 21:03:07.06見つけられないならデリゲートイベント使えば?
0658デフォルトの名無しさん
2012/04/29(日) 21:08:04.30そして何故教えてやらぬのだ。
なきゃこういうのも考えるかな。子コントロール一つ一つにイベント登録とか面倒なことこの上無いけど。
public class TestControl : UserControl
{
Label label;
public TestControl()
{
label = new Label();
label.Click += new EventHandler(childrenControls_Click);
}
private void childrenControls_Click(object sender, EventArgs e)
{
this.ClickEventThrow(sender as Control, e);
}
private void ClickEventThrow(Control control, EventArgs e)
{
if (control == this)
this.OnClick(e);
else if (control != null && control.Parent != null)
ClickEventThrow(control.Parent, e);
}
}
0659デフォルトの名無しさん
2012/04/29(日) 21:08:58.700660658
2012/04/29(日) 21:09:35.290661デフォルトの名無しさん
2012/04/29(日) 21:12:32.22Click のレベルで伝えると
>ラベルの MouseClick イベントで OnMouseClick を呼ぶ方法を試してみましたが、
>ラベルの上でマウスボタンを押して
>ラベルから外れた(同ユーザーコントロール上の)位置でマウスボタンを離すと
>MouseClick イベントが処理されないため(逆も同様)、
>いい加減にクリックしてるとたまに反応しません
と同じ問題が発生するのではないかと
ラベルの Down, Up 内で
RaiseMouseEvent で親にマウスイベントを投げられれば
解決しそうではあるのですが、
第一引数の仕様が公開されていないという・・・
0662デフォルトの名無しさん
2012/04/29(日) 21:18:21.19スルーできないようですね・・・
disabled は disabled で困りますので、
結局直接描画で乗り切る事にします
どうもありがとうございました
0663デフォルトの名無しさん
2012/04/29(日) 21:20:06.07すまん、よく読んでなかった。これで行けそうな気もするが気のせいかも知れない。
public class TestControl : UserControl{
public TestControl(){
this.ControlAdded += new ControlEventHandler(_ControlAdded);
}
private void _ControlAdded(object sender, ControlEventArgs e){
e.Control.MouseDown += new MouseEventHandler(childrenControls_MouseDown);
e.Control.MouseUp += new MouseEventHandler(childrenControls_MouseUp);
e.Control.ControlAdded += new ControlEventHandler(_ControlAdded);
}
private void childrenControls_MouseDown(object sender, MouseEventArgs e){
this.MouseDownEventThrow(sender as Control, e);
}
private void MouseDownEventThrow(Control control, MouseEventArgs e){
if (control == this)
this.OnMouseDown(e);
else if (control != null && control.Parent != null)
MouseDownEventThrow(control.Parent, e);
}
/* 以下略。MouseDownのメソッド二つと同じモノを、「MouseUp」に置き換えて続ける */
}
0664デフォルトの名無しさん
2012/04/29(日) 21:20:53.86Up/Downの伝播だけだと不足なのね。やらかしたー
0665デフォルトの名無しさん
2012/04/29(日) 21:31:13.54WndProcをオーバーライドしてWM_NCHITTESTにHTTRANSPARENTを返せ、だとさ
てか、普通にググれば答え出てくるじゃん。ググれよ
0666デフォルトの名無しさん
2012/04/29(日) 23:01:22.78ってことは、あるメソッドが呼ばれる場合
以前に翻訳済みか否かをチェックして、未翻訳だったら翻訳して実行
を繰り返してるってこと?
ほぼ、インタプリタじゃんw
VB6の方が速いんじゃね?
0667デフォルトの名無しさん
2012/04/29(日) 23:06:46.130668デフォルトの名無しさん
2012/04/29(日) 23:08:53.82モビルスーツに何言っても無駄だろw
お前馬鹿なの?
ガノタはこれだからw
俺はC#の話をしてるんだよw
0669デフォルトの名無しさん
2012/04/29(日) 23:12:35.56http://www.atmarkit.co.jp/fdotnet/vbcheer/vbcheer08/vbcheer08.html
>VB.NETがネイティブ・コード・コンパイラを持たないということと、インタープリタで実行されることはイコールではありません。
0670デフォルトの名無しさん
2012/04/29(日) 23:16:45.540671デフォルトの名無しさん
2012/04/29(日) 23:18:29.46IL⇒ネイティブ翻訳を随時おこなってたら、翻訳時間が上乗せされちゃって最終結果が
得られるのは遅れるんじゃないの?
0672デフォルトの名無しさん
2012/04/29(日) 23:19:27.58速度を気にするようなシーンとは、どのようなシチュエーションでしょうか?
0673デフォルトの名無しさん
2012/04/29(日) 23:19:39.12俺もそのスタンスだ。
今時のスペックだと、特に気にすることでもないと思う。
0674デフォルトの名無しさん
2012/04/29(日) 23:19:56.370675デフォルトの名無しさん
2012/04/29(日) 23:21:26.59色々あるけど・・・
具体例挙げると仕事の話になっちゃうからな。
抽象的な例だけど、たとえば緊急地震速報みたいなリアルタイム性を求められるシステムなら、
より計量でコンパクトなシステムを目指すし、C#は牛刀で兎、になっちゃうだろうと思うが。
0676デフォルトの名無しさん
2012/04/29(日) 23:23:34.14えらく大きく出たなw
0677デフォルトの名無しさん
2012/04/29(日) 23:23:44.61C#の遅さを体験するってどんだけ反射神経いいんだよ
0678デフォルトの名無しさん
2012/04/29(日) 23:28:40.80速度と正確さが最優先されるのでC++やアセンブラ言語などを使う。
しかし、データを閲覧するだけのクライアントは、0.01秒の差とかどうでも良いわけで
そういったクライアント側は、C#などを使って開発効率を優先する。
0679デフォルトの名無しさん
2012/04/29(日) 23:31:32.22上手い例思い付かなかったw
>>677
体験するかどうかはどうでもよくね。
リアルタイム性を求めるなら、っていう例として、あんま良い例が浮かばなかった。
でも実際、俺があーいうシステム作れ、って言われたらコアでわざわざC#は
採用しないかな、って思うわ。おもてづらとかなら使うかもだけど。
と書いてたら、>>678が同じようなこと書いてるな。
そうだなあ。自動車の制御ソフトとかでもいいよ。
とかくリアルタイム性を求められるシステムなんて、医療、金融、宇宙開発、エトセトラ。
くさるほどあるだろうよ。
0680デフォルトの名無しさん
2012/04/29(日) 23:33:13.02パソコン上で作るアプリケーションなら、言語選択で変わる程度の性能速度なんて今時どうでもいいじゃん、って思ってる。
0681デフォルトの名無しさん
2012/04/29(日) 23:33:53.04ほぼ同じになるはずで、むしろ速度差なんて出るとも思えんけどね。
パソヲタのベンチマーカーみたいなヨタ話ってなんか失笑
0682デフォルトの名無しさん
2012/04/29(日) 23:35:07.18たとえば、1日10億トランザクションをこなさなきゃならないシステムがあったとしたら、
そこにC#を投入するか?って聞かれたら、いやいや、ってなるわな。
それもやっぱり、おもてづら(帳票画面とか)はC#なりJavaなりで作るだろうけど、
コアはそれなりの言語を採用すると思うわ。
■ このスレッドは過去ログ倉庫に格納されています