C#把结构体清0

allenhiman 2010-08-17 07:49:46
如何像c++一样把一个c#结构体清0呢
C++用ZeroMemory memecpy之类的就可以了

struct myStrut
{
public int a;
public int b;
}

myStruct sta = new myStruct();
sta.a=10;
sta.b=10;

如何让sta.a,sta.b都为0?

另外c#如何销毁一个new出来的对象
比如我不想用sta了 如何销毁它?
...全文
2374 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
youaway 2010-08-25
  • 打赏
  • 举报
回复
学习了,楼主结贴吧
happyer_longlong 2010-08-24
  • 打赏
  • 举报
回复
 能不用结构体,最好不用,用类就ok
allenhiman 2010-08-24
  • 打赏
  • 举报
回复
高手啊 我是C#初学者 谢谢 各位达人了
cactus123456 2010-08-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 flashelf 的回复:]
引用 8 楼 cactus123456 的回复:
引用 5 楼 flashelf 的回复:
C# 没必要释放了尤其是这东西,在new 一个就可以了,之前的对象 GC 会替你清除掉的;

也可以做一个 Empty 变量;来清 0 如下

struct myStrut
{
public static readonly myStrut Empty;
public int a;
pub……
[/Quote]

学习了,的确不会指向相同的空间。struct和class的确不同,因为没有用过struct,所以不太了解
myStrut strut;
strut.a = 10;
strut.b = 10;

strut = myStrut.Empty;
一句话是不是要完成2件事,1自动释放了开始定义的空间,2并创建了新的空间给strut
supercpu123 2010-08-18
  • 打赏
  • 举报
回复
结构是定义在栈上的,出了定义域就自动从内存清除了,根本不存在GC回收的说法

GC那是用在堆中垃圾数据上的
lantianwangzhao 2010-08-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cactus123456 的回复:]
引用 5 楼 flashelf 的回复:
C# 没必要释放了尤其是这东西,在new 一个就可以了,之前的对象 GC 会替你清除掉的;

也可以做一个 Empty 变量;来清 0 如下

struct myStrut
{
public static readonly myStrut Empty;
public int a;
public int b;
}
static void……
[/Quote]
应该不会吧!
cactus123456 2010-08-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 flashelf 的回复:]
C# 没必要释放了尤其是这东西,在new 一个就可以了,之前的对象 GC 会替你清除掉的;

也可以做一个 Empty 变量;来清 0 如下

struct myStrut
{
public static readonly myStrut Empty;
public int a;
public int b;
}
static void Main(string[] args)
……
[/Quote]

静态方法清零,如果myStrut定义2个全局变量,strut1,strut2,当2个变量都调用清零时,会不会指向相同的空间?
cactus123456 2010-08-18
  • 打赏
  • 举报
回复
或者
struct myStrut
{
public void clear()
{
a = 0;
b = 0;
}
public int a;
public int b;
}
denbes 2010-08-18
  • 打赏
  • 举报
回复
自己做一个清空方法.
曲滨_銘龘鶽 2010-08-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cactus123456 的回复:]
引用 5 楼 flashelf 的回复:
C# 没必要释放了尤其是这东西,在new 一个就可以了,之前的对象 GC 会替你清除掉的;

也可以做一个 Empty 变量;来清 0 如下

struct myStrut
{
public static readonly myStrut Empty;
public int a;
public int b;
}
static void……
[/Quote]

当然不会了,struct 又不是 class
wangxianshou 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 flashelf 的回复:]
C# 没必要释放了尤其是这东西,在new 一个就可以了,之前的对象 GC 会替你清除掉的;

也可以做一个 Empty 变量;来清 0 如下

struct myStrut
{
public static readonly myStrut Empty;
public int a;
public int b;
}
static void Main(string[] args)
……
[/Quote]

不错
曲滨_銘龘鶽 2010-08-17
  • 打赏
  • 举报
回复
C# 没必要释放了尤其是这东西,在new 一个就可以了,之前的对象 GC 会替你清除掉的;

也可以做一个 Empty 变量;来清 0 如下

struct myStrut
{
public static readonly myStrut Empty;
public int a;
public int b;
}
static void Main(string[] args)
{
myStrut strut;
strut.a = 10;
strut.b = 10;

strut = myStrut.Empty;
}
andybang1981 2010-08-17
  • 打赏
  • 举报
回复
C#中局部变量出方法体自动会被GC回收的,不考虑性能方面的话是不需要考虑的
wuyq11 2010-08-17
  • 打赏
  • 举报
回复
byte[] array = new byte[100];
array[1] = 1;
Array.Clear(array, 0, array.Length);
Console.Write(array[1]);

云瑀 2010-08-17
  • 打赏
  • 举报
回复
预设就是0了
而且GC会自动回收,所以只要new就好
Peter200694013 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 allenhiman 的回复:]
另外c#如何销毁一个new出来的对象
比如我不想用sta了 如何销毁它?
[/Quote]
不用你来销毁,系统会为你来完成

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