Out of Memory

本ブログは更新を停止しました。Aerieをよろしくお願いいたします。

目次

Blog 利用状況

ニュース

2009年3月31日
更新を停止しました。引き続きAerieを御愛顧くださいませ。
2009年2月3日
原則としてコメント受付を停止しました。コメントはAerieまでお願いいたします。
詳細は2月3日のエントリをご覧ください。
2008年7月1日
Microsoft MVP for Developer Tools - Visual C++ を再受賞しました。
2008年2月某日
MVPアワードがVisual C++に変更になりました。
2007年10月23日
blogタイトルを変更しました。
2007年7月1日
Microsoft MVP for Windows - SDKを受賞しました!
2007年6月20日
スキル「ニュース欄ハック」を覚えた!
2006年12月14日
記念すべき初エントリ
2006年12月3日
わんくま同盟に加盟しました。

カレンダー

中の人

αετο? / aetos / あえとす

シャノン? 誰それ。

顔写真

埼玉を馬鹿にする奴は俺が許さん。

基本的に知ったかぶり。興味を持った技術に手を出して、ちょっと齧りはするものの、それを応用して何か形にするまでは及ばずに飽きて放り出す人。

書庫

日記カテゴリ

前言撤回の撤回

前のエントリで容認したのは、要するにこういう使い方

object hoge = new { ID = 1, Name = "hoge" };

なので、var使いません宣言には抵触しない、ということで。

投稿日時 : 2007年12月28日 9:41

Feedback

# re: 前言撤回の撤回 2007/12/28 9:55 囚人

var に勝るメリットは?

# re: 前言撤回の撤回 2007/12/28 10:09 シャノン

使用目的が違うので比較対象にならない。
hoge.ID でメンバにアクセスできないのが利点と言えば利点。
そのようにアクセスすることを目的としていないコードなので。

# re: 前言撤回の撤回 2007/12/28 10:19 囚人

var と object の使用目的が違うってのは全くもってその通りですが、使用目的が違うのにここで object を使っている意味が理解しかねます。

>hoge.ID でメンバにアクセスできないのが利点と言えば利点。

なんでコレが利点なんでしょ??
以降このオブジェクトを扱うのにリフレクションかキャスト(つか型名がないからできないけど)が必須になりますが。

# re: 前言撤回の撤回 2007/12/28 10:29 シャノン

リフレクションで使うのが目的ですもん。
匿名型とvarは必ずしもペアで使うものではない。
よって、前のエントリで書いたvar使いません宣言は、イコール匿名型使いません宣言ではない。

# re: 前言撤回の撤回 2007/12/28 10:40 囚人

いや、普通に疑問。
「何故、敢えてリフレクションを使うのか」
この例からはそれが全く読み取れないっす。

# re: 前言撤回の撤回 2007/12/28 10:43 囚人

言い方を変えると、リフレクションを使いたいじゃなくて「リフレクションを使えば var は必要ないじゃん?」って例に見えます。

# re: 前言撤回の撤回 2007/12/28 11:09 シャノン

> 「何故、敢えてリフレクションを使うのか」

「何故、varを使わずにリフレクションを使うのか」ってこと?
それについては既に答えている。
varを使うべき局面とリフレクションを使うべき局面は同じではないので、比較対象とならない。
リフレクションをvarで完全に置き換えることはできないでしょう?

> 「リフレクションを使えば var は必要ないじゃん?」

「リフレクションを使うべき局面では var は必要ないじゃん?」です。
そこは var を使うべき局面ではないので当然のことです。

# re: 前言撤回の撤回 2007/12/28 11:11 シャノン

どうしてこんなにこじれるのかがわからない。
前のエントリが良くなかったか。
前のエントリを書いた後で、あれは「var使わない宣言の撤回」ではない、ということに気が付いたから。
前のエントリは「LINQ以外でvarは使わん。でもLINQ以外でも匿名型は使う」宣言だったのです、ということにした。

# re: 前言撤回の撤回 2007/12/28 11:15 シャノン

