C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 値型での拡張メソッドの使用について


(過去ログ 20 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■8251 / inTopicNo.1)  値型での拡張メソッドの使用について
  
□投稿者/ むねお (8回)-(2007/09/26(Wed) 20:44:31)

分類:[.NET 全般] 

お世話になります。
確かマイクロソフトのVisual Studio 2008のセミナーでは拡張メソッドは値型には使えないと聞いた覚えがあったので、(それほど昔ではないです)
試してもいなかったのですが、手元のVisual Studio 2008βではエラーにはならないようです。
サイト上のサンプルの多くはString型等で値型で使用したものがなく、値型で使用できないという明確なソースも見つけられませんでした。
もちろん、まだ製品版ではないのですが、ご存知の方いらっしゃいますでしょうか。

    static class Program
    {
        [STAThread]
        static void Main()
        {

            int i=0;

            Console.WriteLine(i.hoge());

        }
    }

    public static class intExtensions
    {
        public static int hoge(this int i)
        {
            return 1;
        }
    }

引用返信 編集キー/
■8267 / inTopicNo.2)  Re[1]: 値型での拡張メソッドの使用について
□投稿者/ NyaRuRu (20回)-(2007/09/27(Thu) 01:13:15)
2007/09/27(Thu) 01:13:34 編集(投稿者)

No8251 (むねお さん) に返信
> サイト上のサンプルの多くはString型等で値型で使用したものがなく、値型で使用できないという明確なソースも見つけられませんでした。

言語仕様上は値型に対しても使用できます.

ただし,値型のオブジェクトの内容を変更するようなメソッドを拡張メソッドで定義しようとするとややこしいことになるという話があって,値型に拡張メソッドを適用する場合は注意が必要です.
また,C# と Visual Basic で挙動が異なるという点でも気をつける必要があるでしょう.

http://blogs.msdn.com/vbteam/archive/2007/01/18/extension-methods-part-3.aspx
http://blogs.msdn.com/sreekarc/archive/2007/04/25/extension-methods.aspx


引用返信 編集キー/
■8275 / inTopicNo.3)  Re[2]: 値型での拡張メソッドの使用について
□投稿者/ むねお (9回)-(2007/09/27(Thu) 09:57:12)
NyaRuRuさんありがとうございます。
なるほど、値型でも使用できない訳ではないのですね。

>値型に拡張メソッドを適用する場合は注意が必要です.
> また,C# と Visual Basic で挙動が異なるという点でも気をつける必要があるでしょう.
注意して作成しようと思います。質問の例はC#でしたがVB.NETでも作成するので、挙動に違いが
あるというのは大変有用な情報でした。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -