C#中(StorageBlobCreatedEventData)强制类型转换的括号作用疑问
解答
你看到的把类名放在括号里的写法,是C#的显式强制类型转换固定语法。
为什么要这么写?
EventGridEvent的Data属性被设计为object类型,目的是兼容所有不同事件类型的负载数据,你直接使用这个属性的话,只能调用object类自带的ToString()、Equals()等通用方法,没法访问存储Blob创建事件特有的属性,比如Blob地址、文件类型、文件大小这些。- 你前面已经通过
is关键字确认了当前Data的运行时类型确实是StorageBlobCreatedEventData,所以通过(目标类型)待转换变量的语法,就能把通用的object类型实例,转换成你需要的具体业务类型,后续就可以正常访问该类型的所有专属成员了。
优化写法参考
C# 7.0及以上版本支持模式匹配写法,可以把类型判断和转换合并为一步,不需要单独写强转语句:
if (eventGridEvent.Data is StorageBlobCreatedEventData eventData) { // 此处直接使用eventData即可 log.LogInformation($"创建的Blob地址:{eventData.Url}"); }
内容的提问来源于stack exchange,提问作者bjk
相关产品推荐
相关产品推荐

