次のような単純な関数があるとしましょう。
public static string randomthing(string var1)
{
string var2 = "hello world";
return var2;
}
別のクラスから呼び出すことができるようにしたいと思います。どうすればいいですか?
空のファイルを作成してそこに関数を貼り付けようとしましたが、もちろんうまくいきません。
次のような単純な関数があるとしましょう。
public static string randomthing(string var1)
{
string var2 = "hello world";
return var2;
}
別のクラスから呼び出すことができるようにしたいと思います。どうすればいいですか?
空のファイルを作成してそこに関数を貼り付けようとしましたが、もちろんうまくいきません。
コードを共有したい場合は、他のクラスで使用できる 3 番目のクラスを作成する必要があります。
これは、拡張メソッド、静的クラス、または通常のクラスとして実行できます (つまり、クラスのインスタンスが必要です)。
静的クラス:
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");
}
}