C#环境与数据类型

news2024/12/24 9:34:28

文章目录

      • C#环境
        • .NET 框架
        • 集成开发环境
      • 创建一个C#项目
      • 数据类型
        • 值类型
        • 引用类型
          • 对象类型object
          • 动态类型dynamic
          • 字符串类型string
        • 指针类型
      • 类型转换
        • 隐式转换
        • 显示转换(强制转换)
        • C#提供的类型转换方法
          • Convert类
          • Parse方法
          • TryParse方法

C#环境

.NET 框架

  C#是.NET框架的一部分,且用于编写.NET应用程序。.NET框架是一个创新的平台,可以编写Windows应用程序、web应用程序、web服务。

集成开发环境

  visual studio支持C#开发。

在这里插入图片描述

创建一个C#项目

在这里插入图片描述


using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

  运行结果为 Hello World! 。

数据类型

值类型
类型描述
bool布尔值
byte8位无符号整数
decimal128位精确的十进制值,28-29有效位数
double64位双精度浮点型
float32位单精度浮点型
int32位有符号整型
long64位有符号整型,长整型
sbyte8位有符号整数
short16位有符号整型,短整型
uint32位无符号整型
ulong64位无符号整型
ushort16位无符号整型
char16 位 Unicode 字符
using System;

namespace DataType
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Size of bool: {0}", sizeof(bool));
            Console.WriteLine("Size of byte: {0}", sizeof(byte));
            Console.WriteLine("Size of decimal: {0}", sizeof(decimal));
            Console.WriteLine("Size of double: {0}", sizeof(double));
            Console.WriteLine("Size of float: {0}", sizeof(float));
            Console.WriteLine("Size of int: {0}", sizeof(int));
            Console.WriteLine("Size of short: {0}", sizeof(short));
            Console.WriteLine("Size of long: {0}", sizeof(long));
            Console.WriteLine("Size of sbyte: {0}", sizeof(sbyte));
            Console.WriteLine("Size of uint: {0}", sizeof(uint));
            Console.WriteLine("Size of ulong: {0}", sizeof(ulong));
            Console.WriteLine("Size of ushort: {0}", sizeof(ushort));
        }
    }
}

在这里插入图片描述

引用类型

  内置的引用类型有:object、dynamic和string

对象类型object

  object是C#的通用类型中所有数据类型的终极基类(父类),所以object类型就可以被分配任何类型的值。但是在分配值之前需要先进行类型转换。当一个值类型被转变为对象类型时,被称为装箱;反之,一个对象类型转变为一个值类型是,被称为拆箱。

动态类型dynamic

  可以存储任何类型的值,编译器会自动检测数据类型。

dynamic <variable_name> = value;

namespace DataType
{
    class Program
    {
        static void Main(string[] args)
        {
            dynamic test1 = 10;
            dynamic test2 = 1.5;
            dynamic test3 = 'a';
            dynamic test4 = "hello world";
            Console.WriteLine("test type is: {0}", test1.GetType());
            Console.WriteLine("test type is: {0}", test2.GetType());
            Console.WriteLine("test type is: {0}", test3.GetType());
            Console.WriteLine("test type is: {0}", test4.GetType());
        }
    }
}

在这里插入图片描述

字符串类型string

  字符串类型从对象类型中派生,可以分配任何字符串值。有两种分配形式:引号和@引号。@引号的分配形式被称为逐字字符串,转义字符、换行符、缩进空格等都会被挡住普通字符对待。

namespace DataType
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1 = "\\adc\t1";
            string str2 = @"\\adc\t1";
            string str3 = @"\\adc\t1 z
1
2
3";
            Console.WriteLine("str1: {0}", str1);
            Console.WriteLine("str2: {0}", str2);
            Console.WriteLine("str3: {0}", str3);
        }
    }
}

在这里插入图片描述

指针类型

  和C/C++中的指针类型一样,存放一个数据的地址。

type* pointername

类型转换

隐式转换

  不需要代码指定的转换,一般是低精度向高精度的转换。

显示转换(强制转换)

  代码中显示的写明要转换的数据类型,一般是高精度向低精度转换,或者是一个对象类型转变成另外一个数据类型。显示转换可能会出现精度丢失、数据丢失的情况。

