假设我有一个像这样的简单函数:
public static string randomthing(string var1)
{
string var2 = "hello world";
return var2;
}
我希望能够从不同的类中调用它。我该怎么办?
我尝试创建一个空白文件,只是将功能粘贴在那里,但当然不会那样。
答案 0 :(得分:4)
如果要共享代码,则需要创建可供其他类使用的第三个类。
这可以作为扩展方法,静态类或常规类(意味着您需要该类的实例)来完成。
静态类:
public static MyClass
{
public static string randomthing(string var1) {
string var2 = "hello world";
return var2;
}
}
// Call it: MyClass.randomthing("a string");
扩展方法:
public MyClass
{
public static string randomthing(this string var1) {
string var2 = "hello world";
return var2;
}
}
// Call it: "a string".randomthing();
常规课程:
public static MyClass
{
public static string randomthing(string var1) {
string var2 = "hello world";
return var2;
}
}
// Call it: var myClass = new myClass();
// myClass.randomthing("a string");
答案 1 :(得分:4)
方法只能是类的一部分。所以在类(或struct)中声明它,当它只是静态方法的集合时,它可以是静态的:
class RandomThings
{
public static string randomthing(string var1) {
string var2 = "hello world";
return var2;
}
}
现在您可以通过ClassName.MethodName
:
String randomString = RandomThings.randomthing("hello world");
答案 2 :(得分:1)
您可以使类静态并从另一个类调用它,而无需实例化类本身。
public static class Utility {
public static string randomthing(string var1) {
string var2 = "hello world";
return var2;
}
}
public class UsingTheCodeHere
{
public string SayingHelloWorld()
{
return Utility.randomthing();
}
}
你也可以使用继承来实现类似的东西。
public class Person
{
public string SayHello()
{
return "Hello";
}
}
public class LoudMouth : Person
{
public override string SayHello()
{
return base.SayHello() + "!!!!";
}
}
public class SadPerson : Person
{
public override string SayHello()
{
return base.SayHello() + " I am sad";
}
}
答案 3 :(得分:0)
由于函数是static,只需使用附带的类名称调用它:
public class Foo
{
public static string randomthing(string var1)
{
string var2 = "hello world";
return var2;
}
}
public class OtherClass
{
public OtherClass()
{
// In constructor
string here1 = Foo.randomthing("x");
}
public void OrInSomeFunction()
{
string here2 = Foo.randomthing("x");
}
}