数据类型 - 基本类型

  • 8种整数类型
  • 2种用于科学计算的服点类型
  • 1种金融计算浮点类型
  • 1种布尔类型
  • 1种字符类型

除了基本类型外,还有复合类型。

基本类型概括

  • 整数类型中,最常用的为int和long。
  • 浮点类型中,分为float和double。
  • 金融计算用decimal。

字面值有一个默认类型:整数int,小数double。

  • 科学计数法

int a = 2E2; //200
int b = 0xff; //255

  • 布尔类型

bool isCool = true;

  • 字符类型

char ch = ‘1’;

C、C++、C#中单双引号是有差别的。

string

  • 关于转义字符

char ch = ‘123\n123’; //回车

  • 字符串string可以嵌入转义符,关于@

string str = @“F:\ABC\BCD\abc.txt”;

  • string的不可变性:返回一个新字符串。

WriteLine(str); //abc
str.ToUpper();
WriteLine(str); //abc

  • string与StringBuilder差别

using System.Diagnostics;

Stopwatch timeRecorder = new Stopwatch();
timeRecorder.Start();
{
for(int i = 0; i < 10000; i++){
str += i.ToString();
}
} //572ms
{
StringBuilder sb = new StringBuilder();
for(int i = 0; i < 10000; i++){
sb.Append(i.ToString());
}
} //2ms
timeRecorder.Stop();
Console.WriteLine(timeRecorder.ElapsedMilliseconds);

因此大量字符串修改适用于StringBuilder。

类型的分类

string str = null; //与“”并不同。
string.Empty; //与null不同。

  • 可空类型

对于数据库支持null,而语言不支持,可以如下操作。

int? number = null;

自动判断数据类型(隐式类型),用var。

var number = 1;

数据类型的转换

  • 显示转换,从高到低

int a = 1;
long b = 111111111111;
a = (int)b;

  • MaxValue为例,溢出

checked{
int a = int.MaxValue;
a = a + 1;
} // Overflow

  • 隐式转换,从低到高,不用管

  • Parse()

var str1 = Console.ReadLine();
var str2 = Console.ReadLine();
int a1 = int.Parse(str1);
int a2 = int.Parse(str2);

  • TryParse()
int a;
if (int.TryParse(str1, out a)){
	Console.WriteLine(a1);
}else{
	Console.WriteLine(“解析失败!”);
}