有什么方法可以调用命名空间内的函数而不在 c# 中声明类。
例如,如果我有 2 个完全相同的方法并且应该在我的所有 C# 项目中使用,有没有办法将这些函数变成一个 dll,然后在顶部说“使用 myTwoMethods”并开始使用方法而不声明类?
现在,我这样做:MyClass.MyMethod();
我想做:MyMethod();
谢谢,罗希特
有什么方法可以调用命名空间内的函数而不在 c# 中声明类。
例如,如果我有 2 个完全相同的方法并且应该在我的所有 C# 项目中使用,有没有办法将这些函数变成一个 dll,然后在顶部说“使用 myTwoMethods”并开始使用方法而不声明类?
现在,我这样做:MyClass.MyMethod();
我想做:MyMethod();
谢谢,罗希特
2015 年更新:不,您不能在 C# 中创建“自由函数”,但从 C# 6 开始,您将能够在不提及类名的情况下调用静态函数。C# 6 将具有允许以下语法的“使用静态”功能:
static class MyClass {
public static void MyMethod();
}
SomeOtherFile.cs:
using static MyClass;
void SomeMethod() {
MyMethod();
}
您不能在类之外声明方法,但您可以使用类库项目中的静态帮助程序类来做到这一点。
public static class HelperClass
{
public static void HelperMethod() {
// ...
}
}
用法(在添加对您的类库的引用之后)。
HelperClass.HelperMethod();
根据使用扩展方法的建议,您可以使该方法成为 System.Object 的扩展方法,所有类都从该方法派生。我不会提倡这一点,但关于你的问题,这可能是一个答案。
namespace SomeNamespace
{
public static class Extensions
{
public static void MyMethod(this System.Object o)
{
// Do something here.
}
}
}
您现在可以像MyMethod();
在任何using SomeNamespace;
拥有Extensions.MyMethod(null)
.
取决于我们正在谈论的方法类型,您可以查看扩展方法:
http://msdn.microsoft.com/en-us/library/bb383977.aspx
这使您可以轻松地向现有对象添加额外的功能。