哪个关键字类可以在c#中使用?

时间:2012-05-01 22:28:27

标签: c#

我知道在c#中使用class关键字的2个地方。

  1. 在课堂宣言中
  2. 在通用约束中(类GenericClass,其中T:class)
  3. 但是有什么我错过的吗?这对我来说很重要,因为我正在编写一个程序,它会计算文件中的类。在msdn或C#规范中找不到任何信息。

    修改

    #if class
    partial class C<T> where T : class
    {
        // class!
        int @class = 123;
        string c = "class";
    }
    partial class C<T> where T : class {}
    #else
    partial class D {}
    partial class D {}
    partial class D {}
    #endif
    

    这是几个答案的积累。

6 个答案:

答案 0 :(得分:11)

只计算“class”的出现次数并不能告诉你文件中有多少个类:

#if FOO
partial class C 
{
    // class!
    int @class = 123;
    string c = "class";
}
partial class C {}
#else
partial class D {}
partial class D {}
partial class D {}
#endif

字符串“class”在那里出现八次,但文件只定义了一个类。

答案 1 :(得分:4)

您可能希望使用类似ANTLR(http://www.antlr.org/)之类的内容,并使用与此SO帖子Partial grammar for counting class count类似的内容。我认为它比尝试编写自己的解析器更安全。

答案 2 :(得分:3)

也可以使用class作为标识符,在其前面加上“at”符号。

int @class = 1;

我并不是说建议来写这个,但如果你想要计算课程,你可能会考虑它。

相关

答案 3 :(得分:1)

您似乎可以将class定义为编译条件符号,例如

#if class
#else
#endif

...如果你在项目属性/构建中定义它,它就会编译。

答案 4 :(得分:0)

无法想到任何其他用法,但请记住,如果前缀为@

,则可以使用关键字作为标识符

答案 5 :(得分:0)

可以在泛型方法定义中使用关键字class:

foo<T>(T object) where T:class

如果您希望能够将y作为任何内容传递,请使用对象:

foo(string x, class y) { }