gpt4 book ai didi

C# 测试 null

转载 作者:行者123 更新时间:2023-11-30 13:20:52 25 4
gpt4 key购买 nike

我正在使用 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 PropertyValueCollection
var value = pony.Value; // Will return null and not error

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

textBoxFirstName.Text = (usr.Properties["telephoneNumber"].Value 
?? "Not found").ToString();

关于C# 测试 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3771223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com