设置const字符串值匹配函数名称

时间:2019-05-21 04:21:40

标签: c# const declaration

有些函数可以通过名称调用其他函数(例如:Invoke)。

通常,我是这样使用的:

void Start()
{
    Invoke("SelfDestroy", 2);
}

public void CancelDestroy()
{
    CancelInvoke("SelfDestroy");
}

void SelfDestroy()
{
    Destroy(gameObject);
}

但是我是一个懒惰的人,所以我不想多次键入一个字符串(我可能会输入错误),所以我这样做是这样的:

const string SELF_DESTROY_METHOD = "SelfDestroy";

void Start()
{
    Invoke(SELF_DESTROY_METHOD, 2);
}

public void CancelDestroy()
{
    CancelInvoke(SELF_DESTROY_METHOD);
}

void SelfDestroy()
{
    Destroy(gameObject);
}

但是它仍然不满足我的需要,我希望常量字符串SELF_DESTROY_METHOD以编程方式与方法SelfDestroy匹配,因此,如果我更改方法SelfDestroy的名称,则值常量字符串SELF_DESTROY_METHOD会相应地自动更新。在C#中可以吗?

1 个答案:

答案 0 :(得分:0)

感谢塞巴斯蒂安·舒曼的comment,解决方案是nameof。 代码应该是

const string SELF_DESTROY_METHOD = nameof(SelfDestroy);

void Start()
{
    Invoke(SELF_DESTROY_METHOD, 2);
}

public void CancelDestroy()
{
    CancelInvoke(SELF_DESTROY_METHOD);
}

void SelfDestroy()
{
    Destroy(gameObject);
}

注意:我使用Unity并获得了脚本运行时版本.NET 3.5,所以出现了错误Feature 'nameof operator' is not available in C# 4. Please use language version 6 or greater.,因此我将脚本运行时版本升级到.NET 4.x,并且可以运行,请检查{ {3}},以获取更多信息。

相关问题