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. ↩︎

  • 相关阅读:
    IO模型(一)
    协程(效率最快、重点)--初识协程、gevent模块、协程爬虫、协程socket(一)
    servlet工作原理解析
    servlet:servletconfig对象和它在开发过程中的应用场景
    servlet:线程安全问题
    servlet:启动的时机
    servlet:第一个demo
    安装myeclipse的一些配置
    同时安装32和64位的jdk
    fiddler:网络限速
  • 原文地址:https://www.cnblogs.com/Jay-Auditore/p/13723582.html
Copyright © 2011-2022 走看看