c#数据类型

news2024/10/7 20:36:30

常量

/*
 常量是固定的量,在运行过程中不可以改变的量
const 来修饰不能改变的量
 */
// public private protected internal 是访问修饰符

using System.Security.Cryptography.X509Certificates;

namespace ConsoleApp1
{
    internal class Program
    {
        public const int a = 15; //定义一个整型常量
        public const char b= 'A'; //定义一个字符常量
        public const string c = "hello world"; //定义一个字符串常量
        static void Main(string[] args)
        {
            
            Console.WriteLine("Hello world  \a");//\a表示响铃
            Console.WriteLine(a);
            Console.WriteLine(b);
            Console.WriteLine(c);
            Console.WriteLine(@"你好啊\a"); //@带的字符串会取消字符串中的转义
            
        }
    }
}

变量

/*
 变量声明是指程序运行前,编译器告诉程序变量的名称、类型、长度等
变量初始化提高了c#安全性,调用未初始化的变量会当成错误
 */

namespace ConsoleApp2
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int a = 10;
            int b = 20;
            int c = a + b;  //定义三个变量
            Console.WriteLine("a:{0},b:{1},c:{2}",a,b,c);
            int num=Convert.ToInt32(Console.ReadLine());//从键盘读取的数字是字符串类型的,使用强制类型转换
            Console.WriteLine("num:{0}",num);
        }
    }
}

变量类型

值类型

/*
值类型:可以直接存储数据
引用类型:存储的是数据的引用,这里跟c语言中的指针类型不一样,因为指针类型和引用类型存储的区域不一样,引用类型存储在堆上
 

值类型:派生system.ValueType,值类型不能包含Null
 
 */

namespace ConsoleApp3
{
    internal class Program
    {
        static void Main(string[] args)
        {
            double a = 3.1415926;
            Console.WriteLine(a);
            float b = Convert.ToInt16(a); //double强制转换为float类型
            Console.WriteLine(b);
            bool c=false;
            Console.WriteLine(c);
            int d=Convert.ToInt32(c);//将bool类型直接转换为int类型
            Console.WriteLine(d);
            Console.WriteLine("请输入一个数字,我会判断是偶数还是奇数");
            int e =Convert.ToInt32(Console.ReadLine()); //注意这里使用ReadLine,Read输入的是一个acsii值
            if (e%2==0)
                {
                Console.WriteLine("{0}是一个偶数", e);
            }
            else
            {
                Console.WriteLine("{0}是一个奇数", e);
            }
        }
    }
}

引用类型

/*
引用类型:不直接存储变量的值,而是存储数据的地址
必须使用new 来创建引用类型的变量
引用类型是由垃圾回收机制来管理的
引用类型在未被赋值前都是null
多个引用类型都可以引用同一对象,对一个变量执行的操作会影响另一个变量
 */

namespace ConsoleApp4
{
    internal class Program
    {
        class A 
        {
            public int num = 0; //声明一个共有类型的变量
        }
        static void Main(string[] args)
        {

            int a = 0;  
            int b = a;
            b = 100;
            Console.WriteLine("a={0},b={1}",a,b); //a,b都是值类型,b改变并没有改变a的值
            

            A n1=new A(); //使用new创建一个引用对象
            A n2=n1; //n2都指向同一个对象
            n2.num = 100;
            Console.WriteLine("n1.num={0},n2.num={1}", n1.num, n2.num);



        }


    }

}

/*
 C#里面把数据类型分为两大类,分别为值类型和引用类型。
值类型包括基本数据类型(int、char、double等)、结构和枚举。
引用类型包括接口、数组、类等

值类型会以栈的方式分配一块相适应的存储区域,对变量的读取直接就在该内存区域直接进行

引用类型不存储数据,而是存储数据的引用。引用类型分两步创建,首先在栈上创建引用变量,然后在堆上创建对象本身,然后再把堆上的首地址赋给引用变量

 */

枚举类型

/*
 枚举类型:enum关键字声明
 */

namespace ConsoleApp1
{
    enum days { sun,mon,tue,wed,thu,fri,sat}

    internal class Program
    {
        static void Main(string[] args)
        {
            int start =(int)days.sun;
            Console.WriteLine("mon{0}",start);

            for(int i=0;i<5;i++) 
            {
                Console.WriteLine("hello world");//打印五次hello world
            }
        }
    }
}

数据类型

在C#中有两种基本类型,分别是值类型和引用类型。而值类型还可以细分为内置值类型、结构和枚举;引用类型可以细分为类类型、接口以及委托

