C#基础(1)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#基础(1),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1586字,纯文字阅读大概需要3分钟。
内容图文
![C#基础(1)](/upload/InfoBanner/zyjiaocheng/1142/ae823687e31c4ce79d7ce23567e7da23.jpg)
1.byte,int等等,这些简单类型实际上是BCL基类库类型的别名。
2.所有值类型都隐式地继承自System.ValueType类型(System.ValueType本身是一个类类型)。之所以说是“隐式地”,是因为在C#代码中,是看不见这个继承关系的,这个关系只有通过MSIL代码才可以看到,System.ValueType类型和所有的引用类型都继承自System.Object基类,
备注: 在C#多态中,不支持多重继承的,
类型 | 继承 | 再继承 |
int,struct,enum… | System.ValueType | System.Object |
引用类型 | 可以继承其他类 | System.Object |
由于不存在多重继承,那么值类型(结构等等)本身就继承了System.ssValueType,就不能继承其他类。
3.值类型与引用类型在 线程堆栈(栈是一种后进先出的数据结构)以及堆(堆是用于为引用类型的实例(对象)分配空间的内存区域,在堆上创建一个对象,会将对象地址传给栈上的变量,反过来叫变量指向对象,或者变量引用此对象) 的存放
值类型(变量本身包含了值类型的全部字段),会分配在线程堆栈上;注意一个细节:只有对变量进行操作,才会进行入栈;
4. .NET的一个约束:所有的元素使用前都必须初始化。
// Demo1 int i; Console.WriteLine(i);
// Demo2 public class Person { int ID{get;set;} string Name{get;set;} List<Book> Books {get;set;} //定义某个集合作为属性 }
Demo1:error 使用未赋值的变量
Demo2: 在多次使用Person类中,vs会经常提示警告:会出现“NullReferenceException异常”,当然这个异常也分使用场景,但非常希望,你能在Person类的构造函数中,实例化Books,this.Books = new List<Book>();这是个好习惯。
5.结构类型 struct
// 定义 public struct ValPoint { public int x; public void Blank() } // 调用 ValPoint vPoint1; vPoint1.Blank(); Console.WriteLine(vPoint);
在调用中报错,“使用了未赋值的局部变量”,int x,没赋值。
假设:
// 定义 3 个局部变量 public struct ValPoint { public int x; public int y; public int z; public void Blank() }
那么,我们必须初始化 x,y,z 。还是那个原则:.NET的所有元素,都必须先初始化。
解决这个问题可以通过这样一种方式:编译器隐式地位结构类型创建无参数的构造函数。这个构造函数中会对结构成员进行初始化;所有值类型成员被赋予0或者相当于0的值,所有引用类型被赋予null值;
// 调用 ValPoint vPoint1 = new ValPoint()
new的作用? 实例化?分配内存? 不是,注意:结构struct 变量本身就代表一个实例。 这里仅仅调用当前结构的默认构造函数,初始化结构变量中的所有字段。
// 直接调用 Console.WriteLine((new ValPoint).x);
.x 前面是个对象,这里会创建一个临时变量,没有名称,然后再使用结构的默认构造函数对临时变量进行初始化。
原文:http://www.cnblogs.com/zychengzhiit1/p/4811978.html
内容总结
以上是互联网集市为您收集整理的C#基础(1)全部内容,希望文章能够帮你解决C#基础(1)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。