俺からすれば、「何故、リフレクションで腹の中を探られることが前提のオブジェクトに var を使う必要があるのか?」というほうが疑問ですね。
「リフレクションで使うことが前提であることは var を使わない理由にならない」は既に却下しています。
俺にとって、LINQ 以外は var を使う理由になりません。
その説明は面倒なので省略。

# re: 前言撤回の撤回 2007/12/28 11:26 囚人

うん。だからこの例でリフレクションを使う前提って一体何って事です?
要するに私は
var hoge = new { ID = 1, Name = "hoge" };
と書かずに
object hoge = new { ID = 1, Name = "hoge" };
と書くメリットが何なのか分かりません。「リフレクション前提」ってのを含めてです。
この例でリフレクションを使う前提って何なんです?
匿名型を定義してスコープの外に放り投げたいってことでしょうか?
まだ現状では意味がわからないので、単に var を毛嫌いして object を使っているようにしか見えませんが。

# re: 前言撤回の撤回 2007/12/28 11:28 囚人

立場は逆ですが
for(int i = 0; i < 10; i++)
と書かずに
for(var i = 0; i < 10; i++)
と書くメリットって何です?って構図になってきたw

# re: 前言撤回の撤回 2007/12/28 11:31 シャノン

> 匿名型を定義してスコープの外に放り投げたいってことでしょうか?

そうです。って、そこで引っかかってたのか。

# re: 前言撤回の撤回 2007/12/28 11:37 囚人

>> 匿名型を定義してスコープの外に放り投げたいってことでしょうか?
>
>そうです。って、そこで引っかかってたのか。

ん~、まぁだとしたら気持ちは分からんでもないですが、だったら別に var でもいいじゃんですな。
for(var i = 0; i < 10; i++)
と同じ理屈で、敢えて object を使う意味がわかんないですね。
「これは自分のスコープの外でリフレクションで使われるかもしれんからobjectで受ける」「こっちは違うから var」って使い分けるんですかいな。スコープの外の都合に合わせて。

# re: 前言撤回の撤回 2007/12/28 11:56 シャノン

> だったら別に var でもいいじゃんですな。

いえ、俺はLINQ以外ではvar使わんと宣言したのでダメなのです。
宣言の理由は適当に察してください。「食わず嫌い」でも構いません。

# re: 前言撤回の撤回 2007/12/28 12:14 囚人

>いえ、俺はLINQ以外ではvar使わんと宣言したのでダメなのです。

そこか。御意。

# re: 前言撤回の撤回 2007/12/28 12:52 NyaRuRu

まあvarはシンタックスレベルの些末な話なので,別にそれでもいいんじゃないですかね.

それよかリフレクションを何で書くのかの方が重要かも.
私の場合リフレクション用の LINQ コード片がかなり溜まってきているので,漁れば大抵の処理はすぐにできるのですが,シャノンさんは LINQ 自体は抵抗ないんでしたっけ?

# re: 前言撤回の撤回 2007/12/28 13:07 シャノン

構文には抵抗があるんですが、有用性は認めざるを得ないですからねぇ。
ただ、DBとかXMLといったような、データソースらしいデータソースでないものには適用しにくいような印象を受けますけど、どうなのかな。

それはそれとして、PowerShellではLINQ使いたいです。

# re: 前言撤回の撤回 2007/12/28 13:08 シャノン

varと同じで、「LINQは使えるところではどこでも使うべし」には、断固「否」と言いましょう。

# re: 前言撤回の撤回 2007/12/28 14:30 NyaRuRu

ここになんか残ってた.

http://blogs.wankuma.com/kazuki/archive/2007/12/26/114725.aspx#114800
># re: C#3.0が話題?
>シャノン
>Posted @ 2007/12/27 10:49
>言い換えれば、LINQ 以外では使わない。

# re: 前言撤回の撤回 2007/12/28 15:19 シャノン

あぁ、それは勘違いです。ご指摘に感謝。

varについて言ったつもりが、文脈的には匿名型使いませんになっちゃってますね。
…BlueスキンはIEだとコピペ面倒なんだよなぁ。

タイトル
名前
Url
コメント