- 1 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:11:11 ]
- (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
前スレ C#, C♯, C#相談室 Part52 pc12.2ch.net/test/read.cgi/tech/1238548552/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>2-5くらい
- 943 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 08:47:45 ]
- F#でかけばMath.とか書かずにすむお
- 944 名前:>>913 mailto:sage [2009/08/21(金) 10:39:22 ]
- >>913です。
自己解決したので解決方法を。 parameters = new Object[] { "A1" }; objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, parameters); Object tmpTable = new object[1]; →tmpTable = (System.Object[])(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null)); // 「→」行部分実行時に Error:型'System.String'オブジェクトを型'System.Object[]'にキャストできません のエラー parameters = new Object[] { "A1" }; objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, parameters); String str = string.Empty; str = (System.String)(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null)); MessageBox.Show(str); 無事A1セルに入力されていたValueを取得することができました。 無駄にキャストしていたことが問題だったのですね。エラーみろよっていってくれた>>915さんどうもです。
- 945 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 16:47:03 ]
- Double型をString型に変換する方法を教えていただけませんか?
- 946 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 16:53:59 ]
- ToString
- 947 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 17:43:13 ]
- >>946
ありがとうございます。>>945です doubleを無理やりstring型にキャストしようとしてました^^;
- 948 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 17:44:05 ]
- キャストの意味を勉強しなおそう
- 949 名前:デフォルトの名無しさん [2009/08/21(金) 17:51:22 ]
- DataGrid へ適当なクラスリストのバインドを考えています。
ただ、表示対象は対象クラスが保持するプロパティの一つに限定したいです。 後々にDataGrid から SelectedItems として、バインドしたクラスのデータを取得を考えます。 ここで、クラスをそのまま ItemsSource へ突っ込むと、クラス名が表示されてしまいます。 こういった場合、特に二行目の部分ではどんな風にすれば対象プロパティのみ表示可能でしょうか。 よろしくおねがいします。
- 950 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:04:56 ]
- 全体に意味が分からんが、まずそれはWPFか?
- 951 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:07:19 ]
- >>949
>ここで、クラスをそのまま ItemsSource へ突っ込むと、クラス名が表示されてしまいます。 ここで、クラスをそのまま ItemsSource へ突っ込むと、突っ込んだリスト中のクラスが保持するメンバクラスの名前、でした。 class hoge { public int m_hoge; public foo m_foo; } class foo { で言う foo です。 m_hoge | m_foo ------+------ 2 | m_foo 2 | m_foo 3 | m_foo 4 | m_foo
- 952 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:10:29 ]
- >>950
WPF というか、 Silverlight でやってます。 >>951 では途中で送信してしまったので、続きです。 class foo { public int m_x; public int m_y; } ここで、 foo というクラス名ではなく、数字の x を出力したい。
- 953 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:10:59 ]
- パブリックプロパティ用意すりゃいい
- 954 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:18:24 ]
- XAML側でどのプロパティを表示するかの指定があったはず−。
それにしてもpublicなフィールドでm_って気持ち悪い命名規則だね。
- 955 名前:デフォルトの名無しさん [2009/08/21(金) 18:27:16 ]
- >>954
ありがとうございますっ! そういうのを探していました。 とても助かりました。
- 956 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:51:19 ]
- アクセサを使いましょう
- 957 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:53:43 ]
- XAMLのバインディングってわかりづらいよね
もとより人間が書くものじゃないんだろうけど
- 958 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 19:01:24 ]
- >>956
アクセサって get とか set ですよね? XAML と合わせて検索しても、どうにも分らないです。 すみません。 バインディングの記述に利用する識別子でしょうか? >>957 未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。 慣れの問題でしょうか……。
- 959 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 19:20:53 ]
- BindingのPathは . 使ってプロパティのプロパティを指すこともできる
つかフィールドってバインディングできたっけ? プロパティじゃないとダメな気が > 未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。 XAMLに記述するのはViewModelのクラスのだから問題ない
- 960 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 19:23:48 ]
- >>942
>>927の考えは>>939やチミが勝手に心配しているような意味じゃないと思うぞw 別にクラスの中にしかメソッドが存在できないのがウザい、 というような意味のことは言ってないだろう。 っていうか、複雑な計算式をベタにコーディングしたら >>927のように思うのはむしろ普通のこと。 実際見難くくてかなわんよ。 だから>>930のようにアドバイスするのが正しい。 しかし、今に始まったことじゃないけど本当シロートがシロートに講釈垂れる 図式が多すぎるなここ。
- 961 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 20:55:24 ]
- >> 未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。
>XAMLに記述するのはViewModelのクラスのだから問題ない どうにもバインディングを勘違いしていました。 特に制約無く作ったデータでもバインディングは行えるものとして考えていました。 バインディングは特定のインタフェースを実装したクラスしか不可能なのですね。
- 962 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 21:01:05 ]
- >>961
>バインディングは特定のインタフェースを実装したクラスしか不可能なのですね。 違う。 設計の問題で、バインディング自体にそういう制限は無い。
- 963 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 00:13:55 ]
- >>960
このレベルの自分で頭使わないで文句言うタイプには「黙って書いとけ」が正しい。
- 964 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 00:39:36 ]
- ""(空文字列)との比較は以下のどれがいいですか?
それぞれのメリット・デメリットを教えてください。 @str.Equals("") AString.Equals(str, "") Bstr == "" Csrt.Length == 0 D"".Equals(str)
- 965 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 00:45:34 ]
- 個人的には3
他は4以外objectで比較できちゃう 14はstrがnullのときを考慮しないといけない でも大体はString.IsNullOrEmptyで片付けるかな
- 966 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 00:46:47 ]
- あくまで個人的な意見だけど。
俺は「str==""」が一番シンプルかつ直感的でいいと思うね。 1. 参照アドレスの比較と差別化するという意味合いはご尤もだが…。ここまでする必要あるかなぁ。 2. 冗長。 4. 使う場面による。文字列自体に着目した流れで来てるのか、 文字列の長さに着目した流れで来てるのか、というのが判断基準。 5. これは逆。どういう意図でこう書くんだろう。
- 967 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 00:58:15 ]
- 5の書き方はJavaかなんかでこうするのがイイ
みたいなのがどっかに載ってた気がする(そして当然叩かれてた) C#だと3かIsNullOrEmptyだよね。
- 968 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 01:05:59 ]
- fxcopにIsNullOrEmpty使えっていわれたような
- 969 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 01:14:50 ]
- C#の世界でも割と「==使うなEquals()使え」っていう教条主義的意見は
見かけるね。 というか、俺の見解では、そもそも==がデフォで参照等価の検査なのが直感的じゃない。 少なくともこれに関してはVBの方がまともに感じる。 つまり、参照等価の検査用には別の演算子を導入することにして、==の方は 値等価用にオーバーロードしないと使えない方が分かりやすい。 まあそれを言うと、そもそもC由来の=と==からして逆なんじゃないのかとも思うが…
- 970 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 01:34:35 ]
- しかし値の同一性ってのはデフォで定義できない
- 971 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 01:40:47 ]
- Estr == string.Empty
- 972 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 01:42:52 ]
- IsNullOrEmpty 派です。
- 973 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 02:14:56 ]
- >>966
>5. これは逆。どういう意図でこう書くんだろう。 これはリテラルのequals()呼び出しだから、コンパイラが最適化してくれる 可能性がある、という説明で自分は納得した。 実際のところ本当かは検証したわけじゃないけど、どう再定義してるかわか んないstrのequals()を呼び出すよりは速い可能性があるというだけで充分 に意味はあると考えてる。
- 974 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 02:22:55 ]
- Javaでの話だけど、str.equals("")だとstrがnullのときにぬるぽの例外になるので、
"".equals(str)がいいんだって言っていた。 でも、まともな意見の人は"".equals(str)に否定的な人が多いという印象。
- 975 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 02:25:37 ]
- 君の印象ではなく「まともな意見」でどう否定したかが重要。
- 976 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 02:29:39 ]
- つか str.Equals("") とほぼ等価でかつ str が null でも大丈夫だから
だろ。2 と 3 がほぼ同じ意味であることを除けば他は意味とか前提が 色々微妙に違う
- 977 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 02:57:02 ]
- class Tuple<T1,T2>{ T1 _t1,T2 _t2}(アクセッサとか省略)みたいな奴で
Tuple<Hoge,HogeHoge> tuple1,tuple2の比較したいときに、class でなくstructなら_t1,_t2が各々==でtrueの時tuple1==tuple2になるんだっけ? classでEqualsとかoverrideするのめんどくさいよ(´д`)ママン… 属性とかの指定一発でやってくれ・・・
- 978 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 03:46:49 ]
- >>964
俺も>>971と同じ書き方するな。 でも null と空文字列で特別に違う意味がなければ IsNullOrEmpty を使う。
- 979 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 05:58:42 ]
- str.Equals(string.Empty)か
String.Equals(str,stringEmpty) だな。 javaと違って参照でも'=='が使えるのは知ってるんだけどね。
- 980 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 06:46:21 ]
- String以外にも話を展開してみる。
Equalsはタイプセーフではない。 Equalsをoverrideするなら==、!=もoverrideしなければならない。 a.Equals(b)はnullチェックが面倒なので、Object.Equals(a,b)が有効。
- 981 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 06:50:49 ]
- タイプセーフでないというのは事実だけど、型を意識しないで比較するのは個人的にはなしだ。
ライブラリ製作者と使用者で意見が食い違うところか。
- 982 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 07:22:05 ]
- 10.0と10は違うのか?→時と場合と人による
"a"と'a'は違うのか?→〃 10と10は違うのか?→〃 しかし”参照”としての比較はドメインが”参照”に固定されているので混乱しない 値の比較はドメインが固定できないので混乱する 値の比較であーだこーだ言っていてもはじまらね
- 983 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 07:35:17 ]
- >>968はこれか
msdn.microsoft.com/ja-jp/library/ms182279.aspx それはそうと次スレは?
- 984 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 08:59:39 ]
- >>980
>タイプセーフではない。( 値型以外では使うことはまずないけど IEquatable<T>.Equals(T o) >Equalsをoverrideするなら==、!=もoverrideしなければならない。 Stringのようにimutableでない限りは==や!=演算子のoverrideはするべきではない。
- 985 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 11:02:53 ]
- なんで
- 986 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 12:31:41 ]
- 次ぎたててくる
- 987 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 12:34:22 ]
- C#, C♯, C#相談室 Part54
pc12.2ch.net/test/read.cgi/tech/1250911923/ はい
- 988 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 12:44:02 ]
- >>987
^^
- 989 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 13:00:55 ]
- .NET 4では2.0の部分のパフォーマンスの向上とかあるのかな?
- 990 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 13:09:55 ]
- BCL部分はC#4.0などにあわせて確実に手が入るけど
WinFormsはどうせ放置だろ
- 991 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 13:36:55 ]
- >WinFormsはどうせ放置だろ
せっかく枯れてきたのに手を入れられてもねぇ…
- 992 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 13:40:42 ]
- 2005以降に追加されたコントロールのバグはしっかり直してくれないと
困ると思うけど… toolstrip関連はバグ多過ぎなんだよ本当。
|

|