【发布时间】:2016-12-03 12:52:22
【问题描述】:
[TL;DR]
为什么 const string SomeConstString = SomeEnum.OneEnumValue.ToString(); 在 C# 中是不允许的,即使它可以在编译时处理?
以下属性定义来自Azure WebJobs SDK;
[AttributeUsage(AttributeTargets.Parameter)]
[DebuggerDisplay("{DebuggerDisplay,nq}")]
public sealed class ServiceBusTriggerAttribute : Attribute
{
private readonly string _queueName;
private readonly string _topicName;
private readonly string _subscriptionName;
/// <summary>
/// Initializes a new instance of the <see cref="ServiceBusTriggerAttribute"/> class.
/// </summary>
/// <param name="queueName">The name of the queue to which to bind.</param>
public ServiceBusTriggerAttribute(string queueName)
{
...
}
代码的用法如下;
public static void GetBapulActivityFromTopic(
[ServiceBusTrigger("SomeConstString")] BrokeredMessage message,
TextWriter log)
{
...
}
在上述用法中,我知道"SomeConstString" 应该是const string 类型,因为值必须是编译时常量。
但是为什么SomeEnum.OneEnumValue.ToString() 不能是编译时常量呢?
【问题讨论】: