chapter 2/3 C#核心、对象和类型

本文主要对比C#与C++的区别,并介绍C#的核心特性,如类型推断、值类型与引用类型、Main()方法规定、预编译指令等。在对象和类型部分,讨论了类的数据成员、构造函数、重载、属性、静态类以及只读和常量字段等概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关注的主要是C#与C++的不同点或者新增加的特性。

chapter 2  核心C#

1、初始化:方法的局部变量使用前必须初始化;类或者结构中的字段如果没有显式的初始化,默认构造函数会把字段初始化为标准的默认值(引用类型为空类型,数据类型为0)。

2、类型推断(type inference):关键字var。

3、局部变量的作用域冲突:同一方法中,循环里的局部变量不能隐藏方法中的同名局部变量(区别于C++)。

4、值类型和引用类型:值类型存储在栈中,引用类型存储在托管堆中(即堆中)。

5、decimal类型

6、预定义的引用类型:object/string;虽然string是一个引用类型,但当把字符串赋值时 ,在内存中会得到同一字符串的两个引用。

7、switch...case:禁止了所有case中失败的条件。

8、foreach(var temp in arrayOfInts):与for相比,省略了求集合的范围,但foreach循环不能改变集合中各项的值。

9、Main():方法必须是类或者结构的静态方法,返回类型必须是int或void。

10、预编译:#warning/#error ,#region/#endregion。

11、标识符:可以用Unicode字符,如:int 学生人数 = 48。

12、命名约定:Pascal大小写形式/camel大小写形式。


chapter 3  对象和类型

1、类的数据成员包括:字段,常量和事件成员;函数成员包括:方法,属性,构造函数,finalizer,运算符,索引器。

2、给方法传递参数:在C#中,默认的传参方式是值传递,利用ref关键字来指定按引用传递。对于复杂的数据结构,按引用传递的效率更高。  

      out关键字:传递的参数可以不初始化且 该变量通过引用传递。

3、重载:两个方法不能仅根据参数是声明为ref还是out来实现重载。

4、属性:一对方法或一对方法,在用户角度,它是一个字段。只读/只写/自动实现的属性。

5、构造函数:默认构造函数把没有初始化的字段初始化为标准的默认值(引用类型为空引用,值类型为0,bool为false),区别:C++默认构造函数对内置类型并不初始化。

      静态构造函数:初始化静态字段,静态构造函数只能访问类的静态成员,不能访问类的实例成员;静态构造函数在加载类时执行,实例构造函数在创建实例时执行。当然,实例函数可以访问静态字段。

      在构造函数中调用其他构造函数:利用this和base关键值。

      静态类:如果类只包含静态的方法和属性,类就是静态的。在功能上于私有静态构造函数创建的类相同,不能创建静态类的实例。

6、只读字段:readonly,在运行时初始化;const,编译时初始化。

7、结构:不支持继承;总是提供一个无参的默认构造函数,并禁止定义无参数数的构造函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值