namespace DataType
{
    class Program
    {
        static void Main(string[] args)
        {
            // 隐式转换
            int a = 10;
            double b = a;

            // 显示转换
            int c = 256;
            byte d = (byte)c;

            double e = 1.2345;
            int f = (int)e;

            Console.WriteLine("b type is:{0},b = {1}", b.GetType(), b);
            Console.WriteLine("d type is:{0},d = {1}", d.GetType(), d);
            Console.WriteLine("f type is:{0},f = {1}", f.GetType(), f);
        }
    }
}

在这里插入图片描述

  隐式转换时,将类型转换为long时,数据类型可能还是int32,因为long没有明确的长度定义,只是说他至少是32位。

C#提供的类型转换方法
Convert类

  convert提供了一组静态方法,用于基本数据类型之间的转换。

方法描述
Convert.ToBoolean(value)将类型转换为布尔类型
Convert.ToByte(value)将类型转换为Byte类型
Convert.ToChar(value)将类型转换为Char类型
Convert.ToDateTime(value)将类型转换为DateTime类型
Convert.TDecimal(value)将类型转换为Decimal类型
Convert.ToDouble(value)将类型转换为double类型
Convert.ToInt16(value)将类型转换为短整型
Convert.ToInt32(value)将类型转换为整型
Convert.ToInt64(value)将类型转换为长整型
Convert.ToSByte(value)将类型转换为SByte类型
Convert.ToSingle(value)将类型转换为单精度浮点型
Convert.ToString(value)将类型转换为字符串类型
Convert.ToUInt16(value)将类型转换为无符号短整型
Convert.ToUInt32(value)将类型转换为无符号整型
Convert.ToUInt64(value)将类型转换为无符号长整型
Parse方法

  parse方法用于将字符串转换为对应的数值类型,如果转换失败会抛出异常。

方法描述
Boolean.Parse(string)将字符串解析为布尔类型
Convert.ToByte(value)将类型转换为Byte类型
Char.Parse(string)将类型转换为Char类型
DateTime.Parse(string)将类型转换为DateTime类型
Decimal.Parse(string)将类型转换为Decimal类型
Double.Parse(string)将类型转换为double类型
Int16.Parse(string)将类型转换为短整型
Int32.Parse(string)将类型转换为整型
Int64.Parse(string)将类型转换为长整型
SByte.Parse(string)将类型转换为SByte类型
Single.Parse(string)将类型转换为单精度浮点型
UInt16.Parse(string)将类型转换为无符号短整型
UInt16.Parse(string)将类型转换为无符号整型
UInt64.Parse(string)将类型转换为无符号长整型
TryParse方法

  类似于parse方法,但不会抛出异常,而是返回一个布尔值来表示是否返回成功。

方法描述
Boolean.TryParse(string, out bool)尝试将字符串解析为布尔类型,并返回转换结果是否成功
Byte.TryParse(string, out byte)尝试将字符串解析为Byte类型,并返回转换结果是否成功
Char.TryParse(string, out char)尝试将字符串解析为Char类型,并返回转换结果是否成功
DateTime.TryParse(string, out DateTime)尝试将字符串解析为DateTime类型,并返回转换结果是否成功
Decimal.TryParse(string, out decimal)尝试将字符串解析为Decimal类型,并返回转换结果是否成功
Double.TryParse(string, out double)尝试将字符串解析为Double类型,并返回转换结果是否成功
Int16.TryParse(string, out short)尝试将字符串解析为Int16类型,并返回转换结果是否成功
Int32.TryParse(string, out int)尝试将字符串解析为Int32类型,并返回转换结果是否成功
Int64.TryParse(string, out int)尝试将字符串解析为Int64类型,并返回转换结果是否成功
SByte.TryParse(string, out sbyte)尝试将字符串解析为SByte类型,并返回转换结果是否成功
Single.TryParse(string, out float)尝试将字符串解析为Single类型,并返回转换结果是否成功
UInt16.TryParse(string, out ushort)尝试将字符串解析为UInt16类型,并返回转换结果是否成功
UInt32.TryParse(string, out uint)尝试将字符串解析为UInt32类型,并返回转换结果是否成功
UInt64.TryParse(string, out ulong)尝试将字符串解析为UInt64类型,并返回转换结果是否成功

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

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

