C#入门笔记

8.28开始看刘铁猛的视频,到9.22看完。大概觉得自己入门了,对OOP也有一定了解了,稍微写点笔记,当复习了。

类型与变量

数据类型

数据类型[1]是数据在内存中存储时的“型号”。不同的数据类型有不同的“大小”——在内存中占用的空间,想知道某个数据类型在内存中占的大小,可以用函数sizeof去查看。C#是强类型语言,某个变量一旦被定义,如果不经过强制类型转换,它的类型永远不会改变。下面用一段代码证明:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace SomeNotes
{
class Program
{
static void Main(string[] args)
{
int a = 100;
double b = 200;
string c = "Jay";
Console.WriteLine(a.GetType());
Console.WriteLine(b.GetType());
Console.WriteLine(c.GetType());
}
}
}

结果为: System.Int32

System.Double

System.String

下面试着进行强制类型转换:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace SomeNotes
{
class Program
{
static void Main(string[] args)
{
double a = 12.34;
int b = (int)a;
decimal c = (decimal)a;
Console.WriteLine(b);
Console.WriteLine(c);
}
}
}

这个例子里面double类型的 a 被强制转换成了int类型,然后再把值传给 b ,输出结果为12,小数点后的数字丢失。

各个类型的精度范围不一样,如果用精度更精细的数据类型转换成精度不高的数据类型,是一定会发生数据丢失的。但是精度低的数据类型转换为精度高的数据类型则没有影响。

比如double类型的 a 被强制类型转换成了decimal类型,然后再把值传给 c ,输出结果为12.34,完全没有影响。

在C#中,有五大数据类型:类(class)、结构体(structure)、枚举(enumeration)、接口(interface)、委托(delegate)。其中类、接口、委托是引用类型(reference type),结构体和枚举是值类型(value type)。

变量

其实刚刚的两个例子当中就出现变量了,就是 a、b、c。变量实际上表示了存储位置,并且每个变量都有一个类型,以决定什么样的值能够存入变量。变量一共有7种:静态变量、实例变量、数组元素、值参数、引用参数、输出参数、局部变量。其实狭义上的变量指的就是局部变量,因为其他种类的变量都有自己的约定的名称,简单的说,局部变量就是方法体(函数体)里面声明的变量。

* 值类型的变量没有实例,所谓的“实例”与变量合二为一

* 引用类型的变量里储存的数据是对象的内存地址

在C#中变量有它的默认值,比如bool类型的默认值是falsedouble类型的默认值是 0.0d 等等,这些建议百度自己搜。

变量还有常量类型,指的是值不可被改变的变量。constreadonly的不同之处在于,const在声明的时候就要赋值,readonly可以先声明,后续赋值;相同之处在于,两者一旦被赋值,就不可被更改。

摸了,有空再更新


  1. Data Type: A data type is a homogeneous collection of values, effectively presented, equippde with a set of operations which manipulate these values.

最新文章

  1. Contains Duplicate III 下标范围<=k 值范围<=t
  2. 赴美工作常识(Part 4 - 面试)
  3. LeetCode 441 Arranging Coins
  4. swoole和erlang通信测试
  5. Lua Require函数
  6. C#导出带有格式的Excel(列宽,合并单元格,显示边框线,加背景颜色等)
  7. 蒙特罗卡π算法(C++语言描述)
  8. [OC Foundation框架 - 9] NSMutableArray
  9. php使用domdocument读取xml文件
  10. 在VS里面查看lua堆栈
  11. java中int,float,long,double取值范围,内存泄露
  12. CNN网络介绍与实践:王者荣耀英雄图片识别
  13. linux web服务器及LAMP动态网站平台搭建
  14. C# 用户控件之温度计
  15. python基础一 ------"有序"的字典
  16. AWS学习笔记
  17. JAVA学习(二) String使用equals方法和==分别比较的是什么?(转)
  18. Python提取MD5
  19. SpringMVC系列(九)自定义视图、重定向、转发
  20. 手把手教你开发jquery插件(三)

热门文章

  1. 简明python教程--读后感--推荐给python新手
  2. Qt 让Label显示图片并把图片居中
  3. 力扣Leetcode 50. 实现Pow(x, n)
  4. python安装wordcloud库报错
  5. 透过UIRoot深入理解NGUI提供的屏幕适配方案
  6. 一文吃透redis持久化,妈妈再也不担心我面试过不了!
  7. java初探(1)之登录再探
  8. 《神经网络的梯度推导与代码验证》之vanilla RNN前向和反向传播的代码验证
  9. Mysql业务设计(逻辑设计)
  10. Thymeleaf 中如何实现including