C# 在类之间共享代码

C# 在类之间共享代码,c#,C#,假设我有这样一个简单的函数: public static string randomthing(string var1) { string var2 = "hello world"; return var2; } 我希望能够从不同的班级中调用它。我怎么做 我试图创建一个空白文件,只是将函数粘贴到那里,但当然不行。如果你想共享代码,你需要创建第三个类,其他类可以使用它 这可以作为扩展方法、静态类或常规类来完成,这意味着您需要该类的实例 静态类: public static My

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

public static string randomthing(string var1) 
{
    string var2 = "hello world";
    return var2;
}
我希望能够从不同的班级中调用它。我怎么做


我试图创建一个空白文件,只是将函数粘贴到那里,但当然不行。

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

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

静态类:

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");

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

class RandomThings
{
    public static string randomthing(string var1) {
        string var2 = "hello world";
        return var2;
     } 
}
现在可以通过ClassName.MethodName调用此方法:

由于函数为,只需使用封闭的类名调用它:

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");
    }
}

您可以使该类成为静态的,并从另一个类调用它,而不必实例化该类本身

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";
    }
}

扩展方法所在的类也需要是静态的。
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";
    }
}