2016-04-21 3 views
1

Поскольку this.name не работает для доступа к полям с тем же именем, что и параметр метода в статических классах, я ищу способ сделать это.Поле статического класса C# и параметр с таким же именем

В качестве примера я хотел бы сделать это:

static class test 
{ 
    private static string aString; 
    public static void method(string aString) 
    { 
     // aString (field) = aString (parameter) 
    } 
} 
+2

Лучшим вариантом было бы переименование параметра * в 'astring'. Соглашением является то, что параметры начинаются с строчной буквы –

ответ

7

использование:

test.Astring = x; 

т.е. заменить это с именем класса, тест в этом случае.

+0

Ровно спасибо! –

+0

Это * далеко * лучше переименовать параметр в 'aString'. В противном случае, следующий вопрос будет следующим: «Почему я не могу изменить статическое поле?» –

+0

@PanagiotisKanavos я согласен – Henningsson

0
static class test 
{ 
    private static string Astring="static"; 
    public static void method(string Astring) 
    { 
     string passedString = Astring; // will be the passed value 
     string staticField = test.Astring; // will be static 
    } 
} 

если мы называем метод, как test.method("Parameter");staticField будет иметь значение static и passedString будет иметь значение Parameter.

Ключевое слово this обозначает текущий экземпляр класса; статические поля не могут быть доступны через экземпляр, вместо этого вы должны использовать имя класса для доступа к статическому полю.

Примечание: - Пожалуйста, позаботьтесь, пока naming the variables. Избегайте предоставления одинакового имени в одном классе. Будет лучше, если вы определите класс следующим образом:

static class test 
    { 
     private static string StaticAstring="static"; 
     public static void method(string passedAstring) 
     { 
      string staticField = StaticAstring; // will be static 
      string passedString = passedAstring; // will be the passed value 
     } 
    } 
+0

Вы назвали свои локальные переменные неправильным раундом на данный момент. –

+0

@JonSkeet: спасибо за упоминание, я исправил, что –

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