namespace ConsoleApp2
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //sizeof(type)可以产生以字节为单位的存储对象或类型的存储空间大小

            Console.WriteLine("size of byte :{0}", sizeof(byte));
            Console.WriteLine("size of int: {0}", sizeof(int));


            //引用类型是system.object,所有类型都是继承system.object.所以任何类型的值都可以赋值给object类型的变量
            object age;
            age = 10;  //装箱操作,10是值类型,在栈上,age是object,在堆上
                       //Console.WriteLine("age:{}", age);        //这里不能直接输出object

            int age1 = (int)age;//拆箱
            string dt = DateTime.Now.ToString();
            Console.WriteLine("当前时间:{0}",dt);
            Console.WriteLine("当前时间{0}", DateTime.Now.ToString("d"));

            Console.WriteLine("全局唯一标识符:{0}",Guid.NewGuid().ToString());

            //打印类型
            string a = typeof(string).ToString();
            Console.WriteLine("{0}", a);
            Console.WriteLine("{0}", typeof(char)); //Console.write会自动转换类型为字符串


        }
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1191116.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

科技云报道:数智化升级,如何跨越数字世界与实体产业的鸿沟?

科技云报道原创。 数智化是当下商业环境下最大的确定性。 2022年&#xff0c;中国数字经济规模达50.2万亿元&#xff0c;占国内生产总值比重提升至41.5%&#xff0c;数字经济成为推动经济发展的重要引擎。从小型创业公司到跨国巨头&#xff0c;数字化转型在企业发展历程中彰显…

javaSE学习笔记(二)数组,类,对象,成员变量,匿名对象,构造方法,static,final,封装,继承,多态

目录 三、面向对象 1.概述 面向过程与面向对象 面向对象编程特点 面向对象三个基本特征 2.数组 数组定义格式 数组的初始化 动态初始化 静态初始化 数组的内存分配 Java中的内存分配 数组的内存分配 数组的角标 数组的基本操作 二维数组&#xff08;实际开发几乎…

maven 下载和安装

点击进入Maven下载网址 Maven – Download Apache Maven Maven详细下载列表 Index of /dist/maven/maven-3 本地仓库配置文件 配置环境变量 idea编辑器配置 maven Javajdk配置 字节码版本是否11

yolov5 通过视频进行目标检测

打开yolov5-master文件夹&#xff0c;可以看到一个名为data的文件夹&#xff0c;在data中创建一个新的文件夹&#xff0c;命名为videos。 打开yolov5-master中的detect.py可以看到一行代码&#xff08;大概在245行左右&#xff09;为 parser.add_argument(--source, typestr,…

POI.5.2.4常用操作-数据导入导出常规操作

1、APACHE POI简介 Apache POI 简介是用Java编写的免费开源的跨平台的 Java API&#xff0c;Apache POI提供API给Java程式对Microsoft Office&#xff08;Excel、WORD、PowerPoint、Visio等&#xff09;格式档案读和写的功能。 1.1、其他操作Excel工具 Java Excel是一开放源码…

类直径树上贪心

http://cplusoj.com/d/senior/p/SS231109C 场上想到枚举点&#xff0c;然后最大值为高&#xff0c;然后可以求最大值。但是感觉计数会重 计数其实不会重&#xff0c;如图中&#xff0c;红色线段显然比蓝色线段优 所以我们枚举3叉点时没错的 #include<bits/stdc.h> usin…

Terminator终端

Terminator终端 terminator快捷键 sudo apt install terminator使用ctrlaltt开启终端 terminator快捷键 E O W 都是ctrl shift结合 alt方向键&#xff0c;为切换焦点 e分屏失效的解决方案&#xff08;原因是快捷键占有问题&#xff09; ibus-setup将表情符号注释就行了 …

ARMday2(环境创建+工程配置+创建文件+单步调试)

目录 一、汇编环境的创建 二、为工程配置链接脚本&#xff08;map.lds&#xff09; 三、为工程创建汇编文件 start.s 编程调试 接下来我们需要建立一个 start.s 汇编文件添加到我们的工程中去 四、对汇编代码进行单步调试&#xff08;仿真&#xff09; 五、汇编工程的编译 …

遍历List集合和Map进行修改和删除报java.util.ConcurrentModificationException错误详解

一、异常产生 当我们使用foreach迭代一个ArrayList或者HashMap时&#xff0c;如果尝试对集合做一些修改操作&#xff08;例如删除元素或新增&#xff09;&#xff0c;可能会抛出java.util.ConcurrentModificationException的异常。 javapublic static void main(String[] args)…

