《精通c#》基础应用1

2019-08-22  本文已影响0人  王清水


1,格式化数值数据

.NET数值格式化字符表

使用:

a,Console.WriteLine($"{xxxx:n}");  //控制台输出

b,string.Format();    //方法输出

2,内建数据类型与new操作符

所有的内建数据类型都支持默认构造函数,这个特性允许我们使用new关键字来创建变量,它将变量自动设置为其默认值;

bool默认false;

数值类型默认为0;浮点型为0.0;

char类型为单个空字符;

BigInterger变量设置为0;

DateTime类型设置为1/1/0001 12:00:00 AM;

对象引用包括string设置为null;

3,数据类型类的层次结构

系统类型的类层次结构

所有类型都派生自System.Object, 它定义了一组.NET基础类库中所有的类型都具有的方法, 如Tostring(), Equals(), Get Hash Code()等;

很多数值数据类型派生自System.ValueType类, 派生自ValueType的类行都会自动;

4,字符串解析数值

通过给定义文本生成相应的底层类型变量;既任意类型的 .Parse("xxx");

实例:

在System.Numberics.dll程序集中,创建的BigInteger变量接受一个大的字符串数值数据,此时,我们就需要使用静态的Parse()方法转换成BigInteger变量;

5,判断相等的方法

1,Object.ReferenceEquals(left, right);   

判断两者是否是相同的引用,值类型对象判断永远false,两个null比较永远是true;

2,Object.Equals(left, right);

值类型比较内容;引用类型比较引用地址;

3,双等号 ==

值类型比较内容;引用类型比较引用地址;而字符串的比较可以看作是值类型(c#的string在栈中);

6,基元类型溢出checked和unchecked

checked:
对基元类型执行的许多算术运算都可能造成溢出,必须使用checked来控制溢出的检查;

示例:

byte b = 100; b = checked((Byte)(b + 300));  //溢出错误,由于byte最大长度为255;
==>     checked { byte b = 100; b += 200; //checked语句块中,可以直接使用+=操作符,编译器会将把转换成byte,前提是200必须在byte范围内 }
结合try catch就会提示运行时异常:System.OverflowException; 

unckecked:
如果某段代码中的数据丢失是可以接受的,那么使用unckecked去禁止抛出溢出异常; 

7,隐式类型变量的限制,var的限制

var myData; //错误,必须分配值;
var myInt; myInt = 0;    //错误,必须声明时分配值;
var myObj = null;     //错误,不能分配null作为初始值;
private var myInt = 10;    //错误,不能用于字段数据;
public var MyMethod(var x, var y){}     //错误,不能用于返回值或参数类型;
不同于Javascript中的动态类型(变量的生命周期中可以保存不同类型), c#隐式类型的本地变量是强类型数据,但是可以使用dynamic关键字实现动态类型;

用处:LINQ查询时,返回的时一种底层LINQ数据类型,使用var 接收查询的结果时几乎不用关注返回值的基础类型;

上一篇 下一篇

猜你喜欢

热点阅读