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