在C#中调用基类的构造函数

如果定义了一个子类,并希望将继承类的构造函数传递给基类的构造函数,应该怎么做呢?

错误的代码

例如,如果MyExceptionClass继承了Exception类,并希望将message参数传递给基类的构造函数,以下的代码显然是行不通的:

class MyExceptionClass : Exception
{
     public MyExceptionClass(string message, string extraInfo)
     {
         //This is where it's all falling apart
         base(message);
     }
}

将子类参数传递给基类构造函数

将构造函数修改为以下内容,以便正确调用基类的构造函数:

public class MyExceptionClass : Exception
{
    public MyExceptionClass(string message, string extrainfo) : base(message)
    {
        //other stuff here
    }
}

需要注意,构造函数不能任意的函数中被调用,这也就是为什么第一段代码出错的原因。

By Code问答

C#中怎样验证一个字符串为GUID?

什么是GUID?

GUID是Global Unique Identifier的缩写,为全局唯一标识符。注意读音为:/ˈɡuːɪd/或/ˈɡwɪd/。

GUID是一种由算法生成的唯一标识,通常表示成32个16进制数字(0-9,A-F)组成的字符串,如:{21EC2020-3AEA-1069-A2DD-08002B30309D},它实质上是一个128位长的二进制整数。GUID一词有时也专指微软对UUID标准的实现。

GUID的主要目的是产生完全唯一的数字。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID的总数也足够大,达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性是非常小的,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。(以上来自维基百科)

C#中验证GUID格式

.Net中定义了Guid类型,在.Net 4.0以后可以使用Guid类的TryParse方法来解析和验证一个string是否为一个合法的Guid串。
代码如下:

string guidStr = "df1fcfa9-866c-44a0-83fd-d35eb70d0980";
Guid guid;
var validateGuid = Guid.TryParse(guidStr, out guid);
// do more with validateGuid and guid

 

By Code问答