foreach on an object[]

  • Thread starter Thread starter William Stacey
  • Start date Start date
W

William Stacey

Can you use a foreach to set the elements of an object[] to null? This does
not work as o is read-only. Is only way to use a for loop?

object[] buffer = new object[3];
//...fill buffer.
foreach (object o in buffer)
{
o = null;
}
 
If it's a small array, you can also do this:

object[] buffer = {null, null, null};

--- Jeff
 
William Stacey said:
Can you use a foreach to set the elements of an object[] to null? This does
not work as o is read-only. Is only way to use a for loop?

object[] buffer = new object[3];
//...fill buffer.
foreach (object o in buffer)
{
o = null;
}

Even if o were not readonly, that would not change the buffer itself -
o is a local variable: changing its value wouldn't change the value of
anything else.

However, there's a much better way of doing this. I'm not sure whether
in your example, the //...fill buffer comment was saying that the
foreach was doing it, in which case it's unnecessary in the first
place, but if not, just use Array.Clear (buffer, 0, buffer.Length);
 
I think the easist way is to create a new array
object[] buffer = new object[3];
//...fill buffer.
buffer = new object[3];
 
Surely all you need to do is:

object[] buffer = new object[3];

....and you'll have an array of three object references, all of which are
null.


Leo Lin said:
I think the easist way is to create a new array
object[] buffer = new object[3];
//...fill buffer.
buffer = new object[3];

William Stacey said:
Can you use a foreach to set the elements of an object[] to null? This does
not work as o is read-only. Is only way to use a for loop?

object[] buffer = new object[3];
//...fill buffer.
foreach (object o in buffer)
{
o = null;
}
 
You can do that for large arrays too, Jeff!
AHAHAHAHAHAHAHAHAHAHAHA
HAHAHAHAHAHAHAHAHAHAHAH
AHAHAHAHAHAHAHAHAAHAHAH
AHAHAHAHAHAHAAHAHA... *crack*

Jeff said:
If it's a small array, you can also do this:

object[] buffer = {null, null, null};

--- Jeff

William Stacey said:
Can you use a foreach to set the elements of an object[] to null? This does
not work as o is read-only. Is only way to use a for loop?

object[] buffer = new object[3];
//...fill buffer.
foreach (object o in buffer)
{
o = null;
}
 
True, but who wants to code something like:

object[] buffer = {null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null};

:-)

Humanity said:
You can do that for large arrays too, Jeff!
AHAHAHAHAHAHAHAHAHAHAHA
HAHAHAHAHAHAHAHAHAHAHAH
AHAHAHAHAHAHAHAHAAHAHAH
AHAHAHAHAHAHAAHAHA... *crack*

Jeff said:
If it's a small array, you can also do this:

object[] buffer = {null, null, null};

--- Jeff

William Stacey said:
Can you use a foreach to set the elements of an object[] to null?
This
does
not work as o is read-only. Is only way to use a for loop?

object[] buffer = new object[3];
//...fill buffer.
foreach (object o in buffer)
{
o = null;
}
 
Allocating new arrays is not always the right design choice (even thou it is
easy), especially in loops when you would need to make many allocations
(i.e. streams, network objects, etc.) and could reuse the array.

--
William Stacey

Stu Smith said:
Surely all you need to do is:

object[] buffer = new object[3];

...and you'll have an array of three object references, all of which are
null.


Leo Lin said:
I think the easist way is to create a new array
object[] buffer = new object[3];
//...fill buffer.
buffer = new object[3];

William Stacey said:
Can you use a foreach to set the elements of an object[] to null?
This
does
not work as o is read-only. Is only way to use a for loop?

object[] buffer = new object[3];
//...fill buffer.
foreach (object o in buffer)
{
o = null;
}
 
Certainly not me!
I see your point :)

Jeff said:
True, but who wants to code something like:

object[] buffer = {null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null};

:-)

Humanity said:
You can do that for large arrays too, Jeff!
AHAHAHAHAHAHAHAHAHAHAHA
HAHAHAHAHAHAHAHAHAHAHAH
AHAHAHAHAHAHAHAHAAHAHAH
AHAHAHAHAHAHAAHAHA... *crack*

Jeff said:
If it's a small array, you can also do this:

object[] buffer = {null, null, null};

--- Jeff

Can you use a foreach to set the elements of an object[] to null? This
does
not work as o is read-only. Is only way to use a for loop?

object[] buffer = new object[3];
//...fill buffer.
foreach (object o in buffer)
{
o = null;
}
 
Hi William,

Yes, foreach statement does not allow the user to change the value in the
array.
I think you can initialize the array like this:

object[] buffer = new object[3];
for(int i=0;i<buffer.Length ;i++)
{
buffer=null;
}

Hope this helps,
Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

--------------------
| From: "William Stacey" <[email protected]>
| Subject: foreach on an object[]
| Date: Mon, 29 Sep 2003 11:49:20 -0400
| Lines: 15
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.3790.0
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
| Message-ID: <[email protected]>
| Newsgroups: microsoft.public.dotnet.languages.csharp
| NNTP-Posting-Host: 66.188.59.114.bay.mi.chartermi.net 66.188.59.114
| Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.languages.csharp:188008
| X-Tomcat-NG: microsoft.public.dotnet.languages.csharp
|
| Can you use a foreach to set the elements of an object[] to null? This
does
| not work as o is read-only. Is only way to use a for loop?
|
| object[] buffer = new object[3];
| //...fill buffer.
| foreach (object o in buffer)
| {
| o = null;
| }
|
| --
| William Stacey
|
|
|
|
 
Back
Top