.net 以这两种方式组合路径之间有什么区别?

.net 以这两种方式组合路径之间有什么区别?,.net,powershell,.net,Powershell,你能解释一下两者的区别吗 $attachment = [String]::Concat($workingDir,"\", $fileName) 及 在Powershell中组合路径时?Path.Combine方法在语义上可以识别文件夹路径。例如,如果$workingDir是“c:\”,则字符串.Concat示例将生成一个具有两个相邻反斜杠的路径。考虑一种情况,即$workingDir具有一个尾随反斜杠而$fileName具有一个前导反斜杠,例如: $workingDir = "C:\foo\"

你能解释一下两者的区别吗

$attachment = [String]::Concat($workingDir,"\", $fileName)


在Powershell中组合路径时?

Path.Combine方法在语义上可以识别文件夹路径。例如,如果
$workingDir
“c:\”
,则
字符串.Concat
示例将生成一个具有两个相邻反斜杠的路径。

考虑一种情况,即
$workingDir
具有一个尾随反斜杠而
$fileName
具有一个前导反斜杠,例如:

$workingDir = "C:\foo\"
$fileName   = "\bar.txt"
这两个命令将产生以下结果:

PS C:\> [String]::Concat($workingDir, "\", $fileName) C:\foo\\\bar.txt PS C:\> [IO.Path]::Combine($workingDir, $fileName) \bar.txt 示例(使用C#,但在任何调用程序中的输出都是相同的): PS C:\> [String]::Concat($workingDir, "\", $fileName) C:\foo\\\bar.txt PS C:\> [IO.Path]::Combine($workingDir, $fileName) \bar.txt PS C:\> Join-Path $workingDir $fileName C:\foo\bar.txt