gpt4 book ai didi

c# - Obsolete 属性是否仅在编译时检查?

转载 作者:可可西里 更新时间:2023-11-01 08:38:23 27 4
gpt4 key购买 nike

我想知道过时的属性是否只在运行时检查?

假设您有两个程序集。程序集 A 使用程序集 B 中的方法。之后我们将程序集 B 中的方法标记为过时,这会在编译程序集 A 时导致编译时错误。

到目前为止没有问题,但问题是旧程序集 A 是否继续与新程序集 B 一起工作?谢谢

最佳答案

这取决于你在做什么。 [Obsolete] 属性主要在编译时使用,但请注意运行时的某些部分在存在时具有不同的行为(见下文)。它可能会导致问题,即使对于未重建的现有代码也是如此,因此我们必须得出结论,NO[Obsolete] 仅在编译时间。

例如,下面的代码将写成Foo而不是Bar:

using System;
using System.Xml.Serialization;
public class Data
{
public int Foo { get; set; }
[Obsolete] public int Bar {get;set;}

static void Main()
{
var data = new Data { Foo = 1, Bar = 2 };
new XmlSerializer(data.GetType()).Serialize(Console.Out, data);
}
}

(XmlSerializer 也是一个运行时 - 不是编译器的一部分)

关于c# - Obsolete 属性是否仅在编译时检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2928814/

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