C#零基础学习笔记001-变量与常量

本文详细介绍了C#编程中变量和常量的概念,包括预定义数据类型、值类型(如int、float)与引用类型(如string、object),以及如何声明、命名和转换数据类型,以及常量的使用和不同类型的表示方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

0. 开发环境

0.1 Visual Studio2017

1. 变量和常量

1.1 数据类型

1.2 变量

1.3 数据类型转换

1.4 常量


0. 开发环境

0.1 Visual Studio2017

        - 新建项目:选择 Visual C#,会后选择:控制台应用程序,修改名称、项目位置,点击确定;

        - 调试运行:ctr + F5键;

1. 变量和常量

1.1 数据类型

        C#有15个预定义类型:

      13个值类型;

           2个引用类型(string 和 object)

  自定义类型中:

    值类型:struct(结构)、enum(枚举)

    引用类型:Class(类)

1.1.1 值类型

       bool:逻辑值(真或假),取值:true,false;

  sbyte:8位有符号整数类型,取值:-128~127;

  byte:8位无符号整数类型,取值:0~255;

  short:16位有符号整数类型,取值:-32768~32767;

  ushort:16位无符号整数类型,取值:0~65535;

  int:32位有符号整数类型,取值:-2147483648~2147483647;

  uint:32位无符号整数类型,取值:0~4294967295;

       long:64位有符号整数类型,取值:-9223372036854775808~9223372036854775807;

  ulong:64位无符号整数类型,取值:0~18446744073709551615;

  char:16位字符类型,取值:所有的Unicode编码字符;

  float:32位单精度浮点类型(有小数点),取值:大约7个有效十进制数位;

  double:64位双精度浮点类型(有小数点),取值:大约15~16个有效十进制数位;

      decimal:128位高精度十进制数类型,大约28~29个有效十进制数位;

 

       布尔(bool):值只能是:true,或者false;

  字符(char):

    char类型的字面量用单引号括起来,例如 char achar = 'a';

    char还可以用4位十六进制的Unicode值,例如 char achar = '\u0041';(等同于上面的 char achar = 'a')

1.1.2 引用类型

         引用类型

    object:根类型,C#中所有类型都派生自本类;

    string:表示Unicode字符串;

              引用类型包括 class(类)、interface(接口)、数组、delegate(委托)、object和 string 。object是所有类型(引用类型)的根类。string类型是一个从object类型直接继承的密封类型(不能再被继承),其实例表示Unicode字符串。

    一个引用类型的变量不存储它们所代表的实际数据,而是存储实际数据的引用。

    引用类型分两步创建:首先在堆栈上创建一个引用变量,然后再堆上创建对象本身A,再把这个内存(A)的句柄(也是内存的首地址)赋给引用变量。

    例如:

      string s1, s2;

      s1 = "C#";

      s2 = s1;

      其中,s1, s2是指向字符串"C#"的引用变量,s1, s2的值 是字符串“C#“存放在内存中的 地址,而不是值 ”C#“,是存储的一个 地址值。

    1.Object类型

      object类型就是最终的父类型:

      可以使用object引用绑定任何子类型的对象;

    2.字符串类型

      string 类型表示零或更多Unicode字符组成的序列。string 是 .NET Framework 中String 的别名。

1.2 变量

        变量:随着程序的运行而改变其表示的值。

  申明变量就是在内存中指定一个存储目标数据的区域。

1.2.0 变量的命名:

  标识符必须以 字母或者_(下滑线) 开头,后面跟字母、数字和下划线的组合。但C#是大小写敏感的语言,name、Name分别代表不同的标识符。另外,变量名不能与C#中的关键字相同,除非标识符是以@作为前缀的。

  例如:

    int x; // 合法

    float y1 = 0.0, y2 = 1.0, y3; // 合法,变量申明的同时可以设置初始数值

    string char; // 不合法,因为 char 是关键字

    string @char; // 合法

1.2.1 变量的声明

       变量用于存储特定数据类型的值。

  语法:

      访问修饰符 数据类型 变量名

 

1.2.2 Example: 变量的声明

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// 变量的声明

namespace Lesson_4_1
{
    class Program
    {
        static void Main(string[] args)
        {
            // 变量定义的格式:数据类型 变量名 = 赋值;
            int intNum = 12;
            float fltScore = 89.5f;
        }
    }
}

 

1.2.3 选择合适的变量的数据类型

  案例说明:

    a. 定义一本书的售价为20.12元;

    b. 一辆小汽车的乘坐人数为 5 人;

    c. 输出信息为 “大家来学C#”;

    d. 表示灯泡的开和关的状态;

1.2.4 变量名的命名规范:

  1.为变量命名时要遵循 C# 语言的命名规范;

  2.变量名只能由 字母、数字和下划线组成,而不能包含空格、标点符号、运算符等其他如@等符号;

  3.变量名不能与C#中的关键字名称相同;

 

  思考一下4个变量名中,合法的变量名是:

    1.&adw

    2.Good byte

    3._list

    4.jx@shi.com

 

    答案:3

1.2.5 变量命名规则

  1.2.5.1 匈牙利命名规则

    在变量和函数名中加入前缀以增进人人们对程序的理解。例如所有的字符变量均以ch为前缀。如命名性别的变量:char chSex = '男'。

  1.2.5.2 Pascal命名规则

    将标识符的首字母和后面连接的每个单词的首字母都大写。如命名一个学生的年龄:int StudentAge = 20;

  1.2.5.3 驼峰命名规则

    是指混合使用大小写字母来改成变量和函数的名字。第一个单词以小写字母开始;第二个单词的首字母或每一个单词的首字母都采用大写字母,如命名一个学生的姓名,

