C#:随笔

Posted yinguo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#:随笔相关的知识,希望对你有一定的参考价值。

生成二维码并显示

Visual Studio > 右击项目名 > Manage NuGet Packages... > 搜索Spire.Barcode并安装。当前版本是v3.5.0,VS用的是VS Community 2017 Version 15.9.12

// Program.cs中Main函数内添加如下代码,生成QR Code
using Spire.Barcode;
using System.Drawing;
static void Main(string[] args)

    //创建BarcodeSettings对象
    BarcodeSettings settings = new BarcodeSettings();         
    //设置条码类型为二维码
    settings.Type = BarCodeType.QRCode;
    //设置二维码数据
    settings.Data = "123456789";
    //设置显示文本
    settings.Data2D = "123456789";
    //设置数据类型为数字
    settings.QRCodeDataMode = QRCodeDataMode.Numeric;
    //设置二维码错误修正级别
    settings.QRCodeECL = QRCodeECL.H;
    //设置宽度
    settings.X = 3.0f;
    //实例化BarCodeGenerator类的对象
    BarCodeGenerator generator = new BarCodeGenerator(settings);
    //生成二维码图片并保存为PNG格式
    Image image = generator.GenerateImage();
    image.Save("QRCode.png"); // not mandatory


// Form1.cs,将生成的image参数传递给Form以便显示出来
public Form1(Image image) // add args image

    InitializeComponent(image); // parse image to form

        
// Form1.Designer.cs,添加pictureBox用于显示二维码
using System.Drawing; // add name space if report error
private void InitializeComponent(Image image) // parse image
this.pictureBox1.Image = image; // show QRCode
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; // AutoSize根据图片的大小自动扩展pictureBox

C#操作字符串

string.Format("https://www.baidu.com/s?wd=0_1", width, height)
str=str.Replace("abc","ABC");  // 如果字符串中有"abc"则替换成"ABC"
string str="123abc456"; int i=3;
str=str.Substring(0,i); // or  str=str.Remove(i,str.Length-i);  取字符串的前i个字符
str=str.Remove(0,i);  // or str=str.Substring(i);  去掉字符串的前i个字符
str=str.Substring(str.Length-i); // or str=str.Remove(0,str.Length-i);  从右边开始取i个字符
str=str.Substring(0,str.Length-i); // or str=str.Remove(str.Length-i,i);  从右边开始去掉i个字符
//判断字符串中是否有"abc" 有则去掉之
using System.Text.RegularExpressions;
string str = "123abc456";
string a="abc";
Regex r = new  Regex(a);
Match m = r.Match(str);
if (m.Success)
   //绿色部分与紫色部分取一种即可。
    str=str.Replace(a,"");
    Response.Write(str);
    string str1,str2;
    str1=str.Substring(0,m.Index);       str2=str.Substring(m.Index+a.Length,str.Length-a.Length-m.Index);
    Response.Write(str1+str2);

C#中的File类用法

File.Exists(@"路径"); //判断文件是否存在,返回一个bool值
File.Move(@"",@""); //剪切
File.Copy(Symblink + @"\\EFI\\Boot\\shel.efi", Symblink + @"\\EFI\\Boot\\bootx64.efi", true); //复制
File.Delete(@"",@""); //彻底删除
File.ReadAllLines(@""); //读取一个文本文件,返回一个字符串数组
string[] str = File.ReadAllLines(@"C:\\Users\\Administrator\\Destop\\aa.txt",Encoding.Default); // Encoding.Default使用系统默认编码
for(int i = 0; i < str.Length; i++)
     Console.WriteLine(str[i]); 
File.ReadAllText(@"");//读取一个文本文件,返回一个字符串
string str = File.ReadAllText(@"C:\\Users\\Administrator\\Destop\\aa.txt",Encoding.UTF8);//Encoding.UTF8使用UTF8编码
File.ReadAllBytes(@"");//读取一个文件,返回字节数组
byte[] bt = File.ReadAllBytes(@"C:\\Users\\Administrator\\Destop\\aa.txt"); //将byte数组解码成我们认识的字符串
for(int i = 0; i < bt.Length; i++)
     Console.WriteLine(byte[i].ToString()); 
File.WriteAllLines(@"");//将一串字符串数组写入到一个文本文件,会覆盖源文件。
File.WriteAllText(@"");//将一串字符串写入到一个文本文件中,会覆盖源文件。
File.WriteAllBytes(@"");//将一个字节数组写入到一个文本文件中,会覆盖源文件。
File.AddAllText(@"");//将一个字符串写入到一个文本文件中,不会覆盖源文件。
File.AddAllLines(@"");//……,不覆盖源文件。
File.AddAllBytes(@"");//……,不覆盖源文件。
//将一个任意类型的文件复制到其他位置 byte[] bt = File.ReadAllBytes(@"C:\\Users\\Administrator\\Destop\\aa.avi"); File.WriteAllBytes(@"D:\\new.avi",bt);
File只能操作小文件,操作大文件速度极慢

C#读写改XML

