gpt4 book ai didi

c# - 如果字段的顺序不同,为什么编译器会为匿名类型生成不同的类

转载 作者:可可西里 更新时间:2023-11-01 08:20:58 25 4
gpt4 key购买 nike

我考虑过两种情况:

var a = new { a = 5 };
var b = new { a = 6 };
Console.WriteLine(a.GetType() == b.GetType()); // True

Ideone: http://ideone.com/F8QwHY

和:

var a = new { a = 5, b = 7 };
var b = new { b = 7, a = 6 };
Console.WriteLine(a.GetType() == b.GetType()); // False

Ideone: http://ideone.com/hDTcxX

问题是为什么字段顺序真的很重要?

这是否有任何原因,或者仅仅是因为它是(这就是设计)。

如果原因只是匿名类型不应该以这种方式使用并且您不应该诉诸 GetType,那么为什么编译器在第一种情况下重用单个类并且不只是为每个匿名类型声明生成一个新类?

最佳答案

所以设计决定的原因是ToString。匿名类型根据顺序返回不同的 string。阅读Eric Lippert's blog .

{ a = 5, b = 7 }
{ b = 7, a = 6 }

Demo

关于c# - 如果字段的顺序不同,为什么编译器会为匿名类型生成不同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16859594/

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