相关文章

ESP32CAM人工智能教学13

ESP32CAM人工智能教学13 openCV 安装 小智发现openCV是一款非常出色的机器视觉软件&#xff0c;可以配合ESP32Cam的摄像头&#xff0c;开发出许许多多的人工智能应用情境。 下载视频服务驱动库 OpenCV是开源的计算机视觉驱动库&#xff0c;可以应用于机器人的图形处理、机器学…

Mac清理软件cleanmymac x4.14.4破解版,2024年有免费cleanmymac x激活码

​ CleanMyMac X 4.14.4破解版可以快速识别并删除占用磁盘空间的无用文件&#xff0c;提升我们系统的存储空间。它还可以优化启动项、修复系统错误和保护隐私等。总之CleanMyMac X十分强大有需要的赶快下载吧&#xff0c; CleanMyMac X 许可证激活码:ak39840506641bjckr 需要…

RK3568笔记三十八:DS18B20驱动开发测试

若该文为原创文章&#xff0c;转载请注明原文出处。 DS18B20驱动参考的是讯为电子的单总线驱动第十四期 | 单总线_北京迅为的博客-CSDN博客 博客很详细&#xff0c;具体不描述。 只是记录测试下DS18B20读取温度。 一、介绍 流程基本和按键驱动差不多&#xff0c;主要功能是…

7.16做题总结

今日也是让我看到了繁神的ACM历程&#xff0c;确实&#xff0c;我觉得繁神的历程里面确实有一句很好 不想打算法竞赛了。这是因为有别的事情要做&#xff0c;不是因为我打不动。    不想打比赛凌晨两点才睡了。因为我会困。    不想在群里和高水平选手水群了&#xff0c;因…

BayesPrism(贝叶斯棱镜法)可提取单细胞数据去卷积后将信息映射至bulkRNA数据

贝叶斯棱镜法作为一种工具可以根据scRNA数据(作为先验模型)去推断bulkRNA数据中肿瘤微环境组成(不同免疫细胞组分/不同细胞群)和基因表达情况。 开发者展示的图片就很形象了&#xff0c;左边图展示了把标注了不同细胞类型的单细胞数据作为先验信息(prior info)的基因信息和bul…

【内网渗透】内网渗透学习之域渗透常规方法

域渗透常规方法和思路 1、域内信息收集1.1、获取当前用户信息1.1.1、获取当前用户与域 SID1.1.2、查询指定用户的详细信息 1.2、判断是否存在域1.2、查询域内所有计算机1.3、查询域内所有用户组列表1.4、查询所有域成员计算机列表1.5、获取域密码信息1.6、获取域信任信息1.7、查…

STM32智能环境监测系统教程

目录 引言环境准备智能环境监测系统基础代码实现&#xff1a;实现智能环境监测系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;环境监测与管理问题解决方案与优化收尾与总结 1. 引言 智能环境监测系统通…

Redis的配置优化、数据类型、消息队列

文章目录 一、Redis的配置优化redis主要配置项CONFIG 动态修改配置慢查询持久化RDB模式AOF模式 Redis多实例Redis命令相关 二、Redis数据类型字符串string列表list集合 set有序集合sorted set哈希hash 三、消息队列生产者消费者模式发布者订阅者模式 一、Redis的配置优化 redi…

OSI 七层模型与五层模型

OSI&#xff08;开放系统互连&#xff09;七层模型和五层模型是描述计算机网络协议的两种不同层次划分方法。两者用于帮助理解和设计网络协议&#xff0c;但它们在层次划分上有所不同。

手机数据恢复:适用于 Android 的 4 大数据恢复应用程序

没有人希望丢失设备上的重要数据。如果发生这种情况&#xff0c;请不要惊慌。以下是可帮助您恢复丢失或删除的数据的 Android 数据恢复应用程序列表。 有多种方法可以恢复已删除或丢失的 Android 数据&#xff0c;最简单、最快捷的方法是使用第三方恢复应用程序。这些应用程序会…

Redis 中String类型操作命令(命令演示,时间复杂度,返回值,注意事项)

