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)是一种优化前端性能的技术,它可以限制某些函数的执行频率,以提高性能和用户体验。节流可以用于控制一些高频事件的触发频率,比如滚动事件、鼠标移动事件、窗口大小改变事件等…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...

Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...