2016-05-03 5 views
-2

Я хочу сделать свою программу «модульной», и мне интересно, если я правильно подхожу к этому.Написание модульной программы

Что я имею в виду, это то, что я хочу иметь многоразовый «обрабатывающий» материал, содержащийся в его собственных файлах C#. Таким образом, я мог бы просто скопировать файлы между проектами, чтобы иметь возможность повторно использовать мой код. Поскольку это, вероятно, не имеет смысла, позвольте мне объяснить с помощью примера.

Program.cs

static class Program 
{ 
    static void Main() 
    { 
     int[] x = {0, 0, 0, 0, 0}; 
     BClass b = new BClass(x); 
     Console.Write("[ "); 
     foreach (int i in x) 
     { 
      Console.Write(i + " "); 
     } 
     Console.Write("]\n"); 
     Console.Read(); 
    } 
} 

BClass.cs

class BClass 
{ 
    int[] x; 
    public BClass(int[] x) 
    { 
     for (int i = 1; i < 5; i++) 
     { 
      x[i] = i; 
     } 
    } 
} 

Теперь, это работает отлично, я получаю выход я бы ожидать, но он чувствует себя неправильно, я Угадай? В дополнение к моим чувствам кишки, я получаю предупреждения (как и ожидалось), потому что объект BClass не используется. В конечном счете, мой вопрос: Каков наилучший способ сделать такую ​​модульную программу? Использование класса кажется неправильным, потому что я получаю ссылку на объект, который никогда не будет использоваться. Возможно, я неправильно использую класс?

+3

1-Субъективные вопросы, как это будет, безусловно, закрыт на С.О. 2-Создание класса - хорошая идея, но вместо того, чтобы делать что-то в конструкторе, просто создавайте статические функции и используйте их, вам совсем не нужен экземпляр BClass. 3. Если вы действительно хотите повторно использовать код, поместите эти классы в библиотеку классов, лучше, чем копировать файлы между проектами. – Gusman

+1

как объяснить объяснение того, что вы пытаетесь выполнить, не публикуя весь код 'python', который не имеет отношения к C#, если вы не понимаете Классы и как они работают, а также управляемая событиями программа в отношении C#, возможно, вы должны сделайте еще некоторое чтение, чтобы понять различия между тем, как делаются в .net vs python .. модульные или нет. – MethodMan

+0

@ Гусман Я не думал, что это было очень субъективно, я отредактировал заголовок, чтобы уточнить. В моей программе обработка выполняется в статических методах, а не в конструкторе, это был простой пример, однако мне нужно передать значения и как таковой я использовал конструктор. – maccartm

ответ

2

Похоже, что вы хотите иметь некоторую логику, которую вы можете запустить из любого места в вашем приложении. Для этого вы должны использовать статический метод.

Статический метод не требует запуска экземпляра.

Поскольку все BClass действительно содержит статический метод, вы также можете сделать BClass статическим. Статический класс - это класс, который не может быть создан. Он существует только для хранения статических методов.

public static class BClass 
{ 
    public static void DoStuff(int[] x) 
    { 
     for (int i = 1; i < 5; i++) 
     { 
      x[i] = i; 
     } 
    } 
} 

И когда вы хотите использовать эту логику, вы просто делаете это

BClass.DoStuff(myArray); 
+0

Как отмечено в комментариях, это именно то, что я искал; спасибо за хорошо структурированный ответ с объяснением – maccartm

Смежные вопросы