Поле — это обычная переменная.
Поле в классе можно сразу инициализировать, т.е. присвоить ему значение.
Модификаторы поля:
Поле в классе можно сразу инициализировать, т.е. присвоить ему значение.
Модификаторы поля:
- public
- private
- protected
- internal
- new
- static
- readonly
public
Модификатор public позволяет получить доступ к этому полю из любого места кода программы, включая методы, определенные в других классах.
На практике это не рекомендуется. Доступ к полям должен осуществляться с помощью свойств, методов или индексаторов.
На практике это не рекомендуется. Доступ к полям должен осуществляться с помощью свойств, методов или индексаторов.
Main.cs
usingSystem;classOne {-
publicintval; }classProgram {-
publicstaticintMain() { -
One O =newOne(); -
O.val = 10; -
Console.WriteLine(O.val); -
Console.ReadKey(); -
return0; -
} }
usingSystem;classOne {-
publicintval; }classProgram {-
publicstaticintMain() { -
One O =newOne(); -
O.val = 10; -
Console.WriteLine(O.val); -
Console.ReadKey(); -
return0; -
} }
10
private
Установлен по умолчанию, поэтому явно его объявлять не обязательно.
Модификатор private позволяет получить доступ к этому полю только методам, определенным внутри этого класса.
Модификатор private позволяет получить доступ к этому полю только методам, определенным внутри этого класса.
Main.cs
usingSystem;classOne {-
privateinta; -
//модификатор private установлен по умолчанию, поэтому явно его объявлять не обязательно -
intb; -
publicOne(intarg0,intarg1) { -
a = arg0; -
b = arg1; -
} -
//доступ к полю имеют только члены, определенные внутри класса -
publicintSum() { -
return(a + b); -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(5, 10); -
Console.WriteLine(O.Sum()); -
Console.ReadKey(); -
return0; -
} }
usingSystem;classOne {-
privateinta; -
//модификатор private установлен по умолчанию, поэтому явно его объявлять не обязательно -
intb; -
publicOne(intarg0,intarg1) { -
a = arg0; -
b = arg1; -
} -
//доступ к полю имеют только члены, определенные внутри класса -
publicintSum() { -
return(a + b); -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(5, 10); -
Console.WriteLine(O.Sum()); -
Console.ReadKey(); -
return0; -
} }
15
protected
Модификатор protected позволяет получить доступ к этому полю методам, определенным внутри этого класса, а также методам производного класса.
Main.cs
usingSystem;//базовый классclassBase {-
protectedintval = 10; }//производный классclassOne : Base {-
inta; -
publicOne(intarg) { -
a = arg; -
} -
//доступ к полю имеют только члены, определенные внутри класса -
publicintSum() { -
//прямой доступ к полю с модификатором protected базового класса -
return(val + a); -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(5); -
Console.WriteLine(O.Sum()); -
Console.ReadKey(); -
return0; -
} }
usingSystem;//базовый классclassBase {-
protectedintval = 10; }//производный классclassOne : Base {-
inta; -
publicOne(intarg) { -
a = arg; -
} -
//доступ к полю имеют только члены, определенные внутри класса -
publicintSum() { -
//прямой доступ к полю с модификатором protected базового класса -
return(val + a); -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(5); -
Console.WriteLine(O.Sum()); -
Console.ReadKey(); -
return0; -
} }
15
internal
Модификатор internal позволяет получить доступ к полю из любого файла сборки.
One.cs
classOne {-
internalintval = 10; }
classOne {-
internalintval = 10; }
Main.cs
usingSystem;classTwo {-
intval; -
publicTwo(intarg) { -
val = arg; -
} -
publicintgetVal() { -
returnval; -
} }classProgram {-
publicstaticintMain() { -
//класс находится в другом файле -
One O =newOne(); -
Two T =newTwo(5); -
Console.WriteLine(O.val + T.getVal()); -
Console.ReadKey(); -
return0; -
} }
usingSystem;classTwo {-
intval; -
publicTwo(intarg) { -
val = arg; -
} -
publicintgetVal() { -
returnval; -
} }classProgram {-
publicstaticintMain() { -
//класс находится в другом файле -
One O =newOne(); -
Two T =newTwo(5); -
Console.WriteLine(O.val + T.getVal()); -
Console.ReadKey(); -
return0; -
} }
15
new
Модификатор new явно скрывает члены базового класса, которые имею такое же имя, как у члена производного класса.
Не желательно создавать имена членов в производном классе, которые соответствуют именам в базовом классе.
Не желательно создавать имена членов в производном классе, которые соответствуют именам в базовом классе.
Main.cs
usingSystem;//базовый классclassBase {-
protectedintval = 10; }//производный классclassOne : Base {-
//модификатор new явно скрывает поле с таким же именем из базового класса -
newintval; -
publicOne(intarg) { -
val = arg; -
} -
publicintSum() { -
//обратите ВНИМАНИЕ на доступ к полю базового типа с таким же именем -
return(val +base.val); -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(5); -
Console.WriteLine(O.Sum()); -
Console.ReadKey(); -
return0; -
} }
usingSystem;//базовый классclassBase {-
protectedintval = 10; }//производный классclassOne : Base {-
//модификатор new явно скрывает поле с таким же именем из базового класса -
newintval; -
publicOne(intarg) { -
val = arg; -
} -
publicintSum() { -
//обратите ВНИМАНИЕ на доступ к полю базового типа с таким же именем -
return(val +base.val); -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(5); -
Console.WriteLine(O.Sum()); -
Console.ReadKey(); -
return0; -
} }
15
static
Модификатор static создает статический член, который принадлежит только типу, а не его объекту.
Main.cs
usingSystem;classOne {-
publicstaticintval = 10; }classProgram {-
publicstaticintMain() { -
//доступ к статическом члену происходит напрямую, а не через объект -
Console.WriteLine(One.val); -
Console.ReadKey(); -
return0; -
} }
usingSystem;classOne {-
publicstaticintval = 10; }classProgram {-
publicstaticintMain() { -
//доступ к статическом члену происходит напрямую, а не через объект -
Console.WriteLine(One.val); -
Console.ReadKey(); -
return0; -
} }
15
readonly
Модификатор readonly делает поле константным. В отличии от константы, его не обязательно сразу инициализировать.
Main.cs
usingSystem;classOne {-
readonlyintval; -
publicOne(intarg) { -
val = arg; -
} -
publicintgetVal() { -
returnval; -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(10); -
Console.WriteLine(O.getVal()); -
Console.ReadKey(); -
return0; -
} }
usingSystem;classOne {-
readonlyintval; -
publicOne(intarg) { -
val = arg; -
} -
publicintgetVal() { -
returnval; -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(10); -
Console.WriteLine(O.getVal()); -
Console.ReadKey(); -
return0; -
} }
10