我正在寻找与C#语言的Objective-c类别等效的内容。
答案 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#等价物。它们不会取代现有的方法,但会受到一些限制。