String 类型 文章目录 String 类型set 命令get 命令mset 命令mget 命令get 和 mget 的区别incr 命令incrby 命令decr 命令decrby 命令incrbyfloat 命令append 命令getrange 命令setrange 命令 字符串类型是 Redis 中最基础的数据类型&#xff0c;在讲解命令之前&#xff0c;我们…

新增支持GIS地图、数据模型引擎升级、增强数据分析处理能力

为了帮助企业提升数据分析处理能力&#xff0c;Smartbi重点围绕产品易用性、用户体验、操作便捷性进行了更新迭代&#xff0c;同时重磅更新了体验中心。用更加匹配项目及业务需求的Smartbi&#xff0c;帮助企业真正发挥数据的价值&#xff0c;赋能决策经营与管理。 Smartbi用户…

昇思25天学习打卡营第7天 | 基于MindSpore的GPT2文本摘要

本次打卡基于gpt2的文本摘要 数据加载及预处理 from mindnlp.utils import http_get# download dataset url https://download.mindspore.cn/toolkits/mindnlp/dataset/text_generation/nlpcc2017/train_with_summ.txt path http_get(url, ./)from mindspore.dataset impor…

比华为、特斯拉更大的野心

作者 | 艾泊宇 最近百度自动驾驶的网约车萝卜快跑在武汉大规模上路了。 同样是做自动驾驶&#xff0c;你看百度、华为、特斯拉&#xff0c;他们三家的思路完全不同。 但是可以看出来&#xff0c;各自完全不同的用意和意图&#xff0c;以及格局的高低。 华为很稳&#xff0c;…

BernNet Learning Arbitrary Graph Spectral Filters via Bernstein Approximation

发表于:neurips21 推荐指数: #paper/⭐⭐ 设定:在本文中,h是过滤器. bernstein 多项式逼近(这个证明有点稀里糊涂的,反正我觉得一点点问题,可能因为我水平低) p K ( t ) : ∑ k 0 K θ k ⋅ b k K ( t ) ∑ k 0 K f ( k K ) ⋅ ( K k ) ( 1 − t ) K − k t k . p_K(t):…

太牛了!从来没想到加密软件这么好用

还在为无法保证重要信息安全烦恼吗&#xff1f;金刚钻信息网站&#xff0c;一个集数据防泄密系统、企业数据云盘存储为一身的多个安全产品网站&#xff0c;为企业文件保驾护航&#xff01; 一、全方位防护&#xff0c;无懈可击 数据防泄密系统从电脑内部&#xff0c;电脑外部多…

AV1 编码标准熵编码技术概述

AV1熵编码 AV1编码技术是一种开源的视频编解码标准&#xff0c;由开放媒体联盟&#xff08;AOMedia&#xff09;开发&#xff0c;旨在提供高效的视频压缩&#xff0c;同时避免复杂的专利授权问题。在熵编码方面&#xff0c;AV1采用了一种多符号上下文自适应算术编码技术&#x…

EMR 集群时钟同步问题及解决方案An error occurred (InvalidSignatureException)

目录 1. 问题描述2. 问题原因3. 解决过程4. 时钟同步的重要性5. Linux 系统中的时钟同步方式6. 检查 Linux 系统时钟同步状态7. EMR 集群中的时钟同步配置8. 时钟同步对大数据组件的影响9. 监控和告警策略10. 故障排除和最佳实践11. 自动化时钟同步管理12. 时钟同步与数据一致性…

每日复盘-20240715

20240715 六日涨幅最大: ------1--------300807--------- 天迈科技 五日涨幅最大: ------1--------300807--------- 天迈科技 四日涨幅最大: ------1--------300807--------- 天迈科技 三日涨幅最大: ------1--------300713--------- 英可瑞 二日涨幅最大: ------1--------3007…

AV1技术学习:Translational Motion Compensation

编码块根据运动矢量在参考帧中找到相应的预测块&#xff0c;如下图所示&#xff0c;当前块的左上角的位置为(x0, y0)&#xff0c;在参考帧中找到同样位置(x0, y0)的块&#xff0c;根据运动矢量移动到目标参考块&#xff08;左上角位置为&#xff1a;(x1, y1)&#xff09;。 AV1…