我即将使用Data.Annotations库和[Range(1,int.maxValue)]属性。我正在讨论 int.maxValue使用,因为每个类我都会有很多这样的属性,而且我不想添加到内存 int。每次调用它时都是maxValue。
我猜测它不是重复的值,因为 int是一个结构,而CLR只会存储一个指向堆中值的链接。我是对的吗?
答案 0 :(得分:0)
所以,每次调用int.MaxValue时 - 我都会分配额外的4 堆中的字节,对吧?
实际上,当您将int.MaxValue
作为整个属性的参数时,它会分配内存。由于值类型是按值传递的,因此它们被复制而不是创建对同一对象的引用。
public void X(int a)
{
}
X(int.MaxValue); // copy, copy, copy, copy!