近期C#项目中总结
1. 读写文件操作 using (file = new System.IO.StreamReader(inputfile))
{
using (outfile = new System.IO.StreamWriter(outputfile))
{
try
{
while ((line = file.ReadLine()) != null)
{
/// do something
}
}
catch (Exception e)
{
...
}
}
} 2. 文件及文件夹的相关API 得到文件当前目录: string fileDir = System.IO.Path.GetDirectoryName(fileName);
得到当前文件的名称 System.IO.Path.GetFileNameWithoutExtension(fileName)
判断文件是否存在: System.IO.File.Exists(fileName)
判断文件夹是否存在: Directory.Exists(directory)
删除文件夹及子目录: Directory.Delete(directory, true);
新建文件夹: Directory.CreateDirectory(directory); 得到当前文件夹的所有子文件夹: System.IO.Directory.GetDirectories(directory)
得到当前文件夹下所有文件: System.IO.Directory.GetFiles(directory)
得到文件夹信息: DirectoryInfo di = new DirectoryInfo(fileDir);
文件夹的名字: di.Name
文件夹的上级文件夹名字: di.Parent.Name
得到文件的相关信息: FileInfo fileInfo = new FileInfo(fileName);
得到文件大小: fileInfo.Length
得到文件最后修改时间:fileInfo.LastWriteTimeUtc 3. 多线程的lock
public class TestMonitor
{
/// <summary>
/// lock
/// </summary>
private readonly object mlock = new object();
/// <summary>
/// test lock
/// </summary>
public void TestStatus()
{
bool taken = false;
try
{
Monitor.Enter(mlock, ref taken);
/// do something
}
finally
{
if (taken == true)
{
Monitor.Exit(mlock);
}
}
}
} 4. 程序中配置一个计时器类(Monitor),用于做运行时间测算:
this.beginTime = DateTime.UtcNow;
this.endTime = DateTime.UtcNow; this.duration = this.endTimeSpan.Subtract(this.beginTime);
5. 程序中配置一个日志类(Logger),用于记录程序运行异常及输出,而且最好可以把Logger类设置成统一接口,用于console和文本日志的输出
Logger.WriteLine(string, msgTag); 6. 字符串常量定义在前面,const或readonly
7. 项目中要有一个common settings 类,用于设置程序的各种参数值,Application.Properties.Settings.Default.xxx 8. SqlClient数据库总结: 1. Insert:
try
{
using (SqlConnection conn = new SqlConnection(this.connectionString))
{
using (SqlCommand cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = @"insert table values (@Test);";
cmd.Parameters.AddWithValue("@Test", "testData");
cmd.ExecuteNonQuery();
}
}
}
catch (Exception e)
{
throw e;
} 2. Build Connection String:
SqlConnectionStringBuilder connStringBuilder;
connStringBuilder = new SqlConnectionStringBuilder();
connStringBuilder.DataSource = this.dataSource;
connStringBuilder.InitialCatalog = this.databaseName;
connStringBuilder.Encrypt = true;
connStringBuilder.TrustServerCertificate = false;
connStringBuilder.UserID = this.userName;
connStringBuilder.Password = this.password;
this.connectionString = connStringBuilder.ToString();
3. Query:
SqlDataReader reader;
DataTable result = new DataTable(); try
{
using (SqlConnection conn = new SqlConnection(this.connectionString))
{
using (SqlCommand cmd = conn.CreateCommand())
{
conn.Open();
SqlCommand command = new SqlCommand(sqlcommand, conn);
reader = command.ExecuteReader();
result.Load(reader);
}
}
}
catch (Exception e)
{
throw e;
}
4. 最好建立一个通用的接口,可以给不同的应用使用同一个接口,比如insert的接口,需要统一。
近期C#项目中总结的更多相关文章
- 《AndroidStudio每日一贴》2.高速查看项目中近期的变更
<AndroidStudio每日一贴>2.高速查看项目中近期的变更 高速查看项目中近期的变更,使用快捷键: option + shift +c 很多其它有用技巧请查看<Android ...
- javaWeb项目中Web.xml的基本配置
这个地址写的非常好 ,欢迎大家访问 Å:http://www.cnblogs.com/hxsyl/p/3435412.html 一.理论准备 先说下我记得xml规则,必须有且只有一个根节点,大小写敏感 ...
- JavaWeb 项目中的绝对路径和相对路径以及问题的解决方式
近期在做JavaWeb项目,总是出现各种的路径错误,并且发现不同情况下 / 所代表的含义不同,导致在调试路径上浪费了大量时间. 在JavaWeb项目中尽量使用绝对路径 由于使用绝对路径是绝对不会出 ...
- android 项目中使用对话框统一封装
近期在做拼车项目中使用到了一些对话框,而且在非常多地方都使用到了,既然非常多地方使用到,那么肯定要封装一下,
- ios -Unity3D的EasyAR集成到已经有项目中。
近期 在做AR这一块,用EasyAR集成到iOS端,由于现在到项目已经上线,下一版本要做一个AR功能,于是迫于需求需要,自己研究和翻阅读好多集成到资料. 通过整理分出几个重要到模块,其中在这里指出Xc ...
- TypeScript在react项目中的实践
前段时间有写过一个TypeScript在node项目中的实践. 在里边有解释了为什么要使用TS,以及在Node中的一个项目结构是怎样的. 但是那仅仅是一个纯接口项目,碰巧赶上近期的另一个项目重构也由我 ...
- Qt Creator项目中使用qss
近期学习qt .使用的编译器是qt creator ,学习过程中遇到的题就是 怎样将程序中将要用到的.qss 文件静态编译到.exe程序中,而不是在程序执行时动态加载.动态加载的最大问题在于一旦.qs ...
- VisualGDB系列11:Linux C++项目中使用外部Linux库
根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 在<使用VS创建Linux静态库和 ...
- 如何在手机项目中使用rem单位
rem这是个低调的css单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我对rem综合评价是用来做web app它绝对是最合适的人选之一. ...
随机推荐
- java 线性规划 和lingo 比较
model:max=13*A+ 23*B; 5*A + 15*B <480 ; 4*A + 4 *B <160 ; 35* A + 20 *B <1190 ; end Variabl ...
- 纯js异步无刷新请求(只支持IE)
纯js异步无刷新请求 下载地址:http://pan.baidu.com/s/1slakL1F 所以因为非IE浏览器都禁止跨域请求,所以以只支持IE. <HTML> <!-- 乱码( ...
- 自动验证是ThinkPHP
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 数据验证有两种方式: 静态方式:在模型类里面通过$_validate属性定义验证规则 ...
- (转)modelsim10.0C编译ISE14.7的xilinx库(xilinx ip核)
原地址modelsim10.0C编译ISE14.7的xilinx库(xilinx ip核) 1.打开D:\Xilinx\14.7\ISE_DS\ISE\bin\nt64\compxlibgui.e ...
- Appium移动自动化测试之安装Android SDK和JDK
安装好Appium后,我们来继续安装Android SDK和JDK,JDK的安装以及环境变量配置这边就不再多说了,毕竟都是从事自动化的,这个应该是so easy.闲言少续,我们来操作Android S ...
- 解决UBUNTU update KEY错误的问题
114down voteaccepted Run the following in your terminal, sudo apt-key adv --keyserver keyserver.ubun ...
- VBA Excel 对比两列数据
Sub Md() ' ' Macro1 Macro ' 宏由 BX 录制,时间: 2012-6-8 ' 宏中的列数可以输入 A - IV 也可以输入 1-256 ' Dim i%, j%, i1%, ...
- Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试
本文是本人前一段时间做一个简单Java监控工具调研总结,主要包括VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,以及对Java微基准测试的简单介绍, ...
- [刘阳Java]_MyBatis_映射文件的常用标签总结_第5讲
MyBatis中常用标签的总结,简单给出自己的总结 MyBatis映射文件中的标签使用介绍1.<select>:用于编写查询语句用的标签 id:表示当前<select>标签的唯 ...
- poj 2104 K-th Number (划分树入门 或者 主席树入门)
题意:给n个数,m次询问,每次询问L到R中第k小的数是哪个 算法1:划分树 #include<cstdio> #include<cstring> #include<alg ...