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.

C#类型与变量的更多相关文章

  1. C# 异常:从作用域“”引用了“FiasHostApp.Entity.DBEntity.FIAS_RM_v1.ITraNetMgrUnitBaseInfoRecord”类型的变量“w”,但该变量未定义

    C# 异常:从作用域“”引用了“FiasHostApp.Entity.DBEntity.FIAS_RM_v1.ITraNetMgrUnitBaseInfoRecord”类型的变量“w”,但该变量未定义 ...

  2. JavaScript学习笔记-基础语法、类型、变量

    基础语法.类型.变量   非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或 ...

  3. POJO类中的任何布尔类型的变量,都不要加is

    POJO类中的任何布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误. 定义为基本数据类型boolean isSuccess:的属性,它的方法也是isSuccess(),HSF框架在反向解 ...

  4. 多动手试试,其实List类型的变量在页面上取到的值可以直接赋值给一个js的Array数组变量

    多动手试试,其实List类型的变量在页面上取到的值可以直接赋值给一个js的Array数组变量,并且数组变量可以直接取到每一个元素var array1 = '<%=yearList =>'; ...

  5. C#的类型、变量和值

    大学学了C#,工作也是使用C#,虽然在日常的开发中没什么大的问题,但个人觉得在C#的理解还不是很清晰,所以决定花一定的时间来理一理学过的知识,顺便革新下脑袋里的知识,因为坑爹的学校在教.net的时候, ...

  6. C#中隐式类型本地变量var

    在新接触的项目中,看到很多声明变量时用var.只记得在javascript中声明变量用var.今天在家里看C#和.Net高级编程,看到隐式变量这一块,就总结一下C# 中隐式变量var的用法. 1.C# ...

  7. javascript !!的作用是把一个其他类型的变量转成的bool类型

    !!的作用是把一个其他类型的变量转成的bool类型

  8. C# 类型和变量

    C# 中的类型有两种:值类型 (value type) 和引用类型 (reference type).值类型的变量直接包含它们的数据,而引用类型的变量存储对它们的数据的引用,后者称为对象.对于引用类型 ...

  9. .Net程序员学用Oracle系列(26):PLSQL 之类型、变量和结构

    1.类型 1.1.属性类型 1.2.记录类型 2.变量 2.1.变量类型 2.2.变量定义 2.3.变量赋值 3.结构 3.1.顺序结构 3.2.选择结构 3.3.循环结构 4.总结 1.类型 在&l ...

  10. JavaScript总体的介绍【JavaScript介绍、定义函数方式、对象类型、变量类型】

    什么是JavaScript? 我们可以从几个方面去说JavaScript是什么: 基于对象 javaScript中内置了许多对象供我们使用[String.Date.Array]等等 javaScrip ...

随机推荐

  1. JavaFX桌面应用-SpringBoot + JavaFX

    SpringBoot对于Java程序员来说可以是一个福音,它让程序员在开发的时候,大大简化了各种spring的xml配置. 那么在JavaFX项目使用SpringBoot会是怎么样的体验呢? 这次使用 ...

  2. JacaScript实现call apply bind函数

    一.call函数 模拟实现第一步:整体思路 Function.prototype.call2=function(context){ context.fn=this; //1.将函数(谁调用 即this ...

  3. 看视频常见的 720p、1080p、4k,这些分辨率到底包含了什么

    从早期的420p,到后来的720p,到现在的非1080p不看.视频的清晰度飞快提升,但是在看到色彩越来越丰富清晰度越来越高的画面时,你有关注过他们的到底是怎么做到的么?我们一起来了解一下吧. 想必大家 ...

  4. “路由大当家”OSPF的小秘密

    引入 OPSF是应用最广的路由协议,基本上,所有的IGP用到的都是OSPF,下面我们看看它的“小秘密” 优点: •没有跳数限制 •使用组播更新变化的路由和网络信息 •路由收敛速度较快 •以开销(Cos ...

  5. Kafka入门(3):Sarama生产者是如何工作的

    摘要 在这一篇的文章中,我将从Sarama的同步生产者和异步生产者怎么创建开始讲起,然后我将向你介绍生产者中的各个参数是什么,怎么使用. 然后我将从创建生产者的代码开始,按照代码的调用流程慢慢深入,直 ...

  6. 认证授权:学习OIDC

    前言 上一篇文章介绍了OAuth2.0协议的相关内容,知道OAuth2.0是一个授权协议,无法提供完善的身份认证功能.那么什么来解决身份认证功能呢?——OIDC是一个不错的解决方案.接下来进一步来了解 ...

  7. Nodejs模块:querystring

    /** * @description querystring模块 */ const querystring = require('querystring'); const url = 'https:/ ...

  8. istio部署

    Istio的部署介绍 目录 Istio的部署介绍 部署模型 集群模式 单集群 多集群 网络模型 单网络 多网络 控制面模型 身份和信任模型 网格中的信任 网格之间的信任 网格模型 单网格 多网格 租户 ...

  9. Java使用POI的SXSSFWorkbook与HSSFWorkbook导出复杂表头

    一.HSSFWorkbook与SXSSFWorkbook的区别: HSSFWorkbook是对Excel2003以前的版本进行操作的,即后缀名为.xls SXSSFWorkbook时对Excel200 ...

  10. Java网络通信 —— 序列化问题

    Java序列化的目的主要有两个: 1.网络传输 2.对象持久化 当选行远程跨迸程服务调用时,需要把被传输的Java对象编码为字节数组或者ByteBuffer对象.而当远程服务读取到ByteBuffer ...