当前位置: 首页 > news >正文

构建高质量的C#代码

如何构建高质量的C#代码?细节决定成败,做好细节才能使你的代码更加整洁、高效

1、起个好名字

变量名:通常采用“驼峰命名”法,即变量首字母小写,后面的单词首字母大写;

解决方案名称:通常每个单词首字母都大写

常量名称:字母统一大写,每个单词用下划线隔开来

 

2、准确适用float/double/decimal三个数据类型

float:有效数字为小数点后六位

double:有效数字为小数点后16位

decimal:有效数字非常精细

所以使用数据类型的时候,应该注意防止数据的丢失

 

3、整数类型是计算机中处理速度最快的数据类型

在平时编写过程中,可以将某些字符串的比较,bool类型的比较转化为整型数据的比较,从而提高代码速度

 

4、字符串的处理

  4.1 转义字符,通常文件路径、字符串带有转义字符的时候,需要加反斜杠  如|:string str=“Tom:\"Hi ! Jerry\"”;  //  Tom:"Hi ! Jerry"

       这个时候,我们可以通过逐字字符串@符号,在字符串前面加一个@符号,这个字符串就叫逐字字符串  如:string path=@"C:\Windows";

  4.2 字符串的大量拼接,可以使用StringBulider类来操作字符串(可以有效提高效率)

      eg:    StringBulider sb=new StringBuilder(200);//需指定长度。指定长度可以提高代码运行效率,如未指定长度,需先计算内存,再分配空间,这样就会耗费一定时间

              for(int i=0;i<100;i++)

              {     

                       sb.append("append string");

              }

     String是不可改变的,每次使用System.String类中的方法之一时,都会在内存中创建一个新的字符串对象,这样会使得系统开销非常大,如果不是想创建新的内存对象,只想对一个字符串进行操作,可以使用SringBuilder以此提升性能;

   StringBuilder是一个可变字符串,设置可容纳的最大字符数之后,当容量达到时,自动分配新的内存空间且容量翻倍

 4.3 字符串的比较方法   String.compare(exp1,exp2,exp3);//exp1,exp2为需要比较的两个字符串,第三个参数为bool类型,是指:是否忽略大小写

 4.5 字符串还有一些其他常用的方法,如 substring()//截取字符串       split()//把字符串分割为多个字符串     Join()将字符串组合合并成为一个字符串

 

 

5 数据类型转换(datetime 类型是结构体类型 结构体是值类型)

  5.1显式转换,又称强制类型转换

      目标变量=(目标类型)原数据;

      如,将一个float数据转为int类型,那么要考虑以下几个问题

      ①小数点后数据丢失

      ②是否需要做溢出检查(checked()方法)

      ③是否使用unchecked运算符 确保转换成功

  5.2隐式类型转换

  5.3使用tryParse()方法进行数据转换,每一种值类型都包含tryParse()方法(推荐使用)

     string source="12";

     int target;

      if(int.tryParse(source,out target)==true)

       {

            console.writeline("转换成功,结果为:{0}",target);

       }

       else  

       {

          console.writeline("转换失败");

       }

   5.4 使用Convert类,定义于system命名空间。在使用Convert在进行数据类型转换时应该注意,讲数值转化为数值时,如果字符串的内容不能转换成为相应的类型,将会产生FormatException异常,所以应该尽量使用tryParse()方法来代替

   5.5  object为所有类型的基类,但是不能作为万能类型。

         因为它是引用类型,进行数据处理时,会发生装箱和拆箱操作,对性能会有较大影响,所以

        ①我们应当尽量使用枚举(enum)、结构(struct)、类来封装数据。

        ②减少发生装箱拆箱操作。

        ③使用泛型

   6  常量的使用

       C#中,当使用常数符号const时,编译器首先从定义常数的模块的元数据中找出该符号,并直接取出常数的值,然后将之嵌入到编译后产生的IL代码中,所以常数在运行时不需要分配任何内存,当然也就无法获取常数的地址,也无法使用引用了。

  7. C#数据类型

     object是所有数据类型的基类

     值类型(继承object类型的子类:System.ValueType,存储在栈上):包括 基本类型(sbyte、short、Int、long、char、float、double、bool等)、结构类型(struct)、枚举类型(enum)

     引用类型(数据存放的地址存储在栈上,实际数据存储在堆上):类(class),字符串(string)、数组、接口(interface)、delegate委托、object

 8. string str=" ";和string str=null的区别?

    前者分配长度为空字符串的内存空间,后者是不分配内存空间的。

本文由作者原创,如有引用、转载请注明出处。(如有不正之处,欢迎指出,相互交流,谢谢!)

转载于:https://www.cnblogs.com/chujing/articles/6554948.html

相关文章:

  • C#的Enum—枚举
  • python 常用模块
  • 比较有用的枚举方法
  • 长训总结
  • 地形编辑工具
  • 怎么在企业管理器中得到执行一个select语句的毫秒级时间
  • Wireshark抓包过滤
  • 关于Remoting的个人使用心得
  • 工作不顺心怎么办?——Leo网上答疑(57)
  • 操作系统版本
  • SQL中 NVARCHAR 和 VARCHAR 两者之间的优势与劣势
  • 学习进度条-第四周
  • OEM界面乱码
  • HTTP简介
  • proc 动态游标前3种方式的使用(第四种就是sqlda方式)
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • Babel配置的不完全指南
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • ES6 学习笔记(一)let,const和解构赋值
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • IDEA 插件开发入门教程
  • Java 网络编程(2):UDP 的使用
  • JavaScript HTML DOM
  • Javascript设计模式学习之Observer(观察者)模式
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • js继承的实现方法
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • log4j2输出到kafka
  • node和express搭建代理服务器(源码)
  • PermissionScope Swift4 兼容问题
  • React16时代,该用什么姿势写 React ?
  • spring security oauth2 password授权模式
  • Swift 中的尾递归和蹦床
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 初识 beanstalkd
  • 给Prometheus造假数据的方法
  • 基于web的全景—— Pannellum小试
  • 两列自适应布局方案整理
  • 微信公众号开发小记——5.python微信红包
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • Android开发者必备:推荐一款助力开发的开源APP
  • Spring Batch JSON 支持
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #AngularJS#$sce.trustAsResourceUrl
  • #pragam once 和 #ifndef 预编译头
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (02)vite环境变量配置
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (剑指Offer)面试题41:和为s的连续正数序列