C#测试为null

C#测试为null,第1张

概述我正在使用C#编写一个简单的程序来读取Active Directory并显示 Windows窗体程序中AD字段中保存的值. 如果某个属性不存在则程序崩溃,下面是我的代码,如何在不对每个属性执行try / catch的情况下捕获并转移到下一个字段? DirectoryEntry usr = new DirectoryEntry("LDAP://" + domain, username, passwo 我正在使用C#编写一个简单的程序来读取Active Directory并显示 Windows窗体程序中AD字段中保存的值.

如果某个属性不存在则程序崩溃,下面是我的代码,如何在不对每个属性执行try / catch的情况下捕获并转移到下一个字段?

DirectoryEntry usr = new DirectoryEntry("LDAP://" + domain,username,password);DirectorySearcher searcher = new DirectorySearcher(usr);searcher.Filter = "(sAMAccountname=" + GlobalClass.strUsername + ")";searcher.CacheResults = false;searcher.SearchScope = SearchScope.Subtree;searcher.PropertIEsToload.Add("givenname");searcher.PropertIEsToload.Add("telephoneNumber");//program crashes here if telephoneNumber attribute doesn't exist.textBoxFirstname.Text = usr.PropertIEs["telephoneNumber"].Value.ToString();
解决方法 只检查usr.PropertIEs [“telephoneNumber”]将无法正常工作.您必须检查实际值.发生错误的原因是因为您在Value上调用ToString(),该值为null.

无论输入到集合索引器中的属性名称如何,user.PropertIEs将始终返回PropertyValueCollection.

var pony = usr.PropertIEs["OMG_PONIES"]; // Will return a PropertyValueCollectionvar value = pony.Value;                  // Will return null and not error

您需要检查值本身,通过null合并运算符的最佳方法:

textBoxFirstname.Text = (usr.PropertIEs["telephoneNumber"].Value                             ?? "Not found").ToString();
总结

以上是内存溢出为你收集整理的C#测试为null全部内容,希望文章能够帮你解决C#测试为null所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1224507.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存