2011-04-07 67 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#的等价物。他们不会取代现有的方法,并受到一些限制。

相关问题