0

假设我有一个像这样的简单函数:

public static string randomthing(string var1) 
{
    string var2 = "hello world";
    return var2;
}

我希望能够从不同的班级调用它。我该怎么做?

我试图创建一个空白文件并将函数粘贴到那里,但当然它不是那样工作的。

4

4 回答 4

5

如果你想共享代码,你需要创建一个可以被其他类使用的第三个类。

这可以作为扩展方法、静态类或常规类(意味着您需要该类的实例)来完成。

静态类:

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");
于 2012-05-21T19:45:28.973 回答
4

方法只能是类的一部分。因此,在类(或struct)中声明它,当它只是静态方法的集合时,它可以是静态的:

class RandomThings
{
    public static string randomthing(string var1) {
        string var2 = "hello world";
        return var2;
     } 
}

现在您可以通过以下方式调用此方法ClassName.MethodName

String randomString = RandomThings.randomthing("hello world");

方法(C# 编程指南)

于 2012-05-21T19:46:52.217 回答
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";
    }
}
于 2012-05-21T19:48:44.430 回答
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");
    }
}
于 2012-05-21T19:47:11.453 回答