我已经测试了类,方法,字段,属性和枚举,看看是否有任何不正确的情况?
using System;
public class Program
{
public static void Main()
{
var fooType = typeof(Foo);
ThrowIfNotEqual(fooType.Name, nameof(Foo));
var fi = fooType.GetField(nameof(Foo.field));
ThrowIfNotEqual(fi.Name, nameof(Foo.field));
var pi = fooType.GetProperty(nameof(Foo.property));
ThrowIfNotEqual(pi.Name, nameof(Foo.property));
var mi = fooType.GetMethod(nameof(Foo.method));
ThrowIfNotEqual(mi.Name, nameof(Foo.method));
var fi2 = fooType.GetNestedTypes()[0];
ThrowIfNotEqual(fi2.Name, nameof(Foo.myEnum));
ThrowIfNotEqual("TestThisMethod", "WorksAsExpected");
}
public static void ThrowIfNotEqual(string a, string b)
{
if (a != b) throw new InvalidOperationException($"Are Not Equal: {a} != {b}");
}
public class Foo
{
public string field;
public string property { get; set; }
public void method() { }
public enum myEnum
{
A
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
运行时异常(第-1行):不等于:TestThisMethod!= WorksAsExpected
总是这样的情况
nameof()是等于typeof().Name吗?
没有很多方法可以打破这个,就像一个例子
public class Foo<T>
Run Code Online (Sandbox Code Playgroud)
例如
var fooType = typeof(Foo<string>);
Console.WriteLine(fooType.Name);
Console.WriteLine(nameof(Foo<string>));
Run Code Online (Sandbox Code Playgroud)
产量
Foo`1
Foo
Run Code Online (Sandbox Code Playgroud)
在许多情况下,您将使用预定义类型获得编译器错误 nameof()
Console.WriteLine(nameof(int)); //CS1525 Invalid expression term 'int'
Run Code Online (Sandbox Code Playgroud)
备注
因为参数需要在语法上是一个表达式,所以有许多不允许列出的东西是无用的.以下值得一提的是产生错误
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |