我如何声明一个名称为静态的类

Posted

技术标签:

【中文标题】我如何声明一个名称为静态的类【英文标题】:How can i declare a class having name static 【发布时间】:2018-05-28 09:07:02 【问题描述】:

我重命名了一个名为 static 的类,我有编译时错误

public class static
    

    

错误 CS0116 命名空间不能直接包含字段或成员等成员

【问题讨论】:

使用转义@static 来使用关键字作为标识符(但不建议这样做,使用其他类名)。 如果你喜欢这个名字,请使用public class Static 。作为奖励,它还将遵循标准 C# 命名类约定(首字母大写)。 “这不公平”...好吧,这是一个见仁见智的问题(我没有投反对票),但是如果您将鼠标悬停在投票按钮上,您会看到它可以给出,因为“这个问题没有显示任何研究努力,不清楚或没有用”。就个人而言,我认为您可能已经搜索了错误消息并至少找到了原因,并且可能找到了解决方案。所以也许投反对票的人认为你可以做更多的研究,我不知道。 你的努力在哪里?您已经逐字报告了错误,仅此而已。没有证据表明任何试图解释或修复它。即使是初学者,您仍然可以在网上或书籍中查找现有信息。我很感激您在搜索时并不总是确切地知道要输入什么,但有时这是一个反复试验的过程。无论如何,答案现在在下面,所以它有点没有实际意义。我只是想帮助您了解人们为什么会投票赞成和反对。 @JohnDoe 但问题是,如果您曾经在 Google 上搜索过如何转义信号词(与使用“/”声明文件路径相同),那么您需要以某种方式转义此信号序列它总是用@ 完成。这就是我们所说的,只是一些努力。关于这个特定主题有很多问题。 :-) 【参考方案1】:

使用保留关键字作为类名确实是个坏主意,但这里是这样做的方法

public class @static

    ....


//create a instance of class static
var temp = new @static();

【讨论】:

【参考方案2】:

你不知道的简短回答

关键字是预定义的、保留的标识符,具有特殊的 对编译器的意义。它们不能用作您的标识符 除非它们包含 @ 作为前缀。例如,@if 是有效的 标识符,但 if 不是因为 if 是关键字。中的第一张桌子 本主题列出了在任何部分作为保留标识符的关键字 一个 C# 程序。本主题中的第二个表列出了上下文 C#中的关键字。上下文关键字仅在 有限的程序上下文,可以用作除此之外的标识符 语境。通常,随着新关键字添加到 C# 语言中,它们 添加为上下文关键字以避免破坏程序 写在早期版本中。

你可以在这里找到更多信息

C# Keywords

但是你可以在 cmets 中指出使用前缀 @ 符号,但是这是严重的代码异味

【讨论】:

以上是关于我如何声明一个名称为静态的类的主要内容,如果未能解决你的问题,请参考以下文章

为啥静态成员函数只能在类定义中声明为静态,而不能在其自己的定义中声明?

这是啥意思:可序列化的类没有声明一个静态的最终 serialVersionUID 字段? [复制]

Applet(未声明类型为long的静态最终serialVersionUID字段)

Java基础(内部类和静态内部类)

java 内部类和静态内部类的区别

Java的静态成员类