本ブログは更新を停止しました。Aerieをよろしくお願いいたします。
投稿カレンダーはJavaScriptが有効でない環境では使用できません。
αετο? / aetos / あえとす
シャノン? 誰それ。
埼玉を馬鹿にする奴は俺が許さん。
基本的に知ったかぶり。興味を持った技術に手を出して、ちょっと齧りはするものの、それを応用して何か形にするまでは及ばずに飽きて放り出す人。
前のエントリで容認したのは、要するにこういう使い方
object hoge = new { ID = 1, Name = "hoge" };
なので、var使いません宣言には抵触しない、ということで。
投稿日時 : 2007年12月28日 9:41
var に勝るメリットは?
使用目的が違うので比較対象にならない。 hoge.ID でメンバにアクセスできないのが利点と言えば利点。 そのようにアクセスすることを目的としていないコードなので。
var と object の使用目的が違うってのは全くもってその通りですが、使用目的が違うのにここで object を使っている意味が理解しかねます。 >hoge.ID でメンバにアクセスできないのが利点と言えば利点。 なんでコレが利点なんでしょ?? 以降このオブジェクトを扱うのにリフレクションかキャスト(つか型名がないからできないけど)が必須になりますが。
リフレクションで使うのが目的ですもん。 匿名型とvarは必ずしもペアで使うものではない。 よって、前のエントリで書いたvar使いません宣言は、イコール匿名型使いません宣言ではない。
いや、普通に疑問。 「何故、敢えてリフレクションを使うのか」 この例からはそれが全く読み取れないっす。
言い方を変えると、リフレクションを使いたいじゃなくて「リフレクションを使えば var は必要ないじゃん?」って例に見えます。
> 「何故、敢えてリフレクションを使うのか」 「何故、varを使わずにリフレクションを使うのか」ってこと? それについては既に答えている。 varを使うべき局面とリフレクションを使うべき局面は同じではないので、比較対象とならない。 リフレクションをvarで完全に置き換えることはできないでしょう? > 「リフレクションを使えば var は必要ないじゃん?」 「リフレクションを使うべき局面では var は必要ないじゃん?」です。 そこは var を使うべき局面ではないので当然のことです。
どうしてこんなにこじれるのかがわからない。 前のエントリが良くなかったか。 前のエントリを書いた後で、あれは「var使わない宣言の撤回」ではない、ということに気が付いたから。 前のエントリは「LINQ以外でvarは使わん。でもLINQ以外でも匿名型は使う」宣言だったのです、ということにした。
俺からすれば、「何故、リフレクションで腹の中を探られることが前提のオブジェクトに var を使う必要があるのか?」というほうが疑問ですね。 「リフレクションで使うことが前提であることは var を使わない理由にならない」は既に却下しています。 俺にとって、LINQ 以外は var を使う理由になりません。 その説明は面倒なので省略。
うん。だからこの例でリフレクションを使う前提って一体何って事です? 要するに私は var hoge = new { ID = 1, Name = "hoge" }; と書かずに object hoge = new { ID = 1, Name = "hoge" }; と書くメリットが何なのか分かりません。「リフレクション前提」ってのを含めてです。 この例でリフレクションを使う前提って何なんです? 匿名型を定義してスコープの外に放り投げたいってことでしょうか? まだ現状では意味がわからないので、単に var を毛嫌いして object を使っているようにしか見えませんが。
立場は逆ですが for(int i = 0; i < 10; i++) と書かずに for(var i = 0; i < 10; i++) と書くメリットって何です?って構図になってきたw
> 匿名型を定義してスコープの外に放り投げたいってことでしょうか? そうです。って、そこで引っかかってたのか。
>> 匿名型を定義してスコープの外に放り投げたいってことでしょうか? > >そうです。って、そこで引っかかってたのか。 ん~、まぁだとしたら気持ちは分からんでもないですが、だったら別に var でもいいじゃんですな。 for(var i = 0; i < 10; i++) と同じ理屈で、敢えて object を使う意味がわかんないですね。 「これは自分のスコープの外でリフレクションで使われるかもしれんからobjectで受ける」「こっちは違うから var」って使い分けるんですかいな。スコープの外の都合に合わせて。
> だったら別に var でもいいじゃんですな。 いえ、俺はLINQ以外ではvar使わんと宣言したのでダメなのです。 宣言の理由は適当に察してください。「食わず嫌い」でも構いません。
>いえ、俺はLINQ以外ではvar使わんと宣言したのでダメなのです。 そこか。御意。
まあvarはシンタックスレベルの些末な話なので,別にそれでもいいんじゃないですかね. それよかリフレクションを何で書くのかの方が重要かも. 私の場合リフレクション用の LINQ コード片がかなり溜まってきているので,漁れば大抵の処理はすぐにできるのですが,シャノンさんは LINQ 自体は抵抗ないんでしたっけ?
構文には抵抗があるんですが、有用性は認めざるを得ないですからねぇ。 ただ、DBとかXMLといったような、データソースらしいデータソースでないものには適用しにくいような印象を受けますけど、どうなのかな。 それはそれとして、PowerShellではLINQ使いたいです。
varと同じで、「LINQは使えるところではどこでも使うべし」には、断固「否」と言いましょう。
ここになんか残ってた. http://blogs.wankuma.com/kazuki/archive/2007/12/26/114725.aspx#114800 ># re: C#3.0が話題? >シャノン >Posted @ 2007/12/27 10:49 >言い換えれば、LINQ 以外では使わない。
あぁ、それは勘違いです。ご指摘に感謝。 varについて言ったつもりが、文脈的には匿名型使いませんになっちゃってますね。 …BlueスキンはIEだとコピペ面倒なんだよなぁ。
Powered by: Copyright © αετος / aetos