1.2.6 变量命名建议

  1.变量名最好以小写字母开头;

  2.变量名应具有描述性质;

  3.在包含多个单词的变量名中,从第二个单词开始,每个单词都采用首字母大写的形式。

  例如:

    string strStudentName = "Li";        

              // str表示,string;之后的每个单词首字母大写 Studeng、Name;

    // 含义:string类型的学生名字的变量名  

 

1.2.7 Example: 变量的数据类型及命名规范

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// 变量的数据类型及命名规范

namespace Lesson_5_1
{
    class Program
    {
        static void Main(string[] args)
        {
            // 定义一本书的售价为20.12元
            float fltPrice = 20.12f;
            // 一辆小汽车的乘坐人数为 5 人
            int intMaxCount = 5;
            // 输出信息为 “大家来学C#”
            string strInfo = "大家来学C#";  // string 是引用类型
            // 表示灯泡的开和关的状态
            bool blLightState = true;  // true:灯泡是开启状态
        }
    }
}

1.3 数据类型转换

1.3.1 装箱

  装箱:将值类型包装成引用类型的处理过程。

  例如:将 int 类型的 123 转换成 object 类型。

  注意:装箱 可以 隐式转换, 拆箱 必须 显示的强制转换。

    int i = 10;

    object obj = i; // 装箱,隐式转换了

    int j = int(obj); // 拆箱,显示的强制转换

 

  1、首先从托管堆中为新生成的引用对象分配内存。

  2、然后将值类型的数据拷贝到刚刚分配的内存中。

  3、返回托管堆中新分配对象的地址。

  可以看出,进行一次装箱要进行 分配内存 和 拷贝数据 这两项比较影响性能的操作。

1.3.2 拆箱

  将引用类型,转换为值类型,需要进行拆箱操作(boxing);

 

1.3.3 Example: 数据类型的装箱

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// 数据类型的装箱

namespace Lesson_6_1
{
    class Program
    {
        static void Main(string[] args)
        {
            int intNum = 12;  // 值类型,它是在栈中存储
            // 类型转换:把值类型转换成引用类型
            // 装箱操作:把 值类型 转换成 引用类型,可以采取隐式转换
            object objName = (object)intNum;

            // 类型转换:引用类型转换成值类型
            // 拆箱操作:把 引用类型 转化成值类型,必须 显示转换
            object objA = 15;
            int ingGetObjA = (int)objA;
            int intGetObjA1 = Convert.ToInt32( objA );  // 强制类型的转换

            object objB = 12.3;
            float fltB = (float)objB;
            float fltB1 = Convert.ToSingle( objB );  // 把引用类型转化成单精度的浮点数据类

            object objC = 145.6;
            double dblC = (double)objC;
            double dblC1 = Convert.ToDouble( objC );  // 把引用类型转化成双精度的数据类型
        }
    }
}

1.4 常量

        常量用于在整个过程中将数据保持同一个值,通常可以分为 字面常量 和 符号常量。

    1.对于一个整数值,默认的类型就是能够保存它的最小整数类型,其类型可以分为 itn、uint、long 或 ulong。如果默认类型不是想要的类型,可以在常量后面加后缀(U 或 L)来明确指定其类型。

      在常量后面加 L 或 l(不区分大小写)表示唱整型。例如:

        32 // 这是一个 int 类型

        32L // 这时一个 long 类型

      在常量后面加 U 或 u(不区分大小写)表示无符号整数。例如:

        128U // 这是一个 uint 类型

        128UL // 这是一个 ulong 类型

      整型常量既可以采用十进制也可以采用十六进制,默认为十进制,在数值前面加0x(或0X)则表示十六进制,十六进制基数用0~9、A~F(或a~f),例如:

        0x20 // 十六进制数20,相当于十进制数32

 

    2.一般带小数点的数或用科学计数法表示的数都被认为是浮点数,它的数据类型默认为 double 类型,但也可以加后缀符表明三种不同的浮点格式数。

      在数字后面加F(f)表示 float 类型。

      在数字后面加D(d)表示 double 类型。

      在数字后面加M(m)表示是 decimal 类型。

    3.字符常量

      字符常量,简单地说,就是用单引号括起来的单个字符,如‘A’,它占16位,以无符号整型数的形式存储这个字符所对应的Unicode代码。这对于大多数图形字符是可行的,但是对一些非图形的控制字符(如回车符)则行不通,所以字符常量的表达有若干种形式。

      单引号括起的一个字符,如‘A’。

      十六进制的换码系列,以“\x”或“\X”开始。

      Unicode码表示形式,以“\U”或“\u”开始。

      显示转换整数字符代码,如 (char)66.

      字符转义系列,如下所示:

        \' 单引号

        \b 退格符

        \" 双引号

        \f 走纸换页符

        \\ 反斜线字符

        \n 换行符

 

1.4.1 Example: 常量的使用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// 常量的使用

namespace Lesson_7_1
{
    class Program
    {
        static void Main(string[] args)
        {
            /*
            // example_1
            float fltA = 16.8F;  // 在数值后面加上一个符号明确它的数据类型
            double dblA = 16.8;
            int intA = 0x10;
            long longA = 10L;
            uint uintA = 10u;
            Console.WriteLine( intA );  // 向屏幕输出数据,而这个数据就是括号里的数据
            */
 
            /*
            // example_2:转义
            char charA = '\'';
            Console.WriteLine( charA );
            string strInfo = "第一行,\n第二行";
            Console.WriteLine( strInfo );
            string strBookName = "这是一本\"C#编程的书籍\"";
            Console.WriteLine( strBookName );
            */
 
            // example_3: const
            // const关键字表示的是常量,也就是常量的值是无法改变的
            const double dblPi = 3.14;
            const int intConstA = 20;
            // intConstA = 30;
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

公众号:程序喵星人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值