1

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

  1. 在类声明中
  2. 在泛型约束中(类 GenericClass,其中 T:类)

但是有什么我错过的吗?这对我很重要,因为我正在编写一个程序来计算文件中的类。在 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

这是几个答案的积累。

4

6 回答 6

11

仅计算“类”的出现次数并不能告诉您文件中有多少类:

#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”在那里出现了八次,但该文件只定义了一个类。

于 2012-05-01T22:54:25.557 回答
4

您可能想要使用 ANTLR ( http://www.antlr.org/ ) 之类的东西,并使用类似于这个 SO post Partial grammar for count class count的东西。我认为这比尝试编写自己的解析器更安全。

于 2012-05-01T22:36:34.517 回答
3

也可以class通过在它前面加上一个“at”符号来用作标识符。

int @class = 1;

我并不是说写这个是可取的,但如果你想计算课程,你可能想考虑一下。

有关的

于 2012-05-01T22:30:42.637 回答
1

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

#if class
#else
#endif

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

于 2012-05-01T23:00:21.343 回答
0

想不出任何其他用法,但请记住,如果关键字以 @ 为前缀,则可以将其用作标识符

于 2012-05-01T22:32:48.757 回答
0

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

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

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

foo(string x, class y) { }
于 2012-05-01T22:38:18.230 回答