3

たとえば、メソッドをinteger(ie, Int32) に追加すると、次のことができるようになります。

int myInt = 32;
myInt.HelloWorld();

integer上記のことを主張する代わりに、次のように,を取るメソッドをHelloWorld(integer)もっと簡単に書くことができます。

int myInt = 32;
HelloWorld(myInt);

ただし、それが可能かどうかは興味があります。もしそうなら、よく知られているクラスに他の機能を追加することは良いプログラミング方法ですか?

PS:から継承する別のクラスを作成しようとしましInt32たが、シール型 'int' から派生できません。

4

6 に答える 6

10

の拡張メソッドを追加できますint32

   public static class Int32Extensions
   {
       public static void HelloWorld(this int value) 
       {
         // do something
       }
   }

usingクラスが存在する名前空間を覚えておいてください。

于 2012-08-10T15:23:23.530 に答える
3

拡張メソッドの拡張メソッドプログラミングガイドについておっしゃっていると思います

于 2012-08-10T15:25:00.063 に答える
3

あなたはExtension Methodsを求めています。プライベート変数にアクセスしたり、オブジェクトの動作を変更したりできないため、OOP の話し方に問題はありません。

あなたが正確に説明したことに関する唯一の構文糖衣です。

于 2012-08-10T15:23:59.987 に答える
2

Q: Is that a good programming practice to add some other functionality to well known classes?

This type of discussion really belongs on 'Programmers'.

Please take a look at this discussion on Programmers, that has a lot of philosophical points on using extension methods:

https://softwareengineering.stackexchange.com/questions/77427/why-arent-extension-methods-being-used-more-extensively-in-net-bcl

Also:

https://softwareengineering.stackexchange.com/questions/41740/when-to-use-abstract-classes-instead-of-interfaces-and-extension-methods-in-c?lq=1

于 2012-08-10T15:28:25.137 に答える
1

拡張機能メソッドを使用する

static class Program
{
    static void Main(string[] args)
    {
        2.HelloWorld();
    }

    public static void HelloWorld(this int value)
    {
        Console.WriteLine(value);
    }
}
于 2012-08-10T15:26:34.720 に答える
1

次のような拡張メソッドを使用できます。

public static class IntExtensions
{
    public static string HelloWorld(this int i)
    {
        return "Hello world";
    }
}
于 2012-08-10T15:26:41.603 に答える