Has*_*yat 15 .net c# arrays serialization
我只是好奇为什么C#数组返回true
他们的IsSerializable
属性.数组没有任何Serializable
属性,并且它们也没有实现ISerializable
接口,那么为什么IsSerializable
属性设置为true
?
当我尝试下面的代码时,它在控制台中输出"True":
Console.WriteLine (new string[0].GetType().IsSerializable);
Run Code Online (Sandbox Code Playgroud)
输出是:
True
Run Code Online (Sandbox Code Playgroud)
我的.NET运行时版本是3.5.
das*_*ght 21
Arrays
没有任何Serializable
属性,也没有实现ISerializable
接口
Array
class,C#数组的隐式基类,具有[SerializableAttribute]
:
[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Array : ICloneable, IList, ICollection,
IEnumerable, IStructuralComparable, IStructuralEquatable
Run Code Online (Sandbox Code Playgroud)
看来编译器也会添加[SerializableAttribute]
到数组类型本身
foreach (var a in typeof(string[]).GetCustomAttributes(false)) {
Console.WriteLine(a); // Prints "System.SerializableAttribute"
}
Run Code Online (Sandbox Code Playgroud)
传递false
以GetCustomAttributes
确保仅返回此类的属性,而不返回其基类的属性.