gpt4 book ai didi

c# - 为什么 C# 数组类型 IsSerializable 属性为 True?

转载 作者:可可西里 更新时间:2023-11-01 07:44:40 26 4
gpt4 key购买 nike

我很好奇为什么 C# 数组的 IsSerializable 属性返回 true。数组没有任何 Serializable 属性,它们也没有实现 ISerializable 接口(interface),那么为什么要将 IsSerializable 属性设置为 ?

当我尝试下面的代码时,它在控制台中输出“True”:

Console.WriteLine (new string[0].GetType().IsSerializable);

输出是:

True

Try it online

我的 .NET 运行时版本是 3.5。

最佳答案

Arrays does not have any Serializable attribute and also they aren't implement ISerializable interface

Array 类,C# 数组的隐式基类,具有[SerializableAttribute]:

[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Array : ICloneable, IList, ICollection,
IEnumerable, IStructuralComparable, IStructuralEquatable

(reference)

似乎编译器将 [SerializableAttribute] 添加到数组类型本身

foreach (var a in typeof(string[]).GetCustomAttributes(false)) {
Console.WriteLine(a); // Prints "System.SerializableAttribute"
}

false 传递给 GetCustomAttributes确保只返回此类的属性,而不返回其基类的属性。

Demo.

关于c# - 为什么 C# 数组类型 IsSerializable 属性为 True?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46059328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com