用它来检查是否c是实例TForm.
c.GetType().Name.CompareTo("TForm") == 0
Run Code Online (Sandbox Code Playgroud)
除了使用stringas作为参数之外,还有更安全的类型CompareTo()吗?
Jon*_*eet 385
这里的不同答案有两个不同的含义.
如果要检查实例是否是精确类型,那么
if (c.GetType() == typeof(TForm))
Run Code Online (Sandbox Code Playgroud)
是要走的路.
如果你想知道c是实例TForm 还是子类,那么使用is/ as:
if (c is TForm)
Run Code Online (Sandbox Code Playgroud)
要么
TForm form = c as TForm;
if (form != null)
Run Code Online (Sandbox Code Playgroud)
值得在脑海中清楚地了解您真正想要的这些行为.
Pos*_*Man 38
if(c is TFrom)
{
// Do Stuff
}
Run Code Online (Sandbox Code Playgroud)
或者如果您打算c用作a TForm,请使用以下示例:
var tForm = c as TForm;
if(tForm != null)
{
// c is of type TForm
}
Run Code Online (Sandbox Code Playgroud)
第二个示例只需要检查是否c属于类型TForm一次.如果您检查是否c有类型TForm然后投射它,那么CLR会经过额外的检查.这是一个参考.
编辑:Jon Skeet被盗
如果你想确定c是否有TForm继承的类TForm,那么使用
if(c.GetType() == typeof(TForm))
{
// Do stuff cause c is of type TForm and nothing else
}
Run Code Online (Sandbox Code Playgroud)
boj*_*boj 14
是的,"是"关键字:
if (c is TForm)
{
...
}
Run Code Online (Sandbox Code Playgroud)
有关MSDN的详细信息,请访问:http://msdn.microsoft.com/en-us/library/scekt9xw(VS.80).aspx
检查对象是否与给定类型兼容.例如,可以确定对象是否与字符串类型兼容,如下所示:
Bra*_*ham 10
而且,有点相同
Type.IsAssignableFrom(Type c)
Run Code Online (Sandbox Code Playgroud)
"如果c和当前Type表示相同的类型,或者当前Type在c的继承层次结构中,或者当前Type是c实现的接口,或者c是泛型类型参数和当前类型,则为真代表c的约束之一."
从这里:http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx
小智 9
如果你想使用c作为TForm,比其他答案更紧凑:
if(c is TForm form){
form.DoStuff();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
184337 次 |
| 最近记录: |