.net 中什么是类型安全?

2024-04-26

什么是类型安全?

它是什么意思以及为什么它很重要?


如果你问“类型安全”的概念是什么general意味着,它是代码的特征,允许开发人员确定某个值或对象将表现出某些属性(即属于某种类型),以便他/她可以以特定方式使用它,而不必担心意外或未定义的情况行为。

例如,在 C# 中,您可以说ArrayList类是not类型安全,因为它可以存储任何物体,这意味着您可以执行如下操作:

var integers = new ArrayList();
integers.Add(1);
integers.Add(2);
integers.Add("3");

for (int i = 0; i < integers.Count; ++i) {
    int integer = (int)integers[i];
    // do something
}

上面的代码会编译,因为值“3”,即使它是一个字符串而不是一个整数,也可以合法地添加到一个ArrayList since String派生(如Int32) from Object。但是,它会抛出一个InvalidCastException当你尝试设置时integer to (int)integers[2]因为一个String不可能是cast to an Int32.

另一方面,List<T> class is类型安全的原因恰恰相反——即上面的代码将not编译如果integers were a List<int>。开发人员从类型安全中访问的任何值List<int>你可以certain is an int(或任何相应的T适用于任何通用的List<T>);因此,您可以确信您将能够执行诸如强制转换之类的操作int(显然)或者说,long.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.net 中什么是类型安全? 的相关文章

随机推荐

  • R:查找另一个向量中向量的索引(如果存在)

    我想知道一个向量在另一个向量中的起始索引 例如 对于c 1 1 and c 1 0 0 1 1 0 1 将会是4 我想寻找什么重要的东西exactly相同的向量 因此 对于c 1 1 inside c 1 0 1 1 1 0 这是假的c 1
  • 带时区的日期时间字符串

    我有一个以通用时间 UTC 形式存储的 DateTime 值2010 01 01 01 01 01 我想以这种格式在 EST 中显示它2010 01 01 04 01 01GMT 04 00 但是时区的 K 格式化程序在 ToString
  • Android Espresso AppNotIdleException 与 Facebook SDK

    当我在清单中添加 Facebook SDK 和 applicationId 时 Espresso 测试不起作用 如果类中有多个测试方法 则错误仅发生在第一个测试上
  • 非矩形形状(五边形或六边形)内的文本

    我想要达到的效果 非常相似的问题 如何将文本环绕在非矩形图像周围 https stackoverflow com questions 9129862 how can i wrap text around a non rectangular
  • Mandrill:渲染模板时条件合并标签不起作用

    我尝试过条件合并标签 即类似 如果 MY NUM 0 发送电子邮件时它按预期工作 但是 当我尝试渲染模板时 给定相同的 global merge vars 和 merge vars IF 合并标记块中的所有内容都保持空白 我得到了渲染的 h
  • 如何在 R 中的绘图区域之外画一条线或添加文本?

    感谢您的阅读 我发现我无法在绘图区域之外绘制线 点或添加文本 如果我从绘图内部 轴内 区域到 xlab 主标题区域绘制一条线 则仅显示绘图内的部分 在多重绘图 mfrow 中 线 点只会在最后一个活动绘图内绘制 plot 0 l locat
  • 在核心文本中查找文本的边界矩形

    我试图在核心文本中找到一行文本的边界 为简单起见 假设它只有一个字符 目前我正在使用以下方法 line CTLineCreateWithAttributedString attrString rect CTLineGetImageBound
  • iTunes Music Store Link Maker — 如何在我的应用程序中进行搜索?

    我正在编写一个音乐参考应用程序 并且对于每张专辑 从 last fm 中提取 都希望链接到 ITMS 如果专辑在商店中 iTunes 链接制作器网络工具http apple com itunes linkmaker http apple c
  • Vuetify - v-data-table 的布局问题

    我的 v 卡上有一个 Vuetify v data table 但我无法获得正确的布局 所以它是一个可配置的 2x2 布局 并且应该使用分页 无滚动
  • 在 iOS 6.0 中设置状态栏方向[重复]

    这个问题在这里已经有答案了 可能的重复 setStatusBarOrientation 动画 在 iOS 6 中不起作用 https stackoverflow com questions 12563954 setstatusbarorie
  • 如何用不同颜色绘制一条线

    我有两个列表如下 latt 42 0 41 978567980875397 41 96622693388357 41 963791391892457 41 972407378075879 lont 66 706920989908909 66
  • 自然排序 WordPress 帖子标题(按字母顺序和数字)?

    有没有可能的方法按标题对新的 WordPress 帖子查询进行排序 但按数字而不是按字母顺序排序 我有一些标题有很多按字母顺序相同的名称 然后有一个数字 所以当然 例如 WordPress 正在放置title12在之前title1 args
  • 使用 Orchard HQL API 将非 ContentPart 表连接到 ContentPart 表

    我正在尝试使用 Orchard HQL API 在两个不同的表之间执行简单的联接 问题是其中一个表不是 ContentPartTable 这可能吗 这是常规 SQL 中的样子 Select From ItemPartRecord Join
  • 如何使自定义 django 迁移可逆?

    我最初的问题是 给定一个包含 60M 行的数据库表 我需要将字段类型从布尔字段转换为整数字段 我想为此创建一个自定义的 django 迁移 如果您有比这更好的方法 请告诉我 如下所示 def make changes apps schema
  • HTML 页面中的目录选择器

    如何在 html 页面中创建目录选择器 如果我使用输入文件元素 我只能选择文件 但我需要选择目录 我需要这样做 因为用户应该在他的计算机内选择正确的路径 有什么解决办法吗 试试这个 我想它会对你有用
  • 有没有C语言的跨平台GUI库? [复制]

    这个问题在这里已经有答案了 可能的重复 GUI 应用程序的跨平台 C 库 https stackoverflow com questions 2018850 cross platform c library for gui apps 有没有
  • XMPP会议室邀请函

    在我的聊天应用程序中 我想实现群聊功能 同样 我想创建房间并向我的朋友发送加入房间的邀请 这是我加入并邀请朋友进入房间的代码 创建房间 Create Room btn CreateRoom Button findViewById R id
  • LLDB 给出局部变量的“使用未声明的标识符”错误

    在以下函数中 我无法在 LLDB 中看到 recordMap for 循环打印键 recordType 设置正确 但 p recordMap 给出错误 使用未声明的标识符 我可以在 LLDB 中很好地看到变量 recordType 所以我处
  • python 和 pandas - 如何使用 iterrows 访问列

    wowee 如何将 iterrows 与 python 和 pandas 一起使用 如果我进行行迭代 我是否应该无法使用 row COL NAME 访问 col 以下是列名称 print df Int64Index 152 entries
  • .net 中什么是类型安全?

    什么是类型安全 它是什么意思以及为什么它很重要 如果你问 类型安全 的概念是什么general意味着 它是代码的特征 允许开发人员确定某个值或对象将表现出某些属性 即属于某种类型 以便他 她可以以特定方式使用它 而不必担心意外或未定义的情况