mic*_*tan 677
试试这个:
this.GetType().Name
Run Code Online (Sandbox Code Playgroud)
Cha*_*ion 213
我想把它放在一边好好衡量.我认为@micahtan发布的方式是首选.
typeof(MyProgram).Name
Run Code Online (Sandbox Code Playgroud)
Cya*_*ish 166
使用C#6.0,您可以使用nameof运算符:
nameof(MyProgram)
Run Code Online (Sandbox Code Playgroud)
Tho*_*que 120
虽然micahtan的答案很好,但它不适用于静态方法.如果要检索当前类型的名称,那么这个名称应该可以在任何地方使用:
string className = MethodBase.GetCurrentMethod().DeclaringType.Name;
Run Code Online (Sandbox Code Playgroud)
mik*_*uld 15
作为参考,如果您有一个继承自另一个的类型,您也可以使用
this.GetType().BaseType.Name
Run Code Online (Sandbox Code Playgroud)
baf*_*sar 11
如果在派生类中需要它,可以将该代码放在基类中:
protected string GetThisClassName() { return this.GetType().Name; }
Run Code Online (Sandbox Code Playgroud)
然后,您可以在派生类中找到该名称.返回派生类名.当然,当使用新关键字"nameof"时,不需要像这种多样的行为.
除此之外你可以定义:
public static class Extension
{
public static string NameOf(this object o)
{
return o.GetType().Name;
}
}
Run Code Online (Sandbox Code Playgroud)
然后像这样使用:
public class MyProgram
{
string thisClassName;
public MyProgram()
{
this.thisClassName = this.NameOf();
}
}
Run Code Online (Sandbox Code Playgroud)
用这个
让说应用将Test.exe正在运行,并且功能是FOO()在Form1中 [基本上它是Form1类 ],然后上面的代码会产生下面的反应.
string s1 = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name;
Run Code Online (Sandbox Code Playgroud)
这将返回.
s1 = "TEST.form1"
Run Code Online (Sandbox Code Playgroud)
功能名称:
string s1 = System.Reflection.MethodBase.GetCurrentMethod().Name;
Run Code Online (Sandbox Code Playgroud)
将返回
s1 = foo
Run Code Online (Sandbox Code Playgroud)
请注意,如果要在异常使用中使用它:
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace );
}
Run Code Online (Sandbox Code Playgroud)