对于这个问题的未经学习的性质,我们深表歉意。如果有一个简单的答案,只要一个解释链接就会让我非常高兴。
经过 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# 中,任何方法都必须在类中声明。这就是指定语言的方式。
静态类其实更akin to a module而不是一个类,所以我也认为你应该能够:
- 在类之外定义一个函数;
- 以与导入命名空间相同的方式导入模块(使用
using
)
VB.NET、F# 和 Nemerle 实际上允许您声明模块并导入它们;是什么让你可以不合格地使用他们的方法。
这是有效的 Nemerle:
using System.Console; // import static methods in the Console class
class Hello {
static Main() : void {
WriteLine("Hello, world!"); // unqualified access!
}
}
另外,看看 extension methods ,他们可能会让你以不同的方式“解决”这个问题。 TextProcessor
中的方法请求成为string
扩展方法。
关于c# - 为什么需要将静态方法包装到一个类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8131546/