zoukankan      html  css  js  c++  java
  • C# 基础知识系列之 C#编程基础

    C#的基本数据类型、变量、常量、表达式、程序流程控制语句以及数组等概念是C#程序设计的基础,掌握这些基本知识是编写正确程序的前提。
    1.基本类型
    C#语言是一种强类型语言,在程序中用到的变量、表达式和数值等都必须有类型,编译器检查所有数据类型操作的合法性,非法数据类型操作不会被编译。这种特点保证了变量中存储的数据的安全性。
    Microsoft.NET构架核心是一个公用类型系统(CTS, CommonType System),它定义了在不同程序语言语法中的一系列公共类型。C#是面向对象的语言,它把任何事物都看成对象,所有的对象都隐式地从CTS的基类System.Object派生而来。数据类型分成两大类:一个是值类型(Value Types),一个是引用类型(Reference Types)。

       值类型

      所谓值类型就是一个包含实际数据的量。即当定义一个值类型的变量时,C#会根据它所声明的类型,以堆栈方式分配一块大小相适应的存储区域给这个变量,随后对这个变量的读或写操作就直接在这块内存区域进行。
        例如:
        int  iNum=10;     // 分配一个32位内存区域给变量iNum,并将10放入该内存区域
        iNum=iNum+10;   // 从变量iNum中取出值,加上10,再将计算结果赋给iNum。

      枚举类型
    枚举类型是一组命名的常量集合,其中每一个元素称为枚举成员列表。除了chart之外的所有整数类型都可以作为枚举类型的基本类型,枚举类型的声明形式如下:
    enum  name  [ : base_type ] { enumerator_list }
    其中:
    enum——声明枚举类型的关键字
    name——所声明的枚举类型的变量名
    base_type——除了char之外的整数类型,缺省约定为int类型
    enumerator_list——枚举成员列表,成员之间用逗号分隔,在声明时,可以对成员进行赋值(缺省时,第一个成员的值是0),在此之后的成员值按前面的成员值依次加1。
    例如:
    enum color1 { red, green, blue }     // red=0, green=1, blue=2
        enum color2 : byte { red, green=2, blue } // red=0, green=2, blue=3
        枚举类型在声明的时候就创建一个值类型的枚举变量,以后就可直接使用枚举成员名。
    例如:color1.red,color1.green等。
     结构类型

    2.引用类型

    引用类型包括类(class)、接口(interface)、数组、委托(delegate)、object和string。其中object和string是两个比较特殊的类型。object是C#中所有类型(包括所有的值类型和引用类型)根类。string类型是一个从object类直接继承的密封类型(不能再被继承),其实例表示Unicode字符串。
         一个引用类型的变量不存储它们所代表的实际数据,而是存储实际数据的引用。引用类型分两步创建:首先在堆栈上创建一个引用变量,然后在堆上创建对象本身,再把这个内存的句柄(也是内存的首地址)赋给引用变量。
    例如:
    string s1, s2;
    s1="ABCD"; s2 = s1;
    其中,s1,s2是指向字符串的引用变量,s1的值是字符串“ABCD”存放在内存的地址,这就是对字符串的引用,两个引用型变量之间的赋值,使得s2、s1都是对“ABCD”的引用。

    3.值类型与引用类型的关系

    以把值类型与引用类型的值赋给object类型变量,C#用“装箱”和“拆箱”来实现值类型与引用类型之间的转换。
    装箱就是将值类型包装成引用类型的处理过程。当一个值类型被要求转换成一个object对象时,装箱操作自动进行,它首先创建一个对象实例,然后把值类型的值复制到这个对象实例,最后由object对象引用这个对象实例。
    例如:
    using System;
    class Demo

     public static void Main ( )
        {   int x = 123;
           object obj1=x;        // 装箱操作
            x = x+100;           // 改变x的值,obj1的值并不会随之改变
           Console.WriteLine (" x= {0}" , x );       // x=223
           Console.WriteLine (" obj1= {0}" , obj1 );     // obj1=123
        }
    }

  • 相关阅读:
    python之天气爬虫
    python之一异常问题(TypeError: object of type 'NoneType' has no len())
    数据分析之漏斗分析
    python之pytest_addoption : 命令行参数
    python之一driver.find_element_by_xpath与driver.find_element(by, value)的区别
    python之正则表达式从列表中取值报类型错误
    python之append和extend的区别
    pyton之字典的使用
    python之pd.DataFrame函数使用
    python之正则表达式 re.findall 用法
  • 原文地址:https://www.cnblogs.com/zhangxin1989/p/2800391.html
Copyright © 2011-2022 走看看