C# 组件(Assembly) 中的 Version 和 Runtime Version

组件由.exe或者.dll文件来实现

组件的版本号

每个组件有一个版本号作为它的身份的一部分。比如,两个有着不同版本号的组件在运行时被认为是完全不同的两个组件。版本号由四个部分组成:

<major version>.<minor version>.<build number>.<revision>

例如,版本号1.5.1254.0代表1是主要版本号,5是小版本号,1254是内部版本号,0是调整版本号。

组件的运行时版本号

运行时版本是这个组件运行时所需要的CLR版本(通常是最小版本)


C#

这篇文章: 有用 无用
创建 2018-05-02 09:28:35 / 更新 2018-05-02 09:29:44

C# Tips

转化 char[] 到 string

char[] chars = {'H', 'e', 'l', 'l', 'o'};
string str = new String(chars);

按照空白分割字符串

  1. 用正则的Split

    string str = "   The quick brown        fox jumped    over the  lazy dog.";
    string[] = Regex.Split(str, @"\s+");
    
  2. 用Split函数

    string str = "   The quick brown        fox jumped    over the  lazy dog.";
    str.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)
    

定义一个Dictionary

private static readonly Dictionary<string, string> ErrorCodes
= new Dictionary<string, string>
{
    { "1", "Error One" },
    { "2", "Error Two" }
};

把一个字符串分解为字母

  1. 直接循环string

    string str = "hello";
    foreach (char c in str)
    {
        Console.WriteLine(c); 
    }
    
  2. 使用ToCharArray方法

    string str = "robot";
    char[] charArray = s.ToCharArray();
    

判断一个字符串是否包含另外一个字符串

  1. 用Contains方法

    string str = "I'm a robot";
    if (str.Contains("robot"))
        Console.WriteLine("{0} include robot", str);
    
  2. 用正则表达式

    string str = "I'm a robot";
    if (Regex.IsMatch(str, @"robot"))
            Console.WriteLine("{0} include robot", str);
    

TimeSpan转化为Double类型的秒数

    Stopwatch s = new Stopwatch();
    s.Start();            
    s.Stop();

    Console.WriteLine(s.Elapsed.TotalSeconds.ToString("0.00000000"));
    Console.WriteLine(s.Elapsed.TotalSeconds);

byte[] 转化为 string

    byte[] bytes = new byte[] { 65, 97 };
    string str = Encoding.UTF8.GetString(bytes);

C#

这篇文章: 有用 无用
创建 2018-05-01 10:20:12 / 更新 2018-05-10 06:08:37

C#中的正则表达式

第一个例子

using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string pattern = @"(\w+)\s(?:\1)";
        string input = "He said that was the The correct answer.";

        // input is null will cause null exception when Regex.Match
        if (input != null)
        {
            Match match = Regex.Match(input, pattern, RegexOptions.IgnoreCase);

            if (match.Success)
            {
                Console.WriteLine("Group1 {0}", match.Groups[1].Value);
            }
        }
    }
}
// The example displays the following output:
//       Group1 the, Group2 The
  • 首先要 using System.Text.RegularExpressions;

  • (\w+) 表示捕获一个或者多个字符,并且捕获它

  • \s 表示空白空间

  • (?:\1)(?:)表示这个分组不需要捕获,\1表示第一个捕获

  • Regex.Match(input, pattern, RegexOptions.IgnoreCase) 使用了静态正则表达式匹配,这样正则表达式会有一个缓存

  • match.Groups[1].Value 获取捕获的第一个分组,注意第一组的下标就是1

第二个例子

using System;
using System.Text.RegularExpressions;

public class Example
{
public static void Main()
{
    string url = "http://www.contoso.com:8080/letters/readme.html";

    Regex r = new Regex(@"^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/",
                        RegexOptions.None, TimeSpan.FromMilliseconds(150));
    Match m = r.Match(url);
    if (m.Success)
        Console.WriteLine(r.Match(url).Result("${proto}${port}")); 
}
}
// The example displays the following output:
//       http:8080
  • 建立Regex对象最多传3个参数,第一个是参数是匹配模式,第二个参数是匹配的可选项(忽略大小写之类的),第三个参数是匹配的超时时间。

  • (?<proto>\w+)可以给捕获的组命名,命名模式(?<name>subexpression)

  • [^/] 表示非正斜杠,[^/]+ 表示非一个或多个正斜杠,[^/]+?表示一个非贪婪匹配到?后紧跟的那个字符(这个例子中是:

  • \d+ 表示一个或者多个数字

  • (?<port>:\d+)? 表示给:和一个或者多个数字分组,组名叫port,最后的?表示这个组可以是零个或者一个


C#

这篇文章: 有用 无用
创建 2018-04-26 09:49:50 / 更新 2018-11-16 08:55:47