статический метод с закрытыми методами внутри него [C #] - PullRequest
0 голосов
/ 18 февраля 2011

Я хотел сделать класс Draw , который будет иметь статический метод ConsoleSquare () , и я хотел сделать все другие методыв этом классе скрыто ( private ). Но у меня есть ошибки в отмеченных местах, и я не знаю, как их решить, и все еще достигаю той же идеи ( ConsoleSquare () - static;все остальные методы скрыты)

class Draw {
private string Spaces(int k){
    string str="";
    for(;k!=0;k--)
        str+='\b';
    return str;
    }
private string Line(int n,char c){
    string str="";
    for(;n!=0;n--)
        str+=c;
    return str;
    }
public static void ConsoleSquare(int n,char c){
    string line  = Line(n,c); // ovdje
    string space = c + Spaces(n - 2) + c; //ovdje
    Console.WriteLine(line);
    for (; n != 0; n--)
        Console.WriteLine(space);
    Console.WriteLine(line);
    }
}

Ответы [ 5 ]

9 голосов
/ 18 февраля 2011

Статический метод не может вызывать методы экземпляра, если вы явно не предоставите экземпляр.Отметьте Spaces и Line также как статические, если вы хотите вызвать их напрямую из ConsoleSquare.

4 голосов
/ 18 февраля 2011

Объявите их как private static.

3 голосов
/ 18 февраля 2011

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

1 голос
/ 18 февраля 2011

Сделайте статические методы тоже статичными.

0 голосов
/ 18 февраля 2011

Я бы предложил вам инкапсулировать все Draw связанные методы в другом классе. Не помещайте туда статический метод. Пусть в этом тоже все методы будут публичными.

Определить другой класс; назвать это DrawUI или что-то. Пусть это имеет статический метод. В этом статическом методе создайте экземпляр класса Draw, используйте его методы

...