Path.Combine是否曾在.net中进行网络呼叫?

jus*_*ase 6 .net c# networking uri filepath

我认识的人声称它确实存在并且我正在反编译System.IO并查看Path类,我看不到它正在进行网络调用.唯一的嫌疑人是在NormalizePath中,它调用PathHelper,调用Win32Native.GetFullPathName.我不知道那是做什么的.

他们还声称System.Uri在创建时进行网络呼叫,我觉得非常不可思议.我无法相信它会这样做,因为这将是多么令人难以置信的缓慢以及这些方法的内在性.

任何人都可以开导我吗?

编辑: 事实证明,Path.Combine(p)它不会调用网络,但Path.GetFullName(p)可以.在你有一个具有短文件名的UNC路径的情况下("\\server\abcdef~1.txt"例如),它实际上将呼叫网络并尝试扩展路径,这让我大吃一惊.

Mic*_*eld 8

不,在Path.Combine给定路径分隔符的情况下,该方法只是执行所需的字符串操作以生成合法的路径字符串.它明确地并没有检查,看看是否你给它一个有效的路径,或者有效的文件名,或者别的什么东西.

.NET 4的参考源代码是可用的,如果你很好奇,你可以看到工作完全在托管代码中完成,没有本机方法调用,基本上是:

return path1 + (path1.EndsWidth("\") ? "" : "\") + path2;
Run Code Online (Sandbox Code Playgroud)

(当然,更加强大和灵活,但这就是主意.)

类似地,Uri类的构造函数主要进行字符串解析(虽然数量级比Path东西更复杂),但仍然没有我能看到的网络调用.

您也可以在C#应用程序中执行此类命令时,通过运行Wireshark等数据包捕获实用程序来自行检查.