c# - 在 C# 中使用 @keyword——坏主意?

标签 c# .net naming-conventions keyword

在我的命名约定中,我使用 _name 作为私有(private)成员变量。我注意到如果我使用 ReSharper 自动生成一个构造函数,如果成员是关键字,它将生成一个转义关键字。例如:

class IntrinsicFunctionCall
{
    private Parameter[] _params;
    public IntrinsicFunctionCall(Parameter[] @params)
    {
        _params = @params;
    }
}

这通常被认为是不好的做法还是可以的? @params 和@interface 经常发生这种情况。

编辑:这实际上并没有为变量名添加前缀。如果从不同的 .NET 语言(即 F#)访问该变量,它将只是 params。事实上,在 C# 中,如果您编写 @x,它完全等同于 x

最佳答案

使用语言关键字作为标识符会影响可读性。诚然,正确的语法高亮会有所帮助,但最好不要只依赖编辑器功能。

考虑以下(夸张地不可读,显然 :-))代码:

interface IInterfaceFactory<T>
{
   T CreateInstance(params object[] @params);
}

class SomeClass
{
    IMyOtherInterface _interface;

    public IMyOtherInterface Interface
    {
        get { return _interface; }
    }

    public SomeClass(params object[] @params)
    {
        SomeInterface<IMyOtherInterface> interfaceFactory = new SomeInterface<IMyOtherInterface>();
        IMyOtherInterface @interface = interfaceFactory.CreateInstance(@params);
        if (@interface->IsValid())
        {
            _interface = @interface;
        }
        else
        {
            _interface = interfaceFactory.CreateInstance();
        }
    }
}

关于c# - 在 C# 中使用 @keyword——坏主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2597824/

相关文章:

.net - ADO.net 关闭 TCP 连接的速度不够快

objective-c - 我应该如何避免这种内存警告?

c# - 局部 View 不刷新

c# - 如何签署 Visual Studio .msi 的安装文件

c# - xml转json后无法访问数据

c# - 处理负时间跨度

c# - 系统找不到进程启动中指定的文件异常

.net - C# : What would you name an IEnumerable class?

C# 代码分析不喜欢 protected 静态 s_Foo(CA1709、CA1707)

c# - 二进制数转十进制(效果不好,为什么?)