2012-05-21 5 views
0

Допустим, у меня есть простая функция, как это:Доля кода между классами

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

Я хотел бы иметь возможность вызвать его из разных классов. Как мне это сделать?

Я попытался создать пустой файл и просто вставить туда функцию, но, конечно, это не работает.

ответ

4

Если вы хотите поделиться кодом, вам нужно создать третий класс, который может использоваться другими классами.

Это может быть сделано как метод расширения, статический класс или обычный класс (что означает, что вам нужен экземпляр класса).

Статический класс: метод

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

Класс, в котором находится ваш метод расширения, также должен быть статическим. –

+0

@JeppeStigNielsen - Спасибо за исправление. – Oded

4

Способ может быть только частью класса. Так объявить его внутри класса (или struct), который может быть статическим, когда это просто набор статических методов:

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

Теперь вы можете вызвать этот метод с помощью ClassName.MethodName:

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

Methods (C# Programming Guide)

0

Поскольку функция 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"); 
    } 
} 
1

Вы можете сделать класс статическим и вызвать его из другого класса без необходимости создания экземпляра самого класса.

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"; 
    } 
} 
Смежные вопросы