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 | 布尔值 |
| byte | 8位无符号整数 |
| decimal | 128位精确的十进制值,28-29有效位数 |
| double | 64位双精度浮点型 |
| float | 32位单精度浮点型 |
| int | 32位有符号整型 |
| long | 64位有符号整型,长整型 |
| sbyte | 8位有符号整数 |
| short | 16位有符号整型,短整型 |
| uint | 32位无符号整型 |
| ulong | 64位无符号整型 |
| ushort | 16位无符号整型 |
| char | 16 位 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类型,并返回转换结果是否成功 |
相关文章:
C#环境与数据类型
文章目录 C#环境.NET 框架集成开发环境 创建一个C#项目数据类型值类型引用类型对象类型object动态类型dynamic字符串类型string 指针类型 类型转换隐式转换显示转换(强制转换)C#提供的类型转换方法Convert类Parse方法TryParse方法 C#环境 .NET 框架 C#是…...
jenkins系列-06.harbor
https://github.com/goharbor/harbor/releases?page2 https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-offline-installer-v2.3.4.tgz harbor官网:https://goharbor.io/ 点击 Download now 链接,会自动跳转到上述github页面&am…...
kotlin get set
在 Kotlin 中,如果想实现一个类的属性可以从外部读取但不能修改,可以使用自定义的 getter 和 private setter。以下是一个示例代码: class MyClass {var myProperty: Stringprivate set // 使 setter 私有化,外部无法修改get // …...
Flask包算法服务
常规包算法服务,就是比较简单,直接起一个fastapi就可以了。 import time import asyncio from aidraw import engineer_log as eng from fastapi import FastAPI from pydantic import BaseModel from typing import Optional from aidraw.ardraw import run_aidraw_api# 起…...
Flowable(一个开源的工作流和业务流程管理引擎)中与事件相关的一些核心概念
Flowable(一个开源的工作流和业务流程管理引擎)中与事件相关的一些核心概念 Flowable(一个开源的工作流和业务流程管理引擎)中与事件相关的一些核心概念,包括它们的作用和触发场景。以下是对这些内容的简要说明&#x…...
深度解析:景区客服系统如何助力旅游业可持续发展
一、引言 在全球化与信息化交织的时代背景下,旅游业正以前所未有的速度发展,成为推动经济增长、文化交流与环境保护的重要力量。景区作为旅游业的核心组成部分,其服务质量和管理水平直接影响到游客的满意度和行业的可持续发展。景区客服系统…...
风险评估:IIS的安全配置,IIS安全基线检查加固
「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 这一章节我们需…...
uniapp 截取两条数据 进行页面翻页滚动
// 轮播信息 <view class"sales_list" ><view class"sales_item" v-for"(item,index) in sellDisplayList" :key"index" click"salesFn(item)"><image :src"item.goodsImg"></image><…...
python笔记(转存ipynb)------1
list1 ["tom","cat","Lili"] print(list1[0].title())Tom#append()列表方法在列表末尾添加新元素 list1.append(233) print(list1) #可以先创建空列表,再进行追加append(..)以添加[tom, cat, Lili, 233]#insert()列表方法插入元素 l…...
excel系列(二) - 利用 easypoi 快速实现 excel 文件导入导出
一、介绍 在上篇文章中,我们介绍了 apache poi 工具实现 excel 文件的导入导出。 本篇我们继续深入介绍另一款优秀的 excel 工具库:easypoi。 二、easypoi 以前的以前,有个大佬程序员,跳到一家公司之后就和业务人员聊上了&…...
邀请函|2024第八届中国太阳能电池浆料与金属化技术展
2024第八届中国国际太阳能电池浆料与金属化技术展览会 地点:深圳国际会展中心 时间:2025年06-月25日-27日 地点:上海新国际博览中心 时间:2024年12月18日-20日 主办单位:上海氟伦展览有限公司 指导单位:中国新材料技术协会 中国电子学会 耐…...
图像边缘检测:技术原理与算法解析
图像边缘检测是计算机视觉和图像处理中的一个核心任务,它旨在识别图像中亮度变化明显的点,从而识别出图像的边缘。边缘是图像中的重要特征,对于后续的图像分析、物体识别和图像分割等任务具有至关重要的作用。本文将深入探讨图像边缘检测的技…...
【Python星启航】少儿编程精英启蒙之旅 - 大纲
1. 计算机基础与编程环境 计算机的基本构成 编程语言与编程环境介绍 Python语言的特点与优势 安装与配置Python环境 2. 计算机历史与发展 计算机的起源与早期发展 个人电脑的普及与影响 当代计算机技术的前沿动态 计算机在未来教育中的角色 3. 编程基础概念 变量的定义与作…...
MATLAB的mat文件转换成json文件
内参矩阵 (K):相机的内在参数矩阵,通常是一个3x3的矩阵,包含了相机的焦距(fxfx和fyfy)和主点(光学中心)的坐标(cxcx和cycy)。这个矩阵将图像坐标转换为归一化相机…...
STM32第九课:STM32-基于标准库的42步进电机的简单I/O控制(附电机教程,看到即赚到)
一:步进电机简介 步进电机又称为脉冲电机,简而言之,就是一步一步前进的电机。基于最基本的电磁铁原理,它是一种可以自由回转的电磁铁,其动作原理是依靠气隙磁导的变化来产生电磁转矩,步进电机的角位移量与输入的脉冲个数严格成正比…...
文件安全传输系统,如何保障信创环境下数据的安全传输?
文件安全传输系统是一套旨在保护数据在传输过程中的安全性和完整性的技术或解决方案。通常包括以下几个关键组件: 加密:使用强加密算法来确保文件在传输过程中不被未授权访问。 身份验证:确保只有授权用户才能访问或传输文件。 完整性校验…...
论文分享|AAAI2024‘北航|用大语言模型缩小有监督和无监督句子表示学习的差距
先说结论,大语言模型除了作为聊天的Agent,也可以为检索模型生成优质的文本对训练数据,从而做到无监督场景下也能够适用。这里分享一篇AAAI2024的工作,重点探讨如何生成比评估集更困难的训练数据来提升无监督句子表示学习质量&…...
vue3相比于vue2有哪些新特性?
Composition API: 组合式 API 提供了更灵活和可组合的方式来组织代码。它允许将逻辑功能集中在一起,而不是分散在生命周期钩子中。 import { ref, reactive, computed, watch } from vue;export default {setup() {const count ref(0);const state r…...
Gooxi受邀参加第三届中国数据中心服务器与设备峰会
7月2-3日,第三届中国数据中心服务器与设备峰会在上海召开,作为国内最聚焦在服务器领域的专业峰会,吸引了来自全国的行业专家、服务器与机房设备厂家,企业IT用户,数据中心业主共同探讨AIGC时代下智算中心设备的设计之道…...
3个实现前端节流的方法,附代码。
一、什么是前端节流 前端节流(Throttling)是一种优化前端性能的技术,它可以限制某些函数的执行频率,以提高性能和用户体验。节流可以用于控制一些高频事件的触发频率,比如滚动事件、鼠标移动事件、窗口大小改变事件等…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
