C#环境与数据类型

文章目录

      • 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类型,并返回转换结果是否成功

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Directory Opus 13 专业版(Windows 增强型文件管理器)值得购买?

在使用电脑时&#xff0c;总少不了和文件打交道。系统自带的 Explorer 资源管理器功能又非常有限&#xff0c;想要拥有一个多功能文件管理器吗&#xff1f; Directory Opus 是一款老牌多功能文件管理器&#xff0c;能很好地接管 Windows 资源管理器。 接管资源管理器 Directo…

Kotlin标准函数(语法糖)let with run also apply快速讲解

目录 1、知识储备——扩展函数 原理 定义扩展函数 调用扩展函数 2、返回值为上下文对象的标准函数 apply also 3、返回值为Lambda表达式结果 let run with 4、一表总结 1、知识储备——扩展函数 原理 Kotlin 在不继承父类或实现接口下&#xff0c;也能扩展一个类的…

硅谷甄选4(项目主体)

1.路由配置 1.1路由组件的雏形 src\views\home\index.vue&#xff08;以home组件为例&#xff09; 安装插件&#xff1a; 1.2路由配置 1.2.1路由index文件 src\router\index.ts //通过vue-router插件实现模板路由配置 import { createRouter, createWebHashHistory } fro…

【Qt 常用控件】

文章目录 1. Push Button 1. Push Button &#x1f427;给按钮设置图标

链接追踪系列-09.spring cloud项目整合elk显示业务日志

准备工作&#xff1a; 参看本系列之前篇&#xff1a;服务器安装elastic search 本机docker启动的kibana-tencent 使用本机安装的logstash。。。 本微服务实现的logstash配置如下&#xff1a; 使用腾讯云redis 启动本机mysql 启动本机docker 启动nacos,微服务依赖它作为…

防火墙的双机热备实验和通道策略

需求&#xff1a; 12&#xff0c;对现有网络进行改造升级&#xff0c;将当个防火墙组网改成双机热备的组网形式&#xff0c;做负载分担模式&#xff0c;游客区和DMZ区走FW3&#xff0c;生产区和办公区的流量走FW1 13&#xff0c;办公区上网用户限制流量不超过100M&#xff0c;…

象过河云进销存管理系统,简单、方便、高效!

在当今这个快节奏的商业时代&#xff0c;企业的日常运营管理愈发注重效率和便捷性。基于这样的需求&#xff0c;象过河云进销存管理系统应运而生&#xff0c;它以“简单、方便、高效”为核心价值&#xff0c;为众多企业量身打造了一站式的解决方案。 象过河云进销存管理系统打破…

MDK KEIL程序代码编译成静态库文件及库引用笔记教程

1、为什么要编译成库文件 在商业性的程序代码或软件中&#xff0c;各种静态库、动态库是非常常见的。甚至有许多的开源程序&#xff0c;其开放的源码工程中&#xff0c;也有一些程序代码是并不对外开放的&#xff0c;以一个静态库或动态库和一个头文件及部分说明文件的方式提供…

【Linux系列】TEE 命令:同时输出到终端和文件

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

AmazonS3部署以及nacos配置参数

AmazonS3部署 因为涉及到做的需求的头像的处理&#xff0c;所以需要去找头像的来源&#xff0c;没想到又是我们的老熟人&#xff0c;AmazonS3&#xff0c;巧了已经是第二次用了&#xff0c;上次我是用的别人的工具类去干的&#xff0c;这一次我这边自己编辑具体工具类型。 对应…

谷歌DeepMind被曝抄袭开源成果,论文还中了顶流会议

卡奥斯智能交互引擎是卡奥斯基于海尔近40年工业生产经验积累和卡奥斯7年工业互联网平台建设的最佳实践&#xff0c;基于大语言模型和RAG技术&#xff0c;集合海量工业领域生态资源方优质产品和知识服务&#xff0c;旨在通过智能搜索、连续交互&#xff0c;实时生成个性化的内容…

vue3+ECharts实现可视化中国地图

目录 版本问题解决 中国地图实现 版本问题解决 目前echarts的最新版本为5.5.1 echarts在4.9.0版本以后移除了中国地图&#xff0c;所以如果的你的版本高于4.9.0就需要手动导入中国地图。版本低于或者等于4.9.0则不需要导入。 这里我分享一种导入方法&#xff1a; 1.将项目的…

SQL中的谓词与谓词下推

在 SQL 查询中&#xff0c;谓词&#xff08;Predicate&#xff09;是用来对数据进行过滤的条件。它们决定了数据从数据库表中被选择的条件。理解和正确使用 SQL 谓词对于编写高效查询至关重要。 目录 什么是谓词&#xff1f;一个真实的故事SQL 谓词的代码示例比较谓词逻辑谓词…

Gitee简易使用流程(后期优化)

目录 1.修改用户名 2.文件管理 新建文件/文件夹流程如下&#xff1a; 上传文件流程如下&#xff1a; 以主页界面为起点 1.修改用户名 点解右上角的头像--> 点击“账号设置” 点击左边栏里的“个人资料“ 直接修改用户名即可 2.文件管理 选择一个有修改权限仓库&#…

【RAGFlow】Ubuntu系统下实现源码启动RAGFlow

一、RAGFlow 是什么&#xff1f; RAGFlow 是一款基于深度文档理解构建的开源 RAG&#xff08;Retrieval-Augmented Generation&#xff09;引擎。RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程&#xff0c;结合大语言模型&#xff08;LLM&#xff09;针对用…

隧道调频广播信号覆盖系统改造-泄漏电缆隧道全线无盲区调频覆盖解决方法探究

隧道调频广播信号覆盖系统改造-泄漏电缆隧道全线无盲区调频覆盖解决方法探究 由北京海特伟业科技有限公司任洪卓发布于2024年7月15日 随着城市交通的不断发展&#xff0c;隧道作为城市交通的重要组成部分&#xff0c;承担着日益增长的交通压力。为了确保行驶在隧道中的车辆能够…

AV1 编码标准中帧内预测技术概述

AV1 编码标准帧内预测 AV1&#xff08;AOMedia Video 1&#xff09;是一种开源的视频编码格式&#xff0c;旨在提供比现有标准更高的压缩效率和更好的视频质量。在帧内预测方面&#xff0c;AV1相较于其前身VP9和其他编解码标准&#xff0c;如H.264/AVC和H.265/HEVC&#xff0c;…

【分布式系统】CephFS文件系统之MDS接口详解

目录 一.服务端操作 1.在管理节点创建 mds 服务 2.查看各个节点的 mds 服务&#xff08;可选&#xff09; 3.创建存储池&#xff0c;启用 ceph 文件系统 4.查看mds状态&#xff0c;一个up&#xff0c;其余两个待命&#xff0c;目前的工作的是node01上的mds服务 5.创建用户…

做印尼TikTok直播会遇到什么困难?

TikTok直播已成为当下社交娱乐的重要组成部分&#xff0c;越来越多的直播达人在这个平台上崭露头角。特别是海外直播&#xff0c;受到了广大网友的热烈追捧。那么&#xff0c;在进行印尼TikTok直播会遇到哪些困难&#xff1f;这些困难是否可以通过TikTok直播专线来解决呢&#…

DBA 数据库管理 表管理 数据批量处理。表头约束

表管理 建库 库名命名规则&#xff1a;仅可以使用数字、字母、下划线、不能纯数字 不可使用MySQL命令或特殊字符 库名区分字母大小写 加if not exists 命令避免重名报错 create database if not exists gamedb; 建表 drop database if exists gamedb ; 删表…