Поле — это обычная переменная.
Поле в классе можно сразу инициализировать, т.е. присвоить ему значение.
Модификаторы поля:
Поле в классе можно сразу инициализировать, т.е. присвоить ему значение.
Модификаторы поля:
- public
- private
- protected
- internal
- new
- static
- readonly
public
Модификатор public позволяет получить доступ к этому полю из любого места кода программы, включая методы, определенные в других классах.
На практике это не рекомендуется. Доступ к полям должен осуществляться с помощью свойств, методов или индексаторов.
На практике это не рекомендуется. Доступ к полям должен осуществляться с помощью свойств, методов или индексаторов.
Main.cs
using
System;
class
One {
-
public
int
val;
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One();
-
O.val = 10;
-
Console.WriteLine(O.val);
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
public
int
val;
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One();
-
O.val = 10;
-
Console.WriteLine(O.val);
-
Console.ReadKey();
-
return
0;
-
}
}
10
private
Установлен по умолчанию, поэтому явно его объявлять не обязательно.
Модификатор private позволяет получить доступ к этому полю только методам, определенным внутри этого класса.
Модификатор private позволяет получить доступ к этому полю только методам, определенным внутри этого класса.
Main.cs
using
System;
class
One {
-
private
int
a;
-
//модификатор private установлен по умолчанию, поэтому явно его объявлять не обязательно
-
int
b;
-
public
One(
int
arg0,
int
arg1) {
-
a = arg0;
-
b = arg1;
-
}
-
//доступ к полю имеют только члены, определенные внутри класса
-
public
int
Sum() {
-
return
(a + b);
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(5, 10);
-
Console.WriteLine(O.Sum());
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
private
int
a;
-
//модификатор private установлен по умолчанию, поэтому явно его объявлять не обязательно
-
int
b;
-
public
One(
int
arg0,
int
arg1) {
-
a = arg0;
-
b = arg1;
-
}
-
//доступ к полю имеют только члены, определенные внутри класса
-
public
int
Sum() {
-
return
(a + b);
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(5, 10);
-
Console.WriteLine(O.Sum());
-
Console.ReadKey();
-
return
0;
-
}
}
15
protected
Модификатор protected позволяет получить доступ к этому полю методам, определенным внутри этого класса, а также методам производного класса.
Main.cs
using
System;
//базовый класс
class
Base {
-
protected
int
val = 10;
}
//производный класс
class
One : Base {
-
int
a;
-
public
One(
int
arg) {
-
a = arg;
-
}
-
//доступ к полю имеют только члены, определенные внутри класса
-
public
int
Sum() {
-
//прямой доступ к полю с модификатором protected базового класса
-
return
(val + a);
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(5);
-
Console.WriteLine(O.Sum());
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
//базовый класс
class
Base {
-
protected
int
val = 10;
}
//производный класс
class
One : Base {
-
int
a;
-
public
One(
int
arg) {
-
a = arg;
-
}
-
//доступ к полю имеют только члены, определенные внутри класса
-
public
int
Sum() {
-
//прямой доступ к полю с модификатором protected базового класса
-
return
(val + a);
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(5);
-
Console.WriteLine(O.Sum());
-
Console.ReadKey();
-
return
0;
-
}
}
15
internal
Модификатор internal позволяет получить доступ к полю из любого файла сборки.
One.cs
class
One {
-
internal
int
val = 10;
}
class
One {
-
internal
int
val = 10;
}
Main.cs
using
System;
class
Two {
-
int
val;
-
public
Two(
int
arg) {
-
val = arg;
-
}
-
public
int
getVal() {
-
return
val;
-
}
}
class
Program {
-
public
static
int
Main() {
-
//класс находится в другом файле
-
One O =
new
One();
-
Two T =
new
Two(5);
-
Console.WriteLine(O.val + T.getVal());
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
Two {
-
int
val;
-
public
Two(
int
arg) {
-
val = arg;
-
}
-
public
int
getVal() {
-
return
val;
-
}
}
class
Program {
-
public
static
int
Main() {
-
//класс находится в другом файле
-
One O =
new
One();
-
Two T =
new
Two(5);
-
Console.WriteLine(O.val + T.getVal());
-
Console.ReadKey();
-
return
0;
-
}
}
15
new
Модификатор new явно скрывает члены базового класса, которые имею такое же имя, как у члена производного класса.
Не желательно создавать имена членов в производном классе, которые соответствуют именам в базовом классе.
Не желательно создавать имена членов в производном классе, которые соответствуют именам в базовом классе.
Main.cs
using
System;
//базовый класс
class
Base {
-
protected
int
val = 10;
}
//производный класс
class
One : Base {
-
//модификатор new явно скрывает поле с таким же именем из базового класса
-
new
int
val;
-
public
One(
int
arg) {
-
val = arg;
-
}
-
public
int
Sum() {
-
//обратите ВНИМАНИЕ на доступ к полю базового типа с таким же именем
-
return
(val +
base
.val);
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(5);
-
Console.WriteLine(O.Sum());
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
//базовый класс
class
Base {
-
protected
int
val = 10;
}
//производный класс
class
One : Base {
-
//модификатор new явно скрывает поле с таким же именем из базового класса
-
new
int
val;
-
public
One(
int
arg) {
-
val = arg;
-
}
-
public
int
Sum() {
-
//обратите ВНИМАНИЕ на доступ к полю базового типа с таким же именем
-
return
(val +
base
.val);
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(5);
-
Console.WriteLine(O.Sum());
-
Console.ReadKey();
-
return
0;
-
}
}
15
static
Модификатор static создает статический член, который принадлежит только типу, а не его объекту.
Main.cs
using
System;
class
One {
-
public
static
int
val = 10;
}
class
Program {
-
public
static
int
Main() {
-
//доступ к статическом члену происходит напрямую, а не через объект
-
Console.WriteLine(One.val);
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
public
static
int
val = 10;
}
class
Program {
-
public
static
int
Main() {
-
//доступ к статическом члену происходит напрямую, а не через объект
-
Console.WriteLine(One.val);
-
Console.ReadKey();
-
return
0;
-
}
}
15
readonly
Модификатор readonly делает поле константным. В отличии от константы, его не обязательно сразу инициализировать.
Main.cs
using
System;
class
One {
-
readonly
int
val;
-
public
One(
int
arg) {
-
val = arg;
-
}
-
public
int
getVal() {
-
return
val;
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(10);
-
Console.WriteLine(O.getVal());
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
readonly
int
val;
-
public
One(
int
arg) {
-
val = arg;
-
}
-
public
int
getVal() {
-
return
val;
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(10);
-
Console.WriteLine(O.getVal());
-
Console.ReadKey();
-
return
0;
-
}
}
10