语音控制:基于ESP8266的DIY助手

随着智能家居的兴起&#xff0c;语音控制成为越来越受欢迎的方式。在本篇文章中&#xff0c;我们将向您介绍如何使用ESP8266构建一个基于语音控制的DIY助手。 第一步&#xff1a;硬件准备 在开始之前&#xff0c;您需要准备一些基础硬件&#xff0c;包括ESP8266模块、麦克风模…

【C++】C++中的IO流

文章目录 一、C语言的输入与输出二、什么是流三、CIO流1.C标准IO流2.C文件IO流 四、stringstream的简单介绍 一、C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf(): scanf(): 从标准输入设备(键盘)读取数据&#xff0c;并将值存放在变量对应的…

数据结构-图的存储

邻接矩阵法 #define MaxVertexNum 100 //顶点数目的最大值 typedef struct{char Vex[MaxVertexNum]; //顶点表int Edge[MaxVertexNum][MaxVertexNum]; //邻接矩阵&#xff0c;边表int vexnum,arcnum; //图的当前顶点数和边数 }MGraph;无向图 第i个顶点的度第i行&#xff08;或第…

深入理解JVM虚拟机第二十二篇:详解JVM当中与操作数栈相关的字节码指令

大神链接&#xff1a;作者有幸结识技术大神孙哥为好友&#xff0c;获益匪浅。现在把孙哥视频分享给大家。 孙哥链接&#xff1a;孙哥个人主页 作者简介&#xff1a;一个颜值99分&#xff0c;只比孙哥差一点的程序员 本专栏简介&#xff1a;话不多说&#xff0c;让我们一起干翻J…

VUE页面导出PDF方案

1&#xff0c;技术方案为&#xff1a;html2canvas把页面生成canvas图片&#xff0c;再通过jspdf生成PDF文件&#xff1b; 2&#xff0c;安装依赖&#xff1a; npm i html2canvas -S npm i jspdf -S 3&#xff0c;封装导出pdf方法exportPdf.js: // 页面导出为pdf格式 //titl…

简单选择排序(c语言代码实现)

选择排序&#xff1a;简单选择排序&#xff08;不稳定的排序&#xff09; 简单选择排序是一种基础的排序算法&#xff0c;它的基本思路是在未排序的序列中选择最小&#xff08;或最大&#xff09;的元素&#xff0c;将其与序列的第一个元素进行交换&#xff0c;然后在剩余的未…

MySQL-基础篇

文章目录 第一章 MYSQL 概述数据库相关概念MySQL 数据库下载安装启动和停止 MySQL客户端连接解决&#xff1a;mysql 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。配置 Path 环境变量解决&#xff1a;net start mysql80 发生系统错误 5。 拒绝访问。MYSQL 的…

IntelliJ IDEA - Git Commit 后 Commit 窗口不消失解决方案

这个现象是在 2023 年版本后开始的&#xff0c;一开始以为是 Mac 系统的原因&#xff0c;后来发现原来 Windows 也这样&#xff0c;所以应该只跟 IDEA 版本有关 可以看到左侧 commit 后&#xff0c;这个侧边栏还在&#xff0c;按理讲在以前的版本是之前消失&#xff0c;这样使…

layui table合并相同的列

table.render({elem: #samples,url: /index/Develorderss/samplelists?od_idod_id //数据接口,page: { //支持传入 laypage 组件的所有参数&#xff08;某些参数除外&#xff0c;如&#xff1a;jump/elem&#xff09; - 详见文档layout: [prev, page, next, count,skip,limit]…

TCP发送窗口、接收窗口以及其工作原理

1*KvfIrP_Iwq40uVdRZYGnQg.png 上面的图表是从发送方的角度拍摄的快照。我们可以将数据分为4组&#xff1a; 1.已发送并已确认的字节&#xff08;蓝色&#xff09;2.已发送但尚未确认的字节&#xff08;黄色&#xff09;3.未发送但接收方准备好接收的字节&#xff08;绿色&…

【C++】C++静态成员函数,类名直接调用

静态成员函数可以通过类名直接调用&#xff0c;不用创建对象。例如&#xff1a;ClassName::Func();通过类名直接调用因为不用创建对象所以不会运行类的构造方法。适合用于初始化。 参考&#xff1a; C【6】对静态成员函数的用法说明C调用成员函数的几种方法总结C static静态…