c# - .net 中的类型安全是什么?

标签 c# .net

什么是类型安全?

这是什么意思,为什么重要?

最佳答案

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

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

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 中。自 StringInt32 派生(如 Object ) .但是,它会抛出 InvalidCastException。当您尝试设置 integer(int)integers[2]因为 String不能转换Int32 .

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

关于c# - .net 中的类型安全是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2437469/

相关文章:

c# - 比较同一列表中的多个项目

c# - 如何从 C# 调用 Win32API SetCommTimeouts?

c# - 解析查询WhereKey :MatchesQuery equivalent for . NET

.net - 如何在Windows Azure平台上开发Facebook应用程序?

c# - .NET Core 中的 *deps.json 文件

c# - 使用 .NET 为 Windows 应用商店应用程序上传文件

.net - CLR 错误 :8007000b

c# - 如何解码使用 encodeURIComponent() 在 JS 中编码的 HTML?

c# - 如何通过 HTTPS 实现 ServiceStack.net rest 调用?

c# - Xml Serializer 中的注释问题