Главная страница

Назначение. Netframework


Скачать 107.32 Kb.
НазваниеНазначение. Netframework
Дата24.01.2018
Размер107.32 Kb.
Формат файлаdocx
Имя файла1.docx
ТипДокументы
#35071
страница2 из 7
1   2   3   4   5   6   7

Автоматическое преобразование типов


Когда данные одного типа присваиваются переменной другого типа, неявное преобразование типов происходит автоматически при следующих условиях:

    • оба типа совместимы

    • диапазон представления чисел целевого типа шире, чем у исходного типа

Если оба эти условия удовлетворяются, то происходит расширяющее преобразование. Например, тип int достаточно крупный, чтобы вмещать в себя все действительные значения типа byte, а кроме того, оба типа, int и byte, являются совместимыми целочисленными типами, и поэтому для них вполне возможно неявное преобразование.

Числовые типы, как целочисленные, так и с плавающей точкой, вполне совместимы друг с другом для выполнения расширяющих преобразований. Рассмотрим пример:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;
namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

short num1, num2;

num1 = 10;

num2 = 15;
Console.WriteLine("{0} + {1} = {2}",num1,num2,Sum(num1,num2));

Console.ReadLine();

}
static int Sum(int x, int y)

{

return x + y;

}

}

}

.

Приведение несовместимых типов


Приведение — это команда компилятору преобразовать результат вычисления выражения в указанный тип. А для этого требуется явное преобразование типов. Ниже приведена общая форма приведения типов:

   (целевой_тип) выражение

Здесь целевой_тип обозначает тот тип, в который желательно преобразовать указанное выражение.

Если приведение типов приводит к сужающему преобразованию, то часть информации может быть потеряна. Давайте рассмотрим пример:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;
namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

int i1 = 455, i2 = 84500;

decimal dec = 7.98845m;
// Приводим два числа типа int

// к типу short

Console.WriteLine((short)i1);

Console.WriteLine((short)i2);
// Приводим число типа decimal

// к типу int

Console.WriteLine((int)dec);
Console.ReadLine();

}

}

}
Оператор присваивания обозначается одиночным знаком равенства (=). В C# оператор присваивания действует таким же образом, как и в других языках программирования. Ниже приведена его общая форма:

    имя_переменной = выражение

Здесь имя_переменной должно быть совместимо с типом выражения. У оператора присваивания имеется одна интересная особенность, о которой вам будет полезно знать: он позволяет создавать цепочку операций присваивания. Рассмотрим следующий фрагмент кода:

int x, у, z;

x = у = z = 10; // присвоить значение 10 переменным x, у и z

В приведенном выше фрагменте кода одно и то же значение 10 задается для переменных х, у и z с помощью единственного оператора присваивания. Это значение присваивается сначала переменной z, затем переменной у и, наконец, переменной х. Такой способ присваивания "по цепочке" удобен для задания общего значения целой группе переменных.

Составные операторы присваивания


В C# предусмотрены специальные составные операторы присваивания, упрощающие программирование некоторых операций присваивания. Обратимся сначала к простому примеру:

x = x + 1;
// Можно переписать следующим образом

x += 1;

Для многих двоичных операций, т.е. операций, требующих наличия двух операндов, существуют отдельные составные операторы присваивания. Общая форма всех этих операторов имеет следующий вид:

    имя переменной op = выражение

где op — арифметический или логический оператор, применяемый вместе с оператором присваивания.
6

Для ввода/вывода в консольном режиме используют следующие методы класса Console: Write( выводимая строка ), WriteLine( выводимая строка ), ReadLine() – возвращает введенную строку. Важное обстоятельство: метод ReadLine всегда возвращает данные типа string, в случае необходимости преобразования должны быть запрограммированы. Аргументом методов Write, WriteLine тоже должна быть символьная строка. Правда, здесь можно часто обойтись без явных преобразований. Разница между Write и WriteLine заключается в том, что после вывода строки WriteLine осуществляет автоматически переход на следующую строку на экране, Write этого не делает.

Для преобразования типов данных можно использовать методы класса System.Convert. Например, ToInt32 выполняет перевод в int; ToDouble выполняет перевод в double; ToString выполняет перевод в string. Какие методы имеются в классе Convert можно узнать очень легко: достаточно набрать это слово, поставить точку и на экране появится весь перечень его методов.

Рассмотрим простейший пример: вводим два числа и выполняем простейшие вычисления:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;
namespace ConsoleApp

{

class Program

{

static void Main(string[] args)

{

int i;

double x, y, z;

string s;

Console.Write("i=");//подсказка при вводе

s = Console.ReadLine();//ввод строки

i = Convert.ToInt32(s);//преобразование строки в целое

Console.Write("x=");

x = Convert.ToDouble(Console.ReadLine());//ввод, совмещенный с преобразованием

y = i * x;

z = 2 * i - x;

Console.WriteLine("y=" + y);//вывод с автоматическим преобразованием

Console.WriteLine(Convert.ToString(z));//вывод с явным преобразованием

Console.ReadLine();
}

}

}
Если аргумент метода WriteLine содержит символьную строку и число, то выполняется автоматическое преобразование. Достаточно писать даже пустую строку, например, “”+y. На внешний вид выводимых данных можно влиять форматами. Проиллюстрируем это следующим примером на обработку данных типа decimal.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;
namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

double d1, d2, d3;

string s;

s=Console.ReadLine();

d1=Convert.ToDecimal(s);

d2=4.5m; //m или M признак константы decimal

d3=d1*d2;

Console.WriteLine("Answer is :{0:###.##}", d3);

Console.ReadLine();
}

}

}
Формат {0 : ###.##} : запись формата состоит из номера аргумента и собственно формата.

Последняя строка Console.ReadLine(); необходима для остановки экрана пользователя после выполнения программы. В противном случае этот экран на мгновенье мелькнет на экране и погаснет.

7
1   2   3   4   5   6   7


написать администратору сайта