==当我使用像这里的文字字符串时,我在使用in(c#)时感到困惑:
object a="hello";
object b="hello";
Run Code Online (Sandbox Code Playgroud)
比较a==b是真的.
但是当我使用像这样的对象:
object c=new StringBuilder("hello").ToString();
object d=new StringBuilder("hello").ToString();
Run Code Online (Sandbox Code Playgroud)
比较a==b将是错误的.
即使a,b,c,d编译时所有类型的System.Object和
==运算符比较值都取决于它们在编译时的值.
我使用扩展方法在编译期间获取varabiles的类型:
public static class MiscExtensions
{
public static Type GetCompileTimeType<T>(this T dummy)
{ return typeof(T); }
}
Run Code Online (Sandbox Code Playgroud)