菜鸟求救:C#中可以判断对象是否被分配内存了吗? 如果我在C#下声明了一个对象,想在使用的时候再使用new为其分配内存,C#基于.NetFramework的类库中有没有可以判断对象是否已被分配内存的方法,如果没有分配的话,再为其分配内存;虽然知道这样很麻烦,不过想知道可不可以,谢谢了!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不懂你的意思。没有初始化的对象都是null呀。 object o;if(o!=null){///} 比如我自定义了一个结构,struct myStruct{......}myStruct s;而不是写成:myStruct s=new myStruct();这样应该是不能使用的吧;所以我想在用到的时候再new,只是为了想要做个判断,判断其是否已被分配内存,该怎么解决 ***********object o;if(o!=null){///}**************除了这样,有没有别的方法,.NetFrameWork的类库里有没有相关的函数可以实现? struct 是值类型,不能先声明再new,你只能用class 这样,在声明的时候明确地为其赋null值:SomeClassOrStructName myobj = null;等用的时候,判断是否为null就可以了:// 下面我想用myobjif(myobj == null) // 还没有为其分配内存 myobj = new SomeClassOrStrcutName(...);else // 已经分配了内存 myobj.DoSomething();另外,尽管class和struct在C#里是有区别的(一个在堆中分配内存,另一个在堆栈上分配内存),但它们的使用方法都是一致的,即“先声名,再new,再使用”。不要因为使用struct就不去new,否则仍然会得到异常。 someclass obj; if (obj==null) { obj = new someclass(); }struct 是值类型不能用newsomestruct sv;sv.dosomething(); 我测试了一下,struct可以用new的 struct 和class唯一的不同一个是Value Type,一个十Refrence Type.当然都可以用new,一个在Stack上分配,一个在Heap上分配。注意他们的构造函数和this指针的使用有些不同。 你可以参照Rectangle的设计.定义一个Empty对象.如果末设定值,可以用Rectangle.Empty作判断,依此类推 struct的new和class的new是不同的。struct的new就是执行一下构造函数创建一个新实例再对所有的字段进行Copy。而class则是在堆上分配一块内存然后再执行构造函数,struct的内存并不是在new的时候分配的,而是在定义的时候分配:如:int i;string s;之后,i是已经分配了内存空间的,已经作为一个值类型的实例存在,而s只有一个引用,并没有字符串实例。 判断是否为null就可以了如果没有new内存空间的话,只有一个句柄,那么就是null 字符转译 各位大神 小生的这个代码逻辑性没错 可是无法输出我想要的 急求一个简单的正则表达式 这里用过Team Coherence的同学们请举手! C#在类中怎么无法使用BeginInvoke???? 关于多线程创建form得问题 关于remoting的事件及效率问题,请教有经验的专家! 如何动态的生成多个pictureBox控件,来显示图片? 关于类的引用问题。 .net 中嵌入jscript? 谁能给我几个学习C#网络编程的学习源码? 如何写excl表
没有初始化的对象都是null呀。
if(o!=null)
{
///
}
struct myStruct
{
...
...}
myStruct s;
而不是写成:myStruct s=new myStruct();
这样应该是不能使用的吧;所以我想在用到的时候再new,只是为了想要做个判断,判断其是否已被分配内存,该怎么解决
object o;
if(o!=null)
{
///
}
**************
除了这样,有没有别的方法,.NetFrameWork
的类库里有没有相关的函数可以实现?
if(myobj == null) // 还没有为其分配内存
myobj = new SomeClassOrStrcutName(...);
else // 已经分配了内存
myobj.DoSomething();另外,尽管class和struct在C#里是有区别的(一个在堆中分配内存,另一个在堆栈上分配内存),但它们的使用方法都是一致的,即“先声名,再new,再使用”。不要因为使用struct就不去new,否则仍然会得到异常。
if (obj==null)
{
obj = new someclass();
}struct 是值类型不能用newsomestruct sv;
sv.dosomething();
我测试了一下,struct可以用new的
当然都可以用new,一个在Stack上分配,一个在Heap上分配。
注意他们的构造函数和this指针的使用有些不同。
如果末设定值,可以用Rectangle.Empty作判断,依此类推
int i;
string s;之后,i是已经分配了内存空间的,已经作为一个值类型的实例存在,而s只有一个引用,并没有字符串实例。
如果没有new内存空间的话,只有一个句柄,那么就是null