第一二章 1.4中System.Console.Read() 返回的数据类型是与字符值对应的一个整数,如果没有更多字符可用,返回-1。若要获得字符,要将整数转型为一个字符 e.g. int readValue;
char character;
readValue = System.Console.Read();
character = (char )readValue;
System.Console.Write(character);
2.1.1中提到c#设计者和CLI设计者为添加具体类型曾争执不休。最后决定只支持每个长度一种类型。c#设计者认为除byte(无符号byte更有用)外其他有符号类型易被接受。p.s.对比C/c++中short是short int的缩写。在c#中short本身是一种实际的数据类型 其BCL名称为System.Int16.
2.1.3中说道decimal具有128位精度。适用于大而精的(类似于金融)计算。虽然精度高但范围小,所以从浮点转到decimal可能会溢出。
//Display the value 42 using a hexadecimal literal
System.Console.WriteLine(0x002A);
//Display"0x2A"
system.Console.WriteLine("0x{0:X} ",42);Round-Trip(往返行程)格式化
不会发生最后一位数被丢掉的情况
const double number = 1.61803388749895;
double result;
string text;
text = string .Format("{0} ",number);
result = double .Parse(text);
System.Console.WriteLine("{0}:result != number ",
result != number);
text = string .Format("{0:R} ",number);
result = double .Parse(text);
System.Console.WriteLine("{0}:result == number ",
result == number);
//输出结果为True: result != number
//True:result == number
2.2.3逐字字符串字面量(verbatim string literal)
不仅将反斜杠当做普通字符处理,而且会逐字解释所有空白字符。唯一支持的转义字符为"
class Triangle class Triangleclass Triangle
{
static void Main()
{
System.Console.Write(@”begin
//
/ /
/ /
/------/
end”);
}
}
会照原样输出
string的静态方法 Trim()会从外向内找到第一个非空白后停止 去掉字符时会将字符拆成char 从外向内删至第一个非待删字符
字符串是不可变的 所以使字符串 text.ToUpper()要赋值给另一字符串.如果有大量字符串需要修改可使用System.Text.StringBuilder类型
2.4.1中提到c#中值变量放在栈(stack)中,引用类型指向的内存区域称为堆(heap).由于访问引用类型涉及一次额外跳转,速度会慢些。但不像值类型要求相同数据的内存副本,所以内存利用率会好些 32位处理器只需复制一个32比特的地址,64位只需一64位的地址
2.5可空修饰符 由于null不能附给值类型 so C#2.0推出新特性
static void Main()
{
int ? count = null ;
{
//...
}
while (count == null )
}2.6.1check块
public class Program
{
public static void Main(){
checked {
// int.MaxValue equals 2147483647
int n = int .MaxValue;
n = n + 1;
System.Console.WriteLine(n);
}
}
}输出时会报溢出的错 若用 unchecked 则会输出-2147483648
2.6.3由于没有定义从字符串到数值类型的隐或显式类型因此需要像Parse()这样的方法。每个值数据类型都包含一个Parse()
string text = "9.11E-31 ";
float kgElectronMass = float .Parse(text);还有一种特殊类型,可将一种类型换成另外一种
string muddleCText = "278.4375 ";
double middleC = System.Convert.ToDouble(middleCText);
bool boolean = System.Convert.ToBoolean(middleC);System.Convert只支持预定义数量的类型,且不可扩展。 double number;
string input;
System.Console.Write("Enter a number: ");
input = System.Console.ReadLine();
if (double .TryParse(input,out number))
{
//converted correctly
}else {
System.Console.WriteLine("entered not a valid number ");
}2.7.2 交错数组要求内部每个数组都创建一个数组实例
int [] [] cells = {
new int [] {1,0,2,0},
new int [] {1,2,0}
}C++非托管 并非总检查你的数组边界