新的运营商返回null - C#
问题描述:
我有这样的代码:新的运营商返回null - C#
public ObjectModel.Path GetPath(int pathid)
{
var path = this.DbContext.Paths.Find(pathid);
var app = GetApplicationById(path.ApplicationId.GetValueOrDefault());
var p = new Path
{
ApplicationId = path.ApplicationId,
Id = path.Id, Password = path.Password,
UserName = path.UserName,
LocalUrl = string.IsNullOrEmpty(path.LocalUrl) ? null : System.IO.Path.Combine(path.LocalUrl, app.Name)
};
return p;
}
变量p
总是null
。这是可行的吗?
这里是我谈论的打印屏幕:
我也尝试立即窗口,我得到这个:
p
不能因为即时通讯NULL创建它的一个新实例,而它的所有属性都不为空。我尝试清理项目,重新启动Windows,以管理员身份打开Visual Studio,但没有发生任何事情。
任何想法为什么?
该应用程序在.net 4.0,visual studio 2017 v15.2(26430.13)上运行。
答
您的变量不为空。
调试器默认尝试显示ToString()方法过载时的内容。在这种情况下,它显示(可以)Uri或FtpUrl值为null。
尝试单击变量上的小三角形时,将其悬停,然后您会看到变量的全部内容。
+3
好的答案,但有一个狡辩:调试器调用'ToString()',不管它是否被覆盖,*除非在类型上指定了'DebuggerDisplayAttribute'。 – Amy
它可能只是你的调试器。你正在调试优化(即释放模式)吗?为了测试理论,只需添加一个空检查并抛出一个新的'ArgumentNullException',如果在调试时得到异常,那么它是空的(*我怀疑它是不应该可能的*),如果不是,那么它就是您的调试器。 – Igor
@Igor不,im在调试模式下。 –
'Path'类是否重写'ToString',或者是否以名称以“Debugger”开头的任何属性装饰? – Amy