c#数据类型/变量/常量/计算机数据存储(进制之间的相互转化)

本文详细介绍了C#中的数据类型,包括值类型(如结构体、枚举、可空类型)和引用类型(如类、数组、接口、委托),并探讨了两者之间的区别。接着,文章讲解了类型转换的不同方式,如隐式和显式转换,并提供了转换实例。此外,还详细阐述了变量的声明、初始化、作用域和命名规则。常量部分涉及了整数、浮点、字符和字符串常量。最后,文章深入探讨了计算机数据存储,包括不同进制转换算法、原码、反码和补码的概念。
摘要由CSDN通过智能技术生成

一c#数据类型
注:
**值类型:**值直接存储在堆栈中(存储空间小,调用速度快);
**引用类型:**值存储在堆中(存储空间大,调用速度慢)
1.值类型
a. 值类型变量可以直接分配给一个值.它们是从类System.ValueType中派生的.
b.值类型直接存储其值.
c.值类型的实例通常是在线程栈上分配的(静态分配),但是在某些情形下可以存储在堆中.
d.值类型总是分配在它声明的地方:作为字段时,跟随其所属的变量(实例)存储;作为局部变量时,存储在栈上.栈的内存是自动释放的.
e.值类型在内存管理方面具有更好的效率,并且不支持多态, 适合用做存储数据的载体.
f.C#的值类型包括:结构体(数值类型、bool 型、用户定义 的结构体),枚举,可空类型.
在这里插入图片描述
2.引用类型
a.引用类型不包含存储在变量中的实际数据,但它们包含对 变量的引用.继承自System.Object 类.
b.引用类型存储对其值的引用.它们指的是一个内存位置.使用多个变量时,引用类型可以指向一个内存位置.如果内存位置的数据是由一个变量改变的,其他变量会自动反映这种值的变化.
c.引用类型当声明一个类时,只在栈中分配一小片内存用于容纳一个地址,而此时并没有为其分配堆上的内存空间.当使用new 创建一个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的小片空间中.
d.引用类型的对象总是在进程堆中分配(动态分配).
e.引用类型在栈中存储一个引用,其实际的存储位置位于托管堆.简称引用类型部署在托管推上. (堆内存是.NET 中会 由 GC 来自动释放).
f.引用类型可以派生出新的类型,而值类型不能,因为所有的值类型都是密封(seal).
g.引用类型可以包含 null 值,值类型不能(可空类型功能允 许将 null 赋给值类型,如 int? a = null; ).
h.引用类型变量的赋值只复制对对象的引用,而不复制对象 本身.而将一个值类型变量赋给另一个值类型变量时,将复制包含的值.
i. C#的引用类型包括:
 内置的 引用类型有:object、dynamic 和 string。
①对象(Object)类型是C#通用类型系统(Common Type System - CTS)中所有数据类型的终极类.ObjectSystem.Object 类的别名.所以对象 (Object)类型可以被分配任何其他类型(值类型、 引用类型、预定义类型或用户自定义类型)的值. 但是,在分配值之前,需要先进行类型转换.
② 动态(Dynamic)类型您可以存储任何类型的值在动 态数据类型变量中.这些变量的类型检查是在运行时发生的.动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型 变量的类型检查是在运行时发生的.
③字符串(String)类型允许给变量分配任何字符串值.字符串(String)类型是 System.String 类的别名它是从对象(Object)类型派生的.字符串(String)类型的值可以通过两种形式进行分配: 引号和 @引号.
 用户自定义引用类型有:class、数组、interface 或 delegate.
3.类型的转换
数据类型转换的方式:
(1):隐式类型转换
这些转换是C#默认的以安全方式进行的转换
在这里插入图片描述
(2):显式类型转换
这些转换是通过用户使用预定义的函数显式完成的。显式转换需要强制转换运算符。
Convert对象完成数据类型转换:
在这里插入图片描述
(3):int.Parse()方法
该方法只能将string类型数字字符串强制转换为int类型
(4).(char)Num
整数前使用(char)将Num当成十进制ASCII码转成其对应的字符
(xxx)NNN:如果可以的话,将NNN类型强制转换为xxx类型
(5).XXX.ToString()方法
ToString方法是每个对象基本上都具有的一个方法,其作用是将这个对象直接转成string类型
案例1:计算器
在这里插入图片描述

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace form_01
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //设置在comboBox1中不能输入内容
            comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
        }

        private void button1_Click(object sender, Event
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值