тип ссылки в тип Object
Main.cs
using
System;
/*класс является типом ссылки*/
public
class
Text {
-
public
void
TextShow() {
-
Console.WriteLine(
"Привет Мир!"
);
-
}
}
class
Program {
-
public
static
int
Main() {
-
Text T =
new
Text();
-
/*тип Object*/
-
//1 способ, тип ссылки в тип Object
-
object
obj0 = T;
-
//2 способ, тип ссылки в тип Object
-
object
obj1 =
new
Text();
-
//доступ к членам класса
-
((Text)obj0).TextShow();
-
((Text)obj1).TextShow();
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
/*класс является типом ссылки*/
public
class
Text {
-
public
void
TextShow() {
-
Console.WriteLine(
"Привет Мир!"
);
-
}
}
class
Program {
-
public
static
int
Main() {
-
Text T =
new
Text();
-
/*тип Object*/
-
//1 способ, тип ссылки в тип Object
-
object
obj0 = T;
-
//2 способ, тип ссылки в тип Object
-
object
obj1 =
new
Text();
-
//доступ к членам класса
-
((Text)obj0).TextShow();
-
((Text)obj1).TextShow();
-
Console.ReadKey();
-
return
0;
-
}
}
Привет Мир!
Привет Мир!
Привет Мир!
тип производного класса в тип базового класса
Main.cs
using
System;
/*базовый класс*/
public
class
Index {
-
ushort
showStart;
-
ushort
showEnd;
-
public
Index(
ushort
arg0,
ushort
arg1) {
-
showStart = arg0;
-
showEnd = arg1;
-
}
-
public
ushort
Result() {
-
return
(
ushort
)(showEnd - showStart);
-
}
}
/*производный класс*/
public
class
Counter : Index {
-
decimal
price;
-
public
Counter(
ushort
arg0,
ushort
arg1,
decimal
arg2) :
base
(arg0, arg1) {
-
price = arg2;
-
}
-
public
decimal
Sum() {
-
return
Math.Round((
decimal
)(Result() * price) , 2);
-
}
}
class
Program {
-
public
static
int
Main() {
-
Console.Write(
"Начальные показания счетчика : "
);
-
ushort
val0 =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Конечные показания счетчика : "
);
-
ushort
val1 =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Цену за 1 кВт/ч : "
);
-
decimal
val2 =
decimal
.Parse(Console.ReadLine());
-
/*обычное решение, через объект производного класса*/
-
Counter C =
new
Counter(val0, val1, val2);
-
Console.WriteLine(
"Сумма : {0}"
, C.Sum());
-
/*не совсем обычное решение, через объект базового класса*/
-
/*тип производного класса в тип базового*/
-
Index I =
new
Counter(val0, val1, val2);
-
Console.WriteLine(
"Сумма : {0}"
, ((Counter)I).Sum());
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
/*базовый класс*/
public
class
Index {
-
ushort
showStart;
-
ushort
showEnd;
-
public
Index(
ushort
arg0,
ushort
arg1) {
-
showStart = arg0;
-
showEnd = arg1;
-
}
-
public
ushort
Result() {
-
return
(
ushort
)(showEnd - showStart);
-
}
}
/*производный класс*/
public
class
Counter : Index {
-
decimal
price;
-
public
Counter(
ushort
arg0,
ushort
arg1,
decimal
arg2) :
base
(arg0, arg1) {
-
price = arg2;
-
}
-
public
decimal
Sum() {
-
return
Math.Round((
decimal
)(Result() * price) , 2);
-
}
}
class
Program {
-
public
static
int
Main() {
-
Console.Write(
"Начальные показания счетчика : "
);
-
ushort
val0 =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Конечные показания счетчика : "
);
-
ushort
val1 =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Цену за 1 кВт/ч : "
);
-
decimal
val2 =
decimal
.Parse(Console.ReadLine());
-
/*обычное решение, через объект производного класса*/
-
Counter C =
new
Counter(val0, val1, val2);
-
Console.WriteLine(
"Сумма : {0}"
, C.Sum());
-
/*не совсем обычное решение, через объект базового класса*/
-
/*тип производного класса в тип базового*/
-
Index I =
new
Counter(val0, val1, val2);
-
Console.WriteLine(
"Сумма : {0}"
, ((Counter)I).Sum());
-
Console.ReadKey();
-
return
0;
-
}
}
Начальные показания счетчика : 0
Конечные показания счетчика : 100
Цену за 1 кВт/ч : 0,3084
Сумма : 30,84
Сумма : 30,84
Конечные показания счетчика : 100
Цену за 1 кВт/ч : 0,3084
Сумма : 30,84
Сумма : 30,84
тип класса в тип интерфейса
Main.cs
using
System;
/*интерфейс*/
public
interface
IResultInterface {
-
ushort
Result();
}
/*класс должен реализовывать этот интерфейс*/
public
class
Counter : IResultInterface {
-
ushort
showStart;
-
ushort
showEnd;
-
decimal
price;
-
public
Counter(
ushort
arg0,
ushort
arg1,
decimal
arg2) {
-
showStart = arg0;
-
showEnd = arg1;
-
price = arg2;
-
}
-
public
ushort
Result() {
-
return
(
ushort
)(showEnd - showStart);
-
}
-
public
decimal
Sum() {
-
return
Math.Round((
decimal
)(Result() * price) , 2);
-
}
}
class
Program {
-
public
static
int
Main() {
-
Console.Write(
"Начальные показания счетчика : "
);
-
ushort
val0 =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Конечные показания счетчика : "
);
-
ushort
val1 =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Цену за 1 кВт/ч : "
);
-
decimal
val2 =
decimal
.Parse(Console.ReadLine());
-
/*обычное решение, через объект производного класса*/
-
Counter C =
new
Counter(val0, val1, val2);
-
Console.WriteLine(
"Сумма : {0}"
, C.Sum());
-
/*не совсем обычное решение, через объект интерфейса*/
-
/*тип класса в тип интерфейса*/
-
IResultInterface I =
new
Counter(val0, val1, val2);
-
Console.WriteLine(
"Сумма : {0}"
, ((Counter)I).Sum());
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
/*интерфейс*/
public
interface
IResultInterface {
-
ushort
Result();
}
/*класс должен реализовывать этот интерфейс*/
public
class
Counter : IResultInterface {
-
ushort
showStart;
-
ushort
showEnd;
-
decimal
price;
-
public
Counter(
ushort
arg0,
ushort
arg1,
decimal
arg2) {
-
showStart = arg0;
-
showEnd = arg1;
-
price = arg2;
-
}
-
public
ushort
Result() {
-
return
(
ushort
)(showEnd - showStart);
-
}
-
public
decimal
Sum() {
-
return
Math.Round((
decimal
)(Result() * price) , 2);
-
}
}
class
Program {
-
public
static
int
Main() {
-
Console.Write(
"Начальные показания счетчика : "
);
-
ushort
val0 =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Конечные показания счетчика : "
);
-
ushort
val1 =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Цену за 1 кВт/ч : "
);
-
decimal
val2 =
decimal
.Parse(Console.ReadLine());
-
/*обычное решение, через объект производного класса*/
-
Counter C =
new
Counter(val0, val1, val2);
-
Console.WriteLine(
"Сумма : {0}"
, C.Sum());
-
/*не совсем обычное решение, через объект интерфейса*/
-
/*тип класса в тип интерфейса*/
-
IResultInterface I =
new
Counter(val0, val1, val2);
-
Console.WriteLine(
"Сумма : {0}"
, ((Counter)I).Sum());
-
Console.ReadKey();
-
return
0;
-
}
}
Начальные показания счетчика : 0
Конечные показания счетчика : 100
Цену за 1 кВт/ч : 0,3084
Сумма : 30,84
Сумма : 30,84
Конечные показания счетчика : 100
Цену за 1 кВт/ч : 0,3084
Сумма : 30,84
Сумма : 30,84
тип массива в тип массива
Оба массива должны иметь одинаковую размерность. При преобразовании происходит присваивание ссылок, а не значений. Main.cs
using
System;
class
Program {
-
public
static
int
Main() {
-
int
[] ara0 =
new
int
[3] {1, 2, 3};
-
/*размеры массивов должны совпадать*/
-
int
[] ara1 =
new
int
[3];
-
/*тип массива в тип массива*/
-
//1 вариант
-
ara1 = ara0;
-
for
(
int
i=0; i<ara1.Length; i++) {
-
Console.WriteLine(
"ara1[{0}] = {1}"
, i, ara1[i]);
-
}
-
Console.WriteLine();
-
//2 вариант
-
int
[] ara2 = ara0;
-
for
(
int
i=0; i<ara2.Length; i++) {
-
Console.WriteLine(
"ara2[{0}] = {1}"
, i, ara2[i]);
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
Program {
-
public
static
int
Main() {
-
int
[] ara0 =
new
int
[3] {1, 2, 3};
-
/*размеры массивов должны совпадать*/
-
int
[] ara1 =
new
int
[3];
-
/*тип массива в тип массива*/
-
//1 вариант
-
ara1 = ara0;
-
for
(
int
i=0; i<ara1.Length; i++) {
-
Console.WriteLine(
"ara1[{0}] = {1}"
, i, ara1[i]);
-
}
-
Console.WriteLine();
-
//2 вариант
-
int
[] ara2 = ara0;
-
for
(
int
i=0; i<ara2.Length; i++) {
-
Console.WriteLine(
"ara2[{0}] = {1}"
, i, ara2[i]);
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
ara1[0] = 1
ara1[1] = 2
ara1[2] = 3
ara2[0] = 1
ara2[1] = 2
ara2[2] = 3
ara1[1] = 2
ara1[2] = 3
ara2[0] = 1
ara2[1] = 2
ara2[2] = 3
тип массива в тип класса Array
Main.cs
using
System;
class
Program {
-
public
static
int
Main() {
-
int
[] ara0 =
new
int
[3] {1, 2, 3};
-
/*размеры массивов должны совпадать*/
-
Array Ara1 =
new
int
[3];
-
/*тип массива в тип массива*/
-
//1 вариант
-
Ara1 = ara0;
-
for
(
int
i=0; i<Ara1.Length; i++) {
-
//обратите внимание на доступ к элементу массива
-
Console.WriteLine(
"Ara1[{0}] = {1}"
, i, Ara1.GetValue(i));
-
}
-
Console.WriteLine();
-
//2 вариант
-
Array Ara2 = ara0;
-
for
(
int
i=0; i<Ara2.Length; i++) {
-
//обратите внимание на доступ к элементу массива
-
Console.WriteLine(
"Ara2[{0}] = {1}"
, i, Ara2.GetValue(i));
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
Program {
-
public
static
int
Main() {
-
int
[] ara0 =
new
int
[3] {1, 2, 3};
-
/*размеры массивов должны совпадать*/
-
Array Ara1 =
new
int
[3];
-
/*тип массива в тип массива*/
-
//1 вариант
-
Ara1 = ara0;
-
for
(
int
i=0; i<Ara1.Length; i++) {
-
//обратите внимание на доступ к элементу массива
-
Console.WriteLine(
"Ara1[{0}] = {1}"
, i, Ara1.GetValue(i));
-
}
-
Console.WriteLine();
-
//2 вариант
-
Array Ara2 = ara0;
-
for
(
int
i=0; i<Ara2.Length; i++) {
-
//обратите внимание на доступ к элементу массива
-
Console.WriteLine(
"Ara2[{0}] = {1}"
, i, Ara2.GetValue(i));
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
Ara1[0] = 1
Ara1[1] = 2
Ara1[2] = 3
Ara2[0] = 1
Ara2[1] = 2
Ara2[2] = 3
Ara1[1] = 2
Ara1[2] = 3
Ara2[0] = 1
Ara2[1] = 2
Ara2[2] = 3
тип делегата к типу Delegate
Main.cs
using
System;
/*делегат*/
public
delegate
decimal
delegateSum();
public
class
Counter {
-
ushort
showStart;
-
ushort
showEnd;
-
decimal
price;
-
public
Counter(
ushort
arg0,
ushort
arg1,
decimal
arg2) {
-
showStart = arg0;
-
showEnd = arg1;
-
price = arg2;
-
}
-
public
ushort
Result() {
-
return
(
ushort
)(showEnd - showStart);
-
}
-
public
decimal
Sum() {
-
return
Math.Round((
decimal
)(Result() * price), 2);
-
}
}
class
Program {
-
public
static
int
Main() {
-
Console.Write(
"Начальные показания счетчика : "
);
-
ushort
val0 =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Конечные показания счетчика : "
);
-
ushort
val1 =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Цену за 1 кВт/ч : "
);
-
decimal
val2 =
decimal
.Parse(Console.ReadLine());
-
/*обычное решение, через объект производного класса*/
-
Counter C =
new
Counter(val0, val1, val2);
-
Console.WriteLine(
"Сумма : {0}"
, C.Sum());
-
/*ну ОЧЕНЬ совсем не обычное решение, через объект класса Delegate*/
-
/*тип делегата к типу класса Delegate*/
-
//инициализация делегата
-
delegateSum dS =
new
delegateSum(C.Sum);
-
//создание и инициализация переменной класса Delegate
-
Delegate D = dS;
-
/*
-
обратите ВНИМАНИЕ на доступ к методу класса, через метод DynamicInvoke,
-
если метод класса имеет параметры, их нужно передать методу DynamicInvoke,
-
ели их нет, передаем значение null
-
*/
-
Console.WriteLine(
"Сумма : {0}"
, D.DynamicInvoke(
null
));
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
/*делегат*/
public
delegate
decimal
delegateSum();
public
class
Counter {
-
ushort
showStart;
-
ushort
showEnd;
-
decimal
price;
-
public
Counter(
ushort
arg0,
ushort
arg1,
decimal
arg2) {
-
showStart = arg0;
-
showEnd = arg1;
-
price = arg2;
-
}
-
public
ushort
Result() {
-
return
(
ushort
)(showEnd - showStart);
-
}
-
public
decimal
Sum() {
-
return
Math.Round((
decimal
)(Result() * price), 2);
-
}
}
class
Program {
-
public
static
int
Main() {
-
Console.Write(
"Начальные показания счетчика : "
);
-
ushort
val0 =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Конечные показания счетчика : "
);
-
ushort
val1 =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Цену за 1 кВт/ч : "
);
-
decimal
val2 =
decimal
.Parse(Console.ReadLine());
-
/*обычное решение, через объект производного класса*/
-
Counter C =
new
Counter(val0, val1, val2);
-
Console.WriteLine(
"Сумма : {0}"
, C.Sum());
-
/*ну ОЧЕНЬ совсем не обычное решение, через объект класса Delegate*/
-
/*тип делегата к типу класса Delegate*/
-
//инициализация делегата
-
delegateSum dS =
new
delegateSum(C.Sum);
-
//создание и инициализация переменной класса Delegate
-
Delegate D = dS;
-
/*
-
обратите ВНИМАНИЕ на доступ к методу класса, через метод DynamicInvoke,
-
если метод класса имеет параметры, их нужно передать методу DynamicInvoke,
-
ели их нет, передаем значение null
-
*/
-
Console.WriteLine(
"Сумма : {0}"
, D.DynamicInvoke(
null
));
-
Console.ReadKey();
-
return
0;
-
}
}
Начальные показания счетчика : 0
Конечные показания счетчика : 100
Цену за 1 кВт/ч : 0,3084
Сумма : 30,84
Сумма : 30,84
Конечные показания счетчика : 100
Цену за 1 кВт/ч : 0,3084
Сумма : 30,84
Сумма : 30,84