加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#函数包含静态数据

发布时间:2020-12-15 18:16:12 所属栏目:百科 来源:网络整理
导读:在VB.Net中,我可以将函数中的变量声明为Static,如下所示: Function EncodeForXml(ByVal data As String) As String Static badAmpersand As Regex = new Regex("(?![a-zA-Z]{2,6};|#[0-9]{2,4};)") data = badAmpersand.Replace(data,"amp;") ''// more pro
在VB.Net中,我可以将函数中的变量声明为Static,如下所示:
Function EncodeForXml(ByVal data As String) As String
    Static badAmpersand As Regex = new Regex("&(?![a-zA-Z]{2,6};|#[0-9]{2,4};)")

    data = badAmpersand.Replace(data,"&")

    ''// more processing

    return data
End Function

请注意,我需要使用关键字Static而不是Shared,这是在VB.Net中表达这一点的常用方法.我怎么能在C#中做到这一点?我找不到它的等价物.

解决方法

哈!在发布问题时,我找到了答案!而不是谷歌搜索C#我应该一直在寻找有关VB.Net如何实现它的详细信息,并输入对我来说明显的问题.应用这种洞察力后,我发现了这个:
http://weblogs.asp.net/psteele/articles/7717.aspx

那篇文章解释说CLR并不真正支持它,VB编译器在方法的类中创建了一个静态(共享)变量.要在C#中做同样的事情,我必须自己创建变量.

更重要的是,它使用Monitor类来确保静态成员也是线程安全的.尼斯.

作为旁注:我希望很快就会在C#中看到这个.我从MS中观察到的一般策略是它不喜欢VB.Net和C#在功能上相距太远.如果一种语言具有另一种语言不支持的功能,则它往往成为下一版本语言团队的优先级.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读