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#项目中总结的更多相关文章

  1. 《AndroidStudio每日一贴》2.高速查看项目中近期的变更

    <AndroidStudio每日一贴>2.高速查看项目中近期的变更 高速查看项目中近期的变更,使用快捷键: option + shift +c 很多其它有用技巧请查看<Android ...

  2. javaWeb项目中Web.xml的基本配置

    这个地址写的非常好 ,欢迎大家访问 Å:http://www.cnblogs.com/hxsyl/p/3435412.html 一.理论准备 先说下我记得xml规则,必须有且只有一个根节点,大小写敏感 ...

  3. JavaWeb 项目中的绝对路径和相对路径以及问题的解决方式

    近期在做JavaWeb项目,总是出现各种的路径错误,并且发现不同情况下 /  所代表的含义不同,导致在调试路径上浪费了大量时间. 在JavaWeb项目中尽量使用绝对路径  由于使用绝对路径是绝对不会出 ...

  4. android 项目中使用对话框统一封装

    近期在做拼车项目中使用到了一些对话框,而且在非常多地方都使用到了,既然非常多地方使用到,那么肯定要封装一下,

  5. ios -Unity3D的EasyAR集成到已经有项目中。

    近期 在做AR这一块,用EasyAR集成到iOS端,由于现在到项目已经上线,下一版本要做一个AR功能,于是迫于需求需要,自己研究和翻阅读好多集成到资料. 通过整理分出几个重要到模块,其中在这里指出Xc ...

  6. TypeScript在react项目中的实践

    前段时间有写过一个TypeScript在node项目中的实践. 在里边有解释了为什么要使用TS,以及在Node中的一个项目结构是怎样的. 但是那仅仅是一个纯接口项目,碰巧赶上近期的另一个项目重构也由我 ...

  7. Qt Creator项目中使用qss

    近期学习qt .使用的编译器是qt creator ,学习过程中遇到的题就是 怎样将程序中将要用到的.qss 文件静态编译到.exe程序中,而不是在程序执行时动态加载.动态加载的最大问题在于一旦.qs ...

  8. VisualGDB系列11:Linux C++项目中使用外部Linux库

    根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 在<使用VS创建Linux静态库和 ...

  9. 如何在手机项目中使用rem单位

    rem这是个低调的css单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我对rem综合评价是用来做web app它绝对是最合适的人选之一. ...

随机推荐

  1. 抽象和封装_JAVA_OOP

    很久没做笔记了,没有以前的刚开始学习软件时候的热情了.包括几年前U盘损坏,数据丢失,通过数据恢复,也只是找回一些零星的碎片. 现在就抽时间把以前的技术笔记找回来,这十条记录在电脑上显示的最后修改日期为 ...

  2. Facade(外观)-对象结构型模式

    1.意图 为子系统中的一组接口提供一个一致的接口,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 2.动机 将一个系统划分成若干子系统有利于降低系统的复杂性.一个常见的设计目 ...

  3. android中string.xml中%1$s、%1$d等的用法

    今天在研究前辈写的代码的时候,突然发现string里面出现了<stringname="item_recent_photo">最近拍摄%1$s</string> ...

  4. 足球游戏AI_资料收集

    实况足球中文官网 浅谈足球游戏的人工智能 用遗传算法加强足球游戏的人工智能 足球规则图解 守门员的技巧你知道吗? 教你足球守门员守门技术练习方法和技巧 足球守门员规则 判断点球方向

  5. 使用UDP协议与韩国OACIS压机通讯

    最近一个项目需要发送SN给OACIS, 研究了一下OACIS文档, 从文档中可以看出,传输协议只能使用UDP,切传输命令为>SN1; + SN  + ; + LF LF的定义在Linux和Uni ...

  6. python学习之——splinter介绍

    Splinter是什么: 是一个用 Python 编写的 Web 应用程序进行验收测试的工具. Splinter执行的时候会自动打开你指定的浏览器,访问指定的URL,然后你所开发的模拟的任何行为,都会 ...

  7. iOS设置导航栏标题

    方法一:在UIViewController中设置self.title. 方法二:设置self.navigationItem.titleView.

  8. 用POI读取具有任意合并单元的excel数据

    maven依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</ ...

  9. windows下搭建scrapywindows 7 (64) + python 3.5 (64)

    说明 之前在 window 10 (64) + python 3.5 (64) 环境下就已经成功安装了 scrapy,当然也费了不少周折. 由于近日将系统换回 windows 7 (64),再安装 s ...

  10. 深入理解php底层:php生命周期 [转]

    1.PHP的运行模式: PHP两种运行模式是WEB模式.CLI模式.无论哪种模式,PHP工作原理都是一样的,作为一种SAPI运行. 1.当我们在终端敲入php这个命令的时候,它使用的是CLI. 它就像 ...