тип ссылки в тип Object
Main.cs
usingSystem;/*класс является типом ссылки*/publicclassText {-
publicvoidTextShow() { -
Console.WriteLine("Привет Мир!"); -
} }classProgram {-
publicstaticintMain() { -
Text T =newText(); -
/*тип Object*/ -
//1 способ, тип ссылки в тип Object -
objectobj0 = T; -
//2 способ, тип ссылки в тип Object -
objectobj1 =newText(); -
//доступ к членам класса -
((Text)obj0).TextShow(); -
((Text)obj1).TextShow(); -
Console.ReadKey(); -
return0; -
} }
usingSystem;/*класс является типом ссылки*/publicclassText {-
publicvoidTextShow() { -
Console.WriteLine("Привет Мир!"); -
} }classProgram {-
publicstaticintMain() { -
Text T =newText(); -
/*тип Object*/ -
//1 способ, тип ссылки в тип Object -
objectobj0 = T; -
//2 способ, тип ссылки в тип Object -
objectobj1 =newText(); -
//доступ к членам класса -
((Text)obj0).TextShow(); -
((Text)obj1).TextShow(); -
Console.ReadKey(); -
return0; -
} }
Привет Мир!
Привет Мир!
Привет Мир!
тип производного класса в тип базового класса
Main.cs
usingSystem;/*базовый класс*/publicclassIndex {-
ushortshowStart; -
ushortshowEnd; -
publicIndex(ushortarg0,ushortarg1) { -
showStart = arg0; -
showEnd = arg1; -
} -
publicushortResult() { -
return(ushort)(showEnd - showStart); -
} }/*производный класс*/publicclassCounter : Index {-
decimalprice; -
publicCounter(ushortarg0,ushortarg1,decimalarg2) :base(arg0, arg1) { -
price = arg2; -
} -
publicdecimalSum() { -
returnMath.Round((decimal)(Result() * price) , 2); -
} }classProgram {-
publicstaticintMain() { -
Console.Write("Начальные показания счетчика : "); -
ushortval0 =ushort.Parse(Console.ReadLine()); -
Console.Write("Конечные показания счетчика : "); -
ushortval1 =ushort.Parse(Console.ReadLine()); -
Console.Write("Цену за 1 кВт/ч : "); -
decimalval2 =decimal.Parse(Console.ReadLine()); -
/*обычное решение, через объект производного класса*/ -
Counter C =newCounter(val0, val1, val2); -
Console.WriteLine("Сумма : {0}", C.Sum()); -
/*не совсем обычное решение, через объект базового класса*/ -
/*тип производного класса в тип базового*/ -
Index I =newCounter(val0, val1, val2); -
Console.WriteLine("Сумма : {0}", ((Counter)I).Sum()); -
Console.ReadKey(); -
return0; -
} }
usingSystem;/*базовый класс*/publicclassIndex {-
ushortshowStart; -
ushortshowEnd; -
publicIndex(ushortarg0,ushortarg1) { -
showStart = arg0; -
showEnd = arg1; -
} -
publicushortResult() { -
return(ushort)(showEnd - showStart); -
} }/*производный класс*/publicclassCounter : Index {-
decimalprice; -
publicCounter(ushortarg0,ushortarg1,decimalarg2) :base(arg0, arg1) { -
price = arg2; -
} -
publicdecimalSum() { -
returnMath.Round((decimal)(Result() * price) , 2); -
} }classProgram {-
publicstaticintMain() { -
Console.Write("Начальные показания счетчика : "); -
ushortval0 =ushort.Parse(Console.ReadLine()); -
Console.Write("Конечные показания счетчика : "); -
ushortval1 =ushort.Parse(Console.ReadLine()); -
Console.Write("Цену за 1 кВт/ч : "); -
decimalval2 =decimal.Parse(Console.ReadLine()); -
/*обычное решение, через объект производного класса*/ -
Counter C =newCounter(val0, val1, val2); -
Console.WriteLine("Сумма : {0}", C.Sum()); -
/*не совсем обычное решение, через объект базового класса*/ -
/*тип производного класса в тип базового*/ -
Index I =newCounter(val0, val1, val2); -
Console.WriteLine("Сумма : {0}", ((Counter)I).Sum()); -
Console.ReadKey(); -
return0; -
} }
Начальные показания счетчика : 0
Конечные показания счетчика : 100
Цену за 1 кВт/ч : 0,3084
Сумма : 30,84
Сумма : 30,84
Конечные показания счетчика : 100
Цену за 1 кВт/ч : 0,3084
Сумма : 30,84
Сумма : 30,84
тип класса в тип интерфейса
Main.cs
usingSystem;/*интерфейс*/publicinterfaceIResultInterface {-
ushortResult(); }/*класс должен реализовывать этот интерфейс*/publicclassCounter : IResultInterface {-
ushortshowStart; -
ushortshowEnd; -
decimalprice; -
publicCounter(ushortarg0,ushortarg1,decimalarg2) { -
showStart = arg0; -
showEnd = arg1; -
price = arg2; -
} -
publicushortResult() { -
return(ushort)(showEnd - showStart); -
} -
publicdecimalSum() { -
returnMath.Round((decimal)(Result() * price) , 2); -
} }classProgram {-
publicstaticintMain() { -
Console.Write("Начальные показания счетчика : "); -
ushortval0 =ushort.Parse(Console.ReadLine()); -
Console.Write("Конечные показания счетчика : "); -
ushortval1 =ushort.Parse(Console.ReadLine()); -
Console.Write("Цену за 1 кВт/ч : "); -
decimalval2 =decimal.Parse(Console.ReadLine()); -
/*обычное решение, через объект производного класса*/ -
Counter C =newCounter(val0, val1, val2); -
Console.WriteLine("Сумма : {0}", C.Sum()); -
/*не совсем обычное решение, через объект интерфейса*/ -
/*тип класса в тип интерфейса*/ -
IResultInterface I =newCounter(val0, val1, val2); -
Console.WriteLine("Сумма : {0}", ((Counter)I).Sum()); -
Console.ReadKey(); -
return0; -
} }
usingSystem;/*интерфейс*/publicinterfaceIResultInterface {-
ushortResult(); }/*класс должен реализовывать этот интерфейс*/publicclassCounter : IResultInterface {-
ushortshowStart; -
ushortshowEnd; -
decimalprice; -
publicCounter(ushortarg0,ushortarg1,decimalarg2) { -
showStart = arg0; -
showEnd = arg1; -
price = arg2; -
} -
publicushortResult() { -
return(ushort)(showEnd - showStart); -
} -
publicdecimalSum() { -
returnMath.Round((decimal)(Result() * price) , 2); -
} }classProgram {-
publicstaticintMain() { -
Console.Write("Начальные показания счетчика : "); -
ushortval0 =ushort.Parse(Console.ReadLine()); -
Console.Write("Конечные показания счетчика : "); -
ushortval1 =ushort.Parse(Console.ReadLine()); -
Console.Write("Цену за 1 кВт/ч : "); -
decimalval2 =decimal.Parse(Console.ReadLine()); -
/*обычное решение, через объект производного класса*/ -
Counter C =newCounter(val0, val1, val2); -
Console.WriteLine("Сумма : {0}", C.Sum()); -
/*не совсем обычное решение, через объект интерфейса*/ -
/*тип класса в тип интерфейса*/ -
IResultInterface I =newCounter(val0, val1, val2); -
Console.WriteLine("Сумма : {0}", ((Counter)I).Sum()); -
Console.ReadKey(); -
return0; -
} }
Начальные показания счетчика : 0
Конечные показания счетчика : 100
Цену за 1 кВт/ч : 0,3084
Сумма : 30,84
Сумма : 30,84
Конечные показания счетчика : 100
Цену за 1 кВт/ч : 0,3084
Сумма : 30,84
Сумма : 30,84
тип массива в тип массива
Оба массива должны иметь одинаковую размерность. При преобразовании происходит присваивание ссылок, а не значений. Main.cs
usingSystem;classProgram {-
publicstaticintMain() { -
int[] ara0 =newint[3] {1, 2, 3}; -
/*размеры массивов должны совпадать*/ -
int[] ara1 =newint[3]; -
/*тип массива в тип массива*/ -
//1 вариант -
ara1 = ara0; -
for(inti=0; i<ara1.Length; i++) { -
Console.WriteLine("ara1[{0}] = {1}", i, ara1[i]); -
} -
Console.WriteLine(); -
//2 вариант -
int[] ara2 = ara0; -
for(inti=0; i<ara2.Length; i++) { -
Console.WriteLine("ara2[{0}] = {1}", i, ara2[i]); -
} -
Console.ReadKey(); -
return0; -
} }
usingSystem;classProgram {-
publicstaticintMain() { -
int[] ara0 =newint[3] {1, 2, 3}; -
/*размеры массивов должны совпадать*/ -
int[] ara1 =newint[3]; -
/*тип массива в тип массива*/ -
//1 вариант -
ara1 = ara0; -
for(inti=0; i<ara1.Length; i++) { -
Console.WriteLine("ara1[{0}] = {1}", i, ara1[i]); -
} -
Console.WriteLine(); -
//2 вариант -
int[] ara2 = ara0; -
for(inti=0; i<ara2.Length; i++) { -
Console.WriteLine("ara2[{0}] = {1}", i, ara2[i]); -
} -
Console.ReadKey(); -
return0; -
} }
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
usingSystem;classProgram {-
publicstaticintMain() { -
int[] ara0 =newint[3] {1, 2, 3}; -
/*размеры массивов должны совпадать*/ -
Array Ara1 =newint[3]; -
/*тип массива в тип массива*/ -
//1 вариант -
Ara1 = ara0; -
for(inti=0; i<Ara1.Length; i++) { -
//обратите внимание на доступ к элементу массива -
Console.WriteLine("Ara1[{0}] = {1}", i, Ara1.GetValue(i)); -
} -
Console.WriteLine(); -
//2 вариант -
Array Ara2 = ara0; -
for(inti=0; i<Ara2.Length; i++) { -
//обратите внимание на доступ к элементу массива -
Console.WriteLine("Ara2[{0}] = {1}", i, Ara2.GetValue(i)); -
} -
Console.ReadKey(); -
return0; -
} }
usingSystem;classProgram {-
publicstaticintMain() { -
int[] ara0 =newint[3] {1, 2, 3}; -
/*размеры массивов должны совпадать*/ -
Array Ara1 =newint[3]; -
/*тип массива в тип массива*/ -
//1 вариант -
Ara1 = ara0; -
for(inti=0; i<Ara1.Length; i++) { -
//обратите внимание на доступ к элементу массива -
Console.WriteLine("Ara1[{0}] = {1}", i, Ara1.GetValue(i)); -
} -
Console.WriteLine(); -
//2 вариант -
Array Ara2 = ara0; -
for(inti=0; i<Ara2.Length; i++) { -
//обратите внимание на доступ к элементу массива -
Console.WriteLine("Ara2[{0}] = {1}", i, Ara2.GetValue(i)); -
} -
Console.ReadKey(); -
return0; -
} }
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
usingSystem;/*делегат*/publicdelegatedecimaldelegateSum();publicclassCounter {-
ushortshowStart; -
ushortshowEnd; -
decimalprice; -
publicCounter(ushortarg0,ushortarg1,decimalarg2) { -
showStart = arg0; -
showEnd = arg1; -
price = arg2; -
} -
publicushortResult() { -
return(ushort)(showEnd - showStart); -
} -
publicdecimalSum() { -
returnMath.Round((decimal)(Result() * price), 2); -
} }classProgram {-
publicstaticintMain() { -
Console.Write("Начальные показания счетчика : "); -
ushortval0 =ushort.Parse(Console.ReadLine()); -
Console.Write("Конечные показания счетчика : "); -
ushortval1 =ushort.Parse(Console.ReadLine()); -
Console.Write("Цену за 1 кВт/ч : "); -
decimalval2 =decimal.Parse(Console.ReadLine()); -
/*обычное решение, через объект производного класса*/ -
Counter C =newCounter(val0, val1, val2); -
Console.WriteLine("Сумма : {0}", C.Sum()); -
/*ну ОЧЕНЬ совсем не обычное решение, через объект класса Delegate*/ -
/*тип делегата к типу класса Delegate*/ -
//инициализация делегата -
delegateSum dS =newdelegateSum(C.Sum); -
//создание и инициализация переменной класса Delegate -
Delegate D = dS; -
/* -
обратите ВНИМАНИЕ на доступ к методу класса, через метод DynamicInvoke, -
если метод класса имеет параметры, их нужно передать методу DynamicInvoke, -
ели их нет, передаем значение null -
*/ -
Console.WriteLine("Сумма : {0}", D.DynamicInvoke(null)); -
Console.ReadKey(); -
return0; -
} }
usingSystem;/*делегат*/publicdelegatedecimaldelegateSum();publicclassCounter {-
ushortshowStart; -
ushortshowEnd; -
decimalprice; -
publicCounter(ushortarg0,ushortarg1,decimalarg2) { -
showStart = arg0; -
showEnd = arg1; -
price = arg2; -
} -
publicushortResult() { -
return(ushort)(showEnd - showStart); -
} -
publicdecimalSum() { -
returnMath.Round((decimal)(Result() * price), 2); -
} }classProgram {-
publicstaticintMain() { -
Console.Write("Начальные показания счетчика : "); -
ushortval0 =ushort.Parse(Console.ReadLine()); -
Console.Write("Конечные показания счетчика : "); -
ushortval1 =ushort.Parse(Console.ReadLine()); -
Console.Write("Цену за 1 кВт/ч : "); -
decimalval2 =decimal.Parse(Console.ReadLine()); -
/*обычное решение, через объект производного класса*/ -
Counter C =newCounter(val0, val1, val2); -
Console.WriteLine("Сумма : {0}", C.Sum()); -
/*ну ОЧЕНЬ совсем не обычное решение, через объект класса Delegate*/ -
/*тип делегата к типу класса Delegate*/ -
//инициализация делегата -
delegateSum dS =newdelegateSum(C.Sum); -
//создание и инициализация переменной класса Delegate -
Delegate D = dS; -
/* -
обратите ВНИМАНИЕ на доступ к методу класса, через метод DynamicInvoke, -
если метод класса имеет параметры, их нужно передать методу DynamicInvoke, -
ели их нет, передаем значение null -
*/ -
Console.WriteLine("Сумма : {0}", D.DynamicInvoke(null)); -
Console.ReadKey(); -
return0; -
} }
Начальные показания счетчика : 0
Конечные показания счетчика : 100
Цену за 1 кВт/ч : 0,3084
Сумма : 30,84
Сумма : 30,84
Конечные показания счетчика : 100
Цену за 1 кВт/ч : 0,3084
Сумма : 30,84
Сумма : 30,84