public static void WriteLogPathToDebugInfo()

    string debugxml =  Path.GetFullPath("../../") + @"Log\\DebugInfo.xml"; // C:\\Program Files (x86)\\AutoRI\\Log\\DebugInfo.xml
    if (!File.Exists(debugxml)) // XML不存在,创建
    
        Console.WriteLine(string.Format("Not find 0, create it", debugxml));
        XmlDocument xmlDoc = new XmlDocument(); // 创建XmlDocument对象
        XmlDeclaration xmlSM = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null); // XML的声明 
        xmlDoc.AppendChild(xmlSM); // 追加xmldecl位置
        XmlElement xml = xmlDoc.CreateElement("", "debuginfo", ""); // 添加一个名为debuginfo的根节点
        xmlDoc.AppendChild(xml); // 追加debuginfo的根节点位置
        XmlNode gen = xmlDoc.SelectSingleNode("debuginfo"); // 添加另一个节点,与debuginfo所匹配,查找
        XmlElement zi = xmlDoc.CreateElement("name"); //添加一个名为的节点   
        zi.SetAttribute("type", "BurnIn Test"); //节点的属性
        XmlElement x1 = xmlDoc.CreateElement("logpath");
        x1.InnerText = Path.GetFullPath("../../") + @"Log\\BurnInTest.log"; //InnerText:获取或设置节点及其所有子节点的串连值
        zi.AppendChild(x1); //添加到节点中
        gen.AppendChild(zi);//添加到节点中   
        xmlDoc.Save(debugxml);//"debuginfo.xml");
    
    else // XML已经存在,如查找到则修改并置flag
    
        bool findnode = false;
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(debugxml);

        XmlNodeList nodeList = xmlDoc.SelectSingleNode("debuginfo").ChildNodes;//获取Employees节点的所有子节点
        foreach (XmlNode xn in nodeList)//遍历所有子节点 
        
            XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型 
            if (xe.GetAttribute("type") == "BurnIn Test")//如果type属性值为“BurnIn Test” 
            
                //xe.SetAttribute("type", "3D Mark11_M");//则修改该属性为“update张三”
                XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点 
                foreach (XmlNode xn1 in nls)//遍历 
                
                    XmlElement xe2 = (XmlElement)xn1;//转换类型 
                    if (xe2.Name == "logpath")//如果找到 
                    
                        xe2.InnerText = Path.GetFullPath("../../") + @"Log\\BurnInTest.log";//则修改
                        Console.WriteLine("Find " + debugxml + @" and BurnIn Test node, write its logpath to C:\\BurnIn_Logs\\BIT.log");
                        findnode = true; 
                    
                
            
        
        if (findnode == false) // 找不到此Node,添加
        
            Console.WriteLine("Find " + debugxml + " But NOT find BurnIn Test node, create it and append logpath");
            XmlNode root = xmlDoc.SelectSingleNode("debuginfo"); // 查找 
            XmlElement xe1 = xmlDoc.CreateElement("name"); // 创建一个节点 
            xe1.SetAttribute("type", "BurnIn Test"); // 设置该节点genre属性 
            XmlElement xesub1 = xmlDoc.CreateElement("logpath");
            xesub1.InnerText = Path.GetFullPath("../../") + @"Log\\BurnInTest.log"; // 设置文本节点 
            xe1.AppendChild(xesub1); // 添加到节点中 
            root.AppendChild(xe1); // 添加到节点中 
        
        xmlDoc.Save(debugxml); // 保存。
    

C#获取ini文件中全部Section,获取Section下全部Key

using System.Runtime.InteropServices;
[DllImport("kernel32", EntryPoint = "GetPrivateProfileString")]
private static extern uint GetPrivateProfileStringA(string section, string key, string def, Byte[] retVal, int size, string filePath);

static void Main(string[] args)

    string[] sections = ReadSections(@"C:\\Users\\yinguo.li.LCFC\\Desktop\\aa\\aa\\bin\\Debug\\Modules.ini").ToArray();
    string[] keys = ReadKeys("Thermal_TAT", @"C:\\Users\\yinguo.li.LCFC\\Desktop\\aa\\aa\\bin\\Debug\\Modules.ini").ToArray();
    foreach (string section in sections)
        Console.WriteLine(section);
    foreach (string key in keys)
        Console.WriteLine(key);


public static List ReadSections(string iniFilename)

    List result = new List();
    Byte[] buf = new Byte[65536];
    uint len = GetPrivateProfileStringA(null, null, null, buf, buf.Length, iniFilename);
    int j = 0;
    for (int i = 0; i < len; i++)
        if (buf[i] == 0)
        
            result.Add(Encoding.Default.GetString(buf, j, i - j));
            j = i + 1;
        
    return result;


public static List ReadKeys(string SectionName, string iniFilename)

    List result = new List();
    Byte[] buf = new Byte[65536];
    uint len = GetPrivateProfileStringA(SectionName, null, null, buf, buf.Length, iniFilename);
    int j = 0;
    for (int i = 0; i < len; i++)
        if (buf[i] == 0)
        
            result.Add(Encoding.Default.GetString(buf, j, i - j));
            j = i + 1;
        
    return result;

C#增删数组

string[] DiskArray = Output.Split('\\n');
List list = DiskArray.ToList();
List NewList = new List();
NewList.Add(line);
DiskArray = NewList.ToArray();

以上是关于C#:随笔的主要内容,如果未能解决你的问题,请参考以下文章

随笔C#高级编程(第七版)

C#中4个访问修饰符(随笔)

缓存池随笔

C# 事件

Java初学随笔

AssetBunlde打包随笔