2011-04-07 43 views
9

我正在尋找相當於C#語言的Objective-c的類別。C#是否與Objective-c的類別相同?

+0

如果你那是什麼細說,你可能會得到更多的答覆,因爲人可以幫助你在不知道的Objective-C – 2011-04-07 10:41:07

+1

@Daniel:現有的答案可能會讓遊戲離開,但由於我對C#的瞭解不多,並且可能有所幫助:在Objective-C中,類別在運行時向類中添加新方法。所以你不是繼承類(如果對象是由你不能改變的代碼創建的話,這很有用),只是增加了功能。在它之下是可以實現的,因爲在Objective-C中動態查找所有的方法調用;您可以隨時添加一些額外的方法 - 無論是通過一個漂亮的,語法上乾淨的類別,或者通過將C級接口下載到運行時。 – Tommy 2011-04-07 11:56:03

+0

@Tommy:謝謝你的解釋。 – 2011-04-07 11:59:13

回答

14

您不能添加方法一類,但是你可以使用擴展方法來實現類似的效果。

使靜態類,它有一個靜態方法。靜態方法的第一個參數被標記爲「this」,並且該方法被修飾爲具有參數類型的類。

namespace ExtensionMethods 
{ 
    public static class MyExtensions 
    { 
     public static int WordCount(this String str) 
     { 
      return str.Split(new char[] { ' ', '.', '?' }, 
          StringSplitOptions.RemoveEmptyEntries).Length; 
     } 
    } 
} 

此方法將在類型爲String的所有實例上可用。但是,您仍然需要通過您的使用獲得擴展課程。

的例子是從微軟獲得自己的機制的文檔在這裏拍攝:http://msdn.microsoft.com/en-us/library/bb383977.aspx

3

不要類別可以對方法添加到現有類沒有子呢?如果是這樣,那麼擴展方法將是C#的等價物。他們不會取代現有的方法,並受到一些限制。

相關問題