C# 这段代码在做什么-拆分字符串并创建GUID

C# 这段代码在做什么-拆分字符串并创建GUID,c#,.net,.net-3.5,C#,.net,.net 3.5,我正在试图理解一段源代码,但我目前无权构建/调试代码。有人能帮助解释下面代码的意图吗 拆分字符串和使用拆分字符串创建GUID的混合方式让我陷入了困境 string titleOfItem = "valuePassedAsParameter"; Guid itemId = new Guid(titleOfItem.Split(new string[] { "Approve ", "Decline "}, StringSplitOptions.RemoveEmptyEntries)[1]);

我正在试图理解一段源代码,但我目前无权构建/调试代码。有人能帮助解释下面代码的意图吗

拆分字符串和使用拆分字符串创建GUID的混合方式让我陷入了困境

string titleOfItem = "valuePassedAsParameter";    
Guid itemId = new Guid(titleOfItem.Split(new string[] { "Approve ", "Decline "}, StringSplitOptions.RemoveEmptyEntries)[1]);

假设您有一个字符串

"Something Approve {18e4ccaf-e2d7-476f-93b2-251dea286f65}"
然后

将生成字符串数组

["Something "], ["{18e4ccaf-e2d7-476f-93b2-251dea286f65}"]
然后[1]将接受第二项字符串化GUID

new Guid("{18e4ccaf-e2d7-476f-93b2-251dea286f65}")

将生成一个guid,其组成部分与解析的guid字符串一致

假设您有一个如下所示的字符串

"Something Approve {18e4ccaf-e2d7-476f-93b2-251dea286f65}"
然后

将生成字符串数组

["Something "], ["{18e4ccaf-e2d7-476f-93b2-251dea286f65}"]
然后[1]将接受第二项字符串化GUID

new Guid("{18e4ccaf-e2d7-476f-93b2-251dea286f65}")

将生成一个guid,其组成部分与解析的guid字符串一致

我假设valuePassedAsParameter是一个内部包含guid但表示为字符串的东西

因此,代码所做的是将该字符串拆分为两个关键字Approve和Decept,并删除空值,这意味着在拆分结束时,您将得到一个包含这些关键字之前或之后的所有字符串的数组,并且数组中不包括所有空字符串


因此,在这之后,代码获取[1]索引,它是数组中的第二个元素,并从中创建GUID。这就是为什么我假设字符串中有GUID的原因。我假设ValuePassedParameter中包含GUID,但表示为字符串

因此,代码所做的是将该字符串拆分为两个关键字Approve和Decept,并删除空值,这意味着在拆分结束时,您将得到一个包含这些关键字之前或之后的所有字符串的数组,并且数组中不包括所有空字符串


因此,在此之后,代码获取[1]索引,它是数组中的第二个元素,并从中创建GUID。这就是为什么我假设字符串中有GUID,而代码未编译。我无法从正在处理的VM复制它,因此我必须自由格式键入它。给我一秒钟…无意冒犯,但我很惊讶,有这么高的声誉分数,真的很难理解这两条线在做什么@dotnetkid是的,分裂的方法有点让我恶心。我没有写这段代码,我想我已经习惯了比这更干净的代码。我对它在做什么有一种很好的感觉,但它似乎太奇怪了;我想我会得到第二个意见。这将使输入的格式更加清晰,并提供更好的验证。该代码无法编译。我无法从正在处理的VM复制它,因此我必须自由格式键入它。给我一秒钟…无意冒犯,但我很惊讶,有这么高的声誉分数,真的很难理解这两条线在做什么@dotnetkid是的,分裂的方法有点让我恶心。我没有写这段代码,我想我已经习惯了比这更干净的代码。我对它在做什么有一种很好的感觉,但它似乎太奇怪了;我想我会得到第二个意见。将使输入的形成方式更加清晰,并提供更好的验证。抱歉,如果我吹毛求疵,不立即进行评论,我没有代表对您编写的代码进行评论:Approve{18e4ccaf-e2d7-476f-93b2-251dea286f65}。Splitnew string[]{Approve,dence},StringSplitOptions.RemoveEmptyEntries将生成一个类似[]的数组,[{18e4ccaf-e2d7-476f-93b2-251dea286f65}],但RemoveEmptyEntries将去掉空字符串,因此结果将只有一个元素[{18e4ccaf-e2d7-476f-93b2-251dea286f65}]抱歉,如果我吹毛求疵,不立即发表评论,我没有代表评论您编写的代码:Approve{18e4ccaf-e2d7-476f-93b2-251dea286f65}.Splitnew string[]{Approve,dence},StringSplitOptions.removemptyentries将生成一个类似[],[{18e4ccaf-e2d7-476f-93b2-251dea286f65}]但是RemoveEmptyEntries将去掉空字符串,因此结果将只有一个元素[{18e4ccaf-e2d7-476f-93b2-251dea286f65}]