积极答复者
请教:怎样比较结构为空。

问题
答案
-
你好!
如果struct的定义已经无法修改了,你可以先新建一个struct实例,保证所有的成员为初始值(值类型不存在null的语义),然后使用Equals()方法来比较,这个方法效率十分低下,一般来说值类型的定义中应该重写这个方法的,但是显然定义这个struct的程序员不是很有经验!
public struct MyValType
{
public int x;
public MyValType(int i)
{
x = i;
}
}
MyValType v1 = new MyValType();
MyValType v2 = new MyValType(3);
MyValType v3=new MyValType();
if (v2.Equals(v1))
Console.WriteLine("v2为初始值");
if (v3.Equals(v3))
Console.WriteLine("v3为初始值");
周雪峰- 已标记为答案 feiyun0112Moderator 2010年1月25日 1:53
全部回复
-
结构是值类型是不会为空的
你可以通过Nullable<T>
比如 MyStruct? ms;
if(!ms.HasValule)//如果为空
{
ms=new MyStruct();
}
Memory all alone in the moonlight~My Blog in .NET~~~ -
你好!
如果struct的定义已经无法修改了,你可以先新建一个struct实例,保证所有的成员为初始值(值类型不存在null的语义),然后使用Equals()方法来比较,这个方法效率十分低下,一般来说值类型的定义中应该重写这个方法的,但是显然定义这个struct的程序员不是很有经验!
public struct MyValType
{
public int x;
public MyValType(int i)
{
x = i;
}
}
MyValType v1 = new MyValType();
MyValType v2 = new MyValType(3);
MyValType v3=new MyValType();
if (v2.Equals(v1))
Console.WriteLine("v2为初始值");
if (v3.Equals(v3))
Console.WriteLine("v3为初始值");
周雪峰- 已标记为答案 feiyun0112Moderator 2010年1月25日 1:53