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)是一种优化前端性能的技术,它可以限制某些函数的执行频率,以提高性能和用户体验。节流可以用于控制一些高频事件的触发频率,比如滚动事件、鼠标移动事件、窗口大小改变事件等…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...