C#是否与Objective-c的类别相同?

时间:2011-04-07 10:39:55

标签: c# objective-c

我正在寻找与C#语言的Objective-c类别等效的内容。

3 个答案:

答案 0 :(得分:14)

您不能向类添加方法,但是您可以使用扩展方法来实现类似的效果。

使用静态方法创建一个静态类。静态方法第一个参数用“this”标记,方法用类型参数装饰到类。

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

此方法将在String类型的所有实例上可用。但是,您仍然需要通过使用扩展类。

该示例取自Microsoft自己的文档:http://msdn.microsoft.com/en-us/library/bb383977.aspx

答案 1 :(得分:5)

C#中与Objective-C Categories最接近的是Extension Methods

请注意, C#是一种静态类型语言,并且不像Objective-C那样使用动态调度。这意味着方法解析在编译时执行而不是在运行时,就像您在Objective-C中习惯的那样。

相关资源:

答案 2 :(得分:3)

类别是否允许您在不对其进行子类化的情况下向现有类添加方法?如果是这样,则扩展方法将是C#等价物。它们不会取代现有的方法,但会受到一些限制。