假设我有一个像这样的简单函数:
public static string randomthing(string var1)
{
string var2 = "hello world";
return var2;
}
我希望能够从不同的班级调用它。我该怎么做?
我试图创建一个空白文件并将函数粘贴到那里,但当然它不是那样工作的。
假设我有一个像这样的简单函数:
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");
方法只能是类的一部分。因此,在类(或struct)中声明它,当它只是静态方法的集合时,它可以是静态的:
class RandomThings
{
public static string randomthing(string var1) {
string var2 = "hello world";
return var2;
}
}
现在您可以通过以下方式调用此方法ClassName.MethodName
:
String randomString = RandomThings.randomthing("hello world");
您可以将类设为静态并从另一个类调用它,而无需实例化该类本身。
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";
}
}
由于该函数是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");
}
}