C#, C♯, C#相談室 Part53at TECH
C#, C♯, C#相談室 Part53 - 暇つぶし2ch972:デフォルトの名無しさん
09/08/22 01:42:52
IsNullOrEmpty 派です。

973:デフォルトの名無しさん
09/08/22 02:14:56
>>966
>5. これは逆。どういう意図でこう書くんだろう。
これはリテラルのequals()呼び出しだから、コンパイラが最適化してくれる
可能性がある、という説明で自分は納得した。
実際のところ本当かは検証したわけじゃないけど、どう再定義してるかわか
んないstrのequals()を呼び出すよりは速い可能性があるというだけで充分
に意味はあると考えてる。

974:デフォルトの名無しさん
09/08/22 02:22:55
Javaでの話だけど、str.equals("")だとstrがnullのときにぬるぽの例外になるので、
"".equals(str)がいいんだって言っていた。
でも、まともな意見の人は"".equals(str)に否定的な人が多いという印象。

975:デフォルトの名無しさん
09/08/22 02:25:37
君の印象ではなく「まともな意見」でどう否定したかが重要。

976:デフォルトの名無しさん
09/08/22 02:29:39
つか str.Equals("") とほぼ等価でかつ str が null でも大丈夫だから
だろ。2 と 3 がほぼ同じ意味であることを除けば他は意味とか前提が
色々微妙に違う

977:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/08/22 03:46:49
>>964
俺も>>971と同じ書き方するな。
でも null と空文字列で特別に違う意味がなければ IsNullOrEmpty を使う。

979:デフォルトの名無しさん
09/08/22 05:58:42
str.Equals(string.Empty)か
String.Equals(str,stringEmpty)
だな。

javaと違って参照でも'=='が使えるのは知ってるんだけどね。


980:デフォルトの名無しさん
09/08/22 06:46:21
String以外にも話を展開してみる。

Equalsはタイプセーフではない。
Equalsをoverrideするなら==、!=もoverrideしなければならない。
a.Equals(b)はnullチェックが面倒なので、Object.Equals(a,b)が有効。


981:デフォルトの名無しさん
09/08/22 06:50:49
タイプセーフでないというのは事実だけど、型を意識しないで比較するのは個人的にはなしだ。
ライブラリ製作者と使用者で意見が食い違うところか。

982:デフォルトの名無しさん
09/08/22 07:22:05
10.0と10は違うのか?→時と場合と人による
"a"と'a'は違うのか?→〃
10と10は違うのか?→〃

しかし”参照”としての比較はドメインが”参照”に固定されているので混乱しない
値の比較はドメインが固定できないので混乱する
値の比較であーだこーだ言っていてもはじまらね

983:デフォルトの名無しさん
09/08/22 07:35:17
>>968はこれか
URLリンク(msdn.microsoft.com)

それはそうと次スレは?

984:デフォルトの名無しさん
09/08/22 08:59:39
>>980
>タイプセーフではない。(
値型以外では使うことはまずないけど
IEquatable<T>.Equals(T o)
>Equalsをoverrideするなら==、!=もoverrideしなければならない。 
Stringのようにimutableでない限りは==や!=演算子のoverrideはするべきではない。

985:デフォルトの名無しさん
09/08/22 11:02:53
なんで

986:デフォルトの名無しさん
09/08/22 12:31:41
次ぎたててくる

987:デフォルトの名無しさん
09/08/22 12:34:22
C#, C♯, C#相談室 Part54
スレリンク(tech板)

はい

988:デフォルトの名無しさん
09/08/22 12:44:02
>>987
^^

989:デフォルトの名無しさん
09/08/22 13:00:55
.NET 4では2.0の部分のパフォーマンスの向上とかあるのかな?

990:デフォルトの名無しさん
09/08/22 13:09:55
BCL部分はC#4.0などにあわせて確実に手が入るけど
WinFormsはどうせ放置だろ

991:デフォルトの名無しさん
09/08/22 13:36:55
>WinFormsはどうせ放置だろ
せっかく枯れてきたのに手を入れられてもねぇ…

992:デフォルトの名無しさん
09/08/22 13:40:42
2005以降に追加されたコントロールのバグはしっかり直してくれないと
困ると思うけど…

toolstrip関連はバグ多過ぎなんだよ本当。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch