我怎样可以从另一个C#源文件导入静态方法和使用它,而“点”?
喜欢 :
foo.cs
namespace foo
{
public static class bar
{
public static void foobar()
{
}
}
}
Program.cs中
using foo.bar.foobar; <= can't!
namespace Program
{
class Program
{
static void Main(string[] args)
{
foobar();
}
}
}
我不能只foobar();
,但如果我写using foo;
在顶部和呼叫foobar()
为foo.bar.foobar()
它的作品,尽管是多罗嗦。 任何解决方法吗?
这是公认的答案,但要注意如下状态的答案,这是现在可以在C#6
你不能
静态方法需要在设计一个类..
静态方法为什么需要被包装成一个类?
用C#6.0就可以了。
C#6.0 允许静态导入(请参阅使用静态成员)
你将能够做到:
using static foo.bar;
然后在你的Main
方法,你可以这样做:
static void Main(string[] args)
{
foobar();
}
你可以做同样的System.Console
,如:
using System;
using static System.Console;
namespace SomeTestApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Test Message");
WriteLine("Test Message with Class name");
}
}
}
编辑:由于的Visual Studio 2015年CTP的发布,2015年1月,静态导入功能需要明确提到static
信息关键词:
using static System.Console;
声明一个动作代表在一个合适的范围变量,如下所示并在以后使用它:
Action foobar = () => foo.bar.foobar();
或者更简单
Action foobar = foo.bar.foobar;
我也应注意扩展方法(C#编程指南) 。 如果您在使用参数的方法,往往是相当舒适的有:
public static class bar
{
public static void foobar(this string value)
{
}
}
并利用它:
string s = "some value";
s.foobar();
这实际上是一个更好的方法。
要添加到答案已经在这里需要注意的是C#是一个非常类型化的语言是很重要的。 因此,除非方法您所在的类存在,你将永远无法做到像你在找什么。
但是,如果您添加使用:
using foo;
然后,您可以就这样的类型和方法来访问它:
bar.foo();