Solved

VB.Net -> C# translation -- Array declaration

Posted on 2009-05-06
10
866 Views
Last Modified: 2013-12-17
This is stupid ... but ... how does the following line of VB.Net translate into C#?

Private SeparationColors(MAX_COLORS) As System.Drawing.Color

(MAX_COLORS is Private Const MAX_COLORS As Byte = 25 which I've translated just fine.)

Thanks!
   
//I tried:

       private System.Drawing.Color[MAX_COLORS] SeparationColors;

//but got

//Array size cannot be specified in a variable declaration (try initializing with a 'new' expression)	
 
 
 

        private System.Drawing.Color[] SeparationColors;

        SeparationColors = new System.Drawing.Color[MAX_COLORS];

//but got 2 additional errors.
 
 

        private fixed System.Drawing.Color[] SeparationColors[MAX_COLORS];

//but got

//Fixed size buffer type must be one of the following: bool, byte, short, int, long, char, sbyte, ushort, uint, ulong, float or double

Open in new window

0
Comment
Question by:Daniel Wilson
10 Comments
 
LVL 6

Accepted Solution

by:
Cebik earned 250 total points
Comment Utility

private System.Drawing.Color[] SeparationColors = new System.Drawing.Color[MAX_COLORS];

Open in new window

0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility

class a

{

    private System.Drawing.Color[] SeparationColors;
 

    public a()

    {

        SeparationColors = new System.Drawing.Color[MAX_COLORS];

    }

}

Open in new window

0
 
LVL 32

Author Closing Comment

by:Daniel Wilson
Comment Utility
I knew I was missing something simple!

Thanks!
0
 
LVL 62

Expert Comment

by:Fernando Soto
Comment Utility
Try it like this:

private System.Drawing.Color[] SeparationColors = new System.Drawing.Color[MAX_COLORS];
0
 
LVL 16

Expert Comment

by:CuteBug
Comment Utility
This should work

Make sure that you have defined MAX_COLOR as int.

int MAX_COLOR = 256;

System.Drawing.Color[] arrColor = new System.Drawing.Color[MAX_COLOR];

Open in new window

0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 6

Expert Comment

by:Cebik
Comment Utility
Hi ;)

class a

{

    private const byte MAX_COLORS = 25;

    private byte[] SeparationColors = new byte[MAX_COLORS];
 

    public a()

    {

    }

}

Open in new window

0
 
LVL 9

Expert Comment

by:tculler
Comment Utility
The above obviously works, but there's really no explanation there.

In C#, the array declaration is considered part of the object's "type". For example, unlike VB and C++, we must say

int[] someArray

instead of

int someArray[]

Also, the arrays are, by default, initialized to "null" ("Nothing" in VB). So, the declaration

System.Drawing.Color[] myColors;

is the same as saying

System.Drawing.Color[] myColors = null; // Nothing, no colors in the array

However, if you do initialize your array, you MUST give the size (this is the downside of arrays all around). For example, the following is NOT valid:

System.Drawing.Color[] myColors = new System.Drawing.Color[];

The second set of brackets must contain a positive integer value, no matter what.

The "fixed" keyword in C# has an entirely different meaning than in other languages--it has to do with pointers, and basically "pinning" them so the GC doesn't run off with the object.

Hope I helped,
Nate
0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility
it's working checked


class a

{

    private const byte MAX_COLORS = 25;

    private System.Drawing.Color[] SeparationColors = new System.Drawing.Color[MAX_COLORS];
 

    public a()

    {

    }

}

Open in new window

0
 
LVL 4

Expert Comment

by:cauos
Comment Utility
private System.Drawing.Color[] SeparationColors = new System.Drawing.Color[MAX_COLORS];
0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility
@tculler:

Thanks ;)
I don't speek english very well, thats why there was no explanation
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
Introduction Hi all and welcome to my first article on Experts Exchange. A while ago, someone asked me if i could do some tutorials on object oriented programming. I decided to do them on C#. Now you may ask me, why's that? Well, one of the re…
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now