对于这个问题的无知性质,我深表歉意。如果有一个简单的答案,只需一个解释链接就会让我非常高兴。
经过 6 个月的编程后,我发现静态类对于存储适用于许多不同类的例程有点有用。这是我如何使用静态类的一个简化示例,它是一个用于将文本解析为各种内容的类
public static class TextProcessor
{
public static string[] GetWords(string sentence)
{
return sentence.Split(' ');
}
public static int CountLetters(string sentence)
{
return sentence.Length;
}
public static int CountWords(string sentence)
{
return GetWords(sentence).Length;
}
}
我以明显的方式使用它,比如
class Program
{
static void Main(string[] args)
{
string mysentence = "hello there stackoverflow.";
Console.WriteLine("mysentence has {0} words in it, fascinating huh??", TextProcessor.CountWords(mysentence));
Console.ReadLine();
}
}
我的问题是:为什么需要将这些静态方法包装在静态类中?
这似乎没有任何作用。有没有一种方法可以让这些方法独立存在而不包装在类中?我知道封装是有益的,但我没有看到静态类中包装的静态方法的用途。我在风格上或其他方面缺少什么吗?我完全是在吠叫一棵愚蠢的树吗?是我想太多了吗?
在 C# 中,任何方法都必须在类中声明。这就是语言的指定方式。
静态类实际上更多类似于模块 http://codecrafter.blogspot.com/2009/09/c-static-classes-are-not-real-classes.html比一堂课,所以我也认为你应该能够:
- 在类外部定义函数或;
- 导入模块的方式与导入命名空间的方式相同(使用
using
)
VB.NET、F# 和 Nemerle 实际上允许您声明模块并导入它们;是什么让你不合格地使用他们的方法。
这是有效的内梅尔:
using System.Console; // import static methods in the Console class
class Hello {
static Main() : void {
WriteLine("Hello, world!"); // unqualified access!
}
}
另外,看看扩展方法 http://msdn.microsoft.com/en-us/library/bb383977.aspx,它们可能允许您以不同的方式“解决”这个问题。你的方法中TextProcessor
are begging to be string
扩展方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)