zoukankan      html  css  js  c++  java
  • C#类型与变量

    C#类型与变量

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

    类型与变量

    数据类型

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

    using System;
    using System.Collections.Generic;
    
    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;
    
    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. ↩︎

  • 相关阅读:
    eslint 的 env 配置是干嘛使的?
    cookie httpOnly 打勾
    如何定制 antd 的样式(theme)
    剑指 Offer 66. 构建乘积数组
    剑指 Offer 65. 不用加减乘除做加法
    剑指 Offer 62. 圆圈中最后剩下的数字
    剑指 Offer 61. 扑克牌中的顺子
    剑指 Offer 59
    剑指 Offer 58
    剑指 Offer 58
  • 原文地址:https://www.cnblogs.com/Jay-Auditore/p/13723582.html
Copyright © 2011-2022 走看看