C#,入门教程(14)——字符串与其他数据类型的转换

上一篇:

C#,入门教程(13)——字符(char)及字符串(string)的基础知识icon-default.png?t=N7T8https://blog.csdn.net/beijinghorn/article/details/123928151

数据只有可视化才能更好地体现其价值,因而 string 与 image 是所有数据的终点。

string 必须熟练再熟练!

一、byte vs string

string 实际上是封装的 byte[] 数组 的类。按编码的不同其 byte[] 数据是不一样的。

1、byte to string

// 一般的,不好的写法
byte[] 转成 string:
string str = System.Text.Encoding.Default.GetString(byteArray);// 好的写法
byte[] 转成 string:
string str = System.Text.Encoding.ASCII.GetString(byteArray);

2、string to byte

// 一般的,不好的写法
string 转成 byte[]:
byte[] byteArray = System.Text.Encoding.Default.GetBytes(str);// 好的写法
string 转成 byte[]:
byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(str);

Encoding.Default 具有很大的迷惑性,不同的 OS 下可能是不一样的,如同 var 数据类型一样,写起来省事,却大大地破坏了系统的可维护性与拓展性。

记住:一定要用明确类型的 Encoding !!!!!

二、int vs string

1、int to string

// 没有简单,只有更简单!
int a = 10;
string b = a + "";// 限定位数,左端 用 0 补齐
int a = 8;
string b = String.Format("{0:D2}", a);
// b = "08"

2、string to int

// 好的写法
string a = "10";
int b = Int32.Parse(a);// 或者
if(Int32.TryParse(a, out int b))
{int c = b + 3;
}

三、double vs string

1、double to string

// 也很简单!
double a = 10.11;
string b = a + "";// 限小数点位数
double a = Math.PI;
string b = String.Format("{0:F8}", a);
// b = "3.14159265"

2、string to double

// 好的写法
string a = "1.2345";
double b = double.Parse(a);// 或者
if(double.TryParse(a, out double b))
{double c = b + 3.0;
}

四、DateTime vs string

DateTime 实际上是 封装的一个实数类,用于存储时间信息。

1、DateTime to string

// 获得当前时间
DateTime now = DateTime.Now;
// 转为 年-月-日 格式
string ns = now.ToString("yyyy-MM-dd"));

2、string to DateTime

string a = "2008-8-8";
DateTime beijingTime = DateTime.Parse(a);// 或者
if(DateTime.Parse(a, out DateTime bt))
{;
}

五、other vs string

其他的数据体,一般都以 class 定义。

因而,大多数情况下,应该重写其 ToString 方法来实现与 string 的转换。

public class PersonInfo
{/// <summary>/// 编码/// </summary>public int Id { get; set; } = 0;/// <summary>/// 姓名/// </summary>public string Name { get; set; } = "";/// <summary>/// 重载ToString方法/// </summary>/// <returns></returns>public override string ToString(){//return base.ToString();return Id + ":" + Name;}
}

不用记很多,需要的时候再搜索即可。

下一篇:

C#,入门教程915)——类(class)的基础知识icon-default.png?t=N7T8https://blog.csdn.net/beijinghorn/article/details/124012719

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Object.keys()

目录 1、Object.keys() 是什么&#xff1f; 2、Object.keys(obj) 用法&#xff1a; 2.1 如果对象是一个对象&#xff0c;会返回对象的属性名组成的数组&#xff1b; 2.2 如果对象是一个数组&#xff0c;则返回索引组成的数组&#xff1a; 2.3 如果是字符串&#xff0c;返回…

MySQL 8.0 InnoDB Tablespaces之Temporary Tablespaces(临时表空间)

文章目录 MySQL 8.0 InnoDB Tablespaces之Temporary Tablespaces&#xff08;临时表空间&#xff09;会话临时表空间会话临时表空间的磁盘分配和回收会话临时表空间的创建创建临时表和查看临时表信息会话临时表空间相关的设置参数innodb_temp_tablespaces_dir 全局临时表空间查…

力扣最热一百题——只出现一次的数字

这个合集已经很久没有更新了&#xff0c;今天来更新更新~~~ 目录 力扣题号 题目 题目描述 示例 提示 题解 Java解法一&#xff1a;Map集合 Java解法二&#xff1a;位运算 C位运算代码 力扣题号 136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 下述题…

mac 快捷键

mac 程序坞 ctrlaltD:打开程序坞 调度中心 Ctrl键↑: 调度中心 Ctrl键↓:应用程序窗口 F11 : 显示桌面 输入法 Ctrl键空格: 切换输入法 Ctrl键Alt(Option)空格: 切换输入法 截屏 帮助 Ctrl键shift键/: 显示帮助

Vue-13、Vue深度监视

1、监视多级结构中某个属性的变化 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>watch深度监视</title><script type"text/javascript" src"https://cdn.jsdelivr.net/npm…

Mac安装nvm以及使用nvm安装node

1. 安装nvm命令 git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout git describe --abbrev0 --tags2. 配置环境变量 vi ~/.bash_profileexport NVM_DIR"$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] &&…

Provide/Inject 依赖注入(未完待续)

父组件传递给子组件数据&#xff0c;通过props&#xff0c;但是需要逐层传递 provide/Inject 的推出就是为了解决这个问题&#xff0c;它提供了一种组件之间共享此类值的方式,不必通过组件树每层级显示地传递props 目的是为了共享那些被 认为对于一个组件树而言是全局的数据 p…

揭秘 Gossip 协议:节点之间的悄悄话

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 揭秘 Gossip 协议&#xff1a;节点之间的悄悄话 前言Gossip协议简介Gossip 协议的工作原理Gossip 协议的优势Gossip协议的实际应用 前言 在分布式系统中&#xff0c;节点之间的信息传递如同社交中的悄…

Unity报错:[SteamVR] Not Initialized (109)的解决方法

问题描述 使用HTC vive 头像进行SteamVR插件的示例场景进行测试&#xff0c;发现头显场景无法跳转到运行场景&#xff08;Unity 项目可以运行&#xff0c;仅出现警告&#xff09;。 具体如下&#xff1a; [SteamVR] Not Initialized (109) [SteamVR] Initialization failed…

ISO11898-CAN网络拓扑结构 (125K~1Mbps)

ISO11898 标准的物理框图如下图 可理解为一个高速闭环 CAN 总线网络&#xff1b;CAN 闭环总线网络允许总线最大长度为 40m;最高速度为 1Mbps;可以看到总线的两端各有一个 120Ω 的电阻&#xff0c;此电阻作为阻抗匹配功能&#xff0c;以减少回波反射;节点就是不同的设备&#…

前端开发学习与发展建议,错过很可惜

对有志学习前端开发的同学,这里有几点建议: 1. 掌握前端三剑客HTML,CSS和JavaScript 这三项技术是前端开发的基石,必须扎实掌握。要理解每项技术的功能和特点,并通过实践项目熟练运用。 2. 了解前端组件库和框架 目前较流行的前端框架有Vue.js、React.js和AngularJS等。这些…

招投标系统是Electron的纯内网编辑Office Word,可以设置部分区域可编辑,其他的地方不能编辑吗?

问题&#xff1a; 我们是招投标系统的开发公司&#xff0c;框架是用的Electron&#xff0c;需要在纯内网的环境下编辑Office Word&#xff0c;可以设置部分区域可编辑&#xff0c;其他的地方不能编辑吗&#xff08;如下红框位置&#xff09;并且在用户忘记填写一些区域的时候做…