一个基础问题

老蒋 2009-07-31 05:50:54
C# 代码:

Dictionary<int, ts_SSOWebSite> WebSiteInfo = HttpRuntime.Cache[ConfigurationManager.AppSettings["CacheKey"]as Dictionary<int, ts_SSOWebSite>;

这句话中类型转换怎么用 “as”关键字啊??

...全文
24 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hide1984 2009-07-31
  • 打赏
  • 举报
回复
As的效率比Is要高
因为我们在用Is做判断是否为某个类型的时候,如果返回True
往往下一句就是显示转换。
这样在Is中转换一次来做判断,下一句又做了一次转换,其实是做了两次转换。

而使用As,能转就转,不能转返回NULL,多好

这儿

Dictionary <int, ts_SSOWebSite> WebSiteInfo = HttpRuntime.Cache[ConfigurationManager.AppSettings["CacheKey"]as Dictionary <int, ts_SSOWebSite>;

if(WebSiteInfo != null)
{....}
else
{....}

江南小鱼 2009-07-31
  • 打赏
  • 举报
回复
as是类型转换运算符
表达式1 as 类型1;
如果表达式1是类型1类型,或者说继承于类型1,则返回类型1;否则返回null。
vrhero 2009-07-31
  • 打赏
  • 举报
回复
因为HttpRuntime.Cache[ConfigurationManager.AppSettings["CacheKey"]是个object类型,必须进行类型转换...又因为Dictionary<int,ts_SSOWebSite>类型是个引用类型,所以可以用as运算符转换...

至于as运算符,去看MSDN吧...
xuyanhaha123456 2009-07-31
  • 打赏
  • 举报
回复
(Dictionary <int, ts_SSOWebSite>)HttpRuntime.Cache[ConfigurationManager.AppSettings["CacheKey"];
这样也可以,不过这样如果转换失败会报异常,而as 不会,as转换失败为Null,所以下面应该判断下是否为Null,如果不为null,方可继续操作
markhao 2009-07-31
  • 打赏
  • 举报
回复
up

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