在类之间共享代码

本文关键字:代码 共享 之间 | 更新日期: 2023-09-27 18:34:47

假设我有一个简单的函数,如下所示:

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

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

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

现在你可以通过ClassName.MethodName调用此方法:

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

方法(C# 编程指南(

您可以将类设置为静态并从另一个类调用它,而无需实例化类本身。

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