gpt4 book ai didi

c# - 创建编译错误而不是运行时错误

转载 作者:太空宇宙 更新时间:2023-11-03 20:21:39 25 4
gpt4 key购买 nike

我的代码需要设置我的类的一个字段,但我希望该字段只设置一​​次。如果开发人员试图重置/更改它,我理想情况下希望编译器告诉我们,而不是得到运行时错误。这可能吗?

帮助解释的代码

internal class Message
{
private string title = string.Empty;

public string Title
{
get { return title; }
set
{
if (string.IsNullOrEmpty(title))
title = value;
else
throw new Exception("Title can only be set once!");
}
}
}

如您所见,上面的代码会抛出一个异常,但这是一个运行时错误。尽管此处的示例相当简单,但编写编译器错误或警告消息的概念可能会非常有益。

最佳答案

您要求的是自定义编译器规则,AFAIK 是不可能的。 IMO 你有两个选择,一个是让它成为构造函数的一部分,这样它就只能被设置一次,例如

internal class Message
{
public Message(string title)
{
Title = title;
}

public string Title { get; private set; }
}

另一个是保持原样,但是抛出一个更合适的异常,例如

internal class Message
{
private string title = string.Empty;

public string Title
{
get { return title; }
set
{
if (string.IsNullOrEmpty(title))
title = value;
else
throw new InvalidOperationException("Title can be set only once!");
}
}
}

无论哪种方式,Title 属性只会被设置一次。

关于c# - 创建编译错误而不是运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13119583/

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