Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 896
  • Last Modified:

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

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
Daniel Wilson
Asked:
Daniel Wilson
1 Solution
 
CebikCommented:

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

Open in new window

0
 
CebikCommented:

class a
{
    private System.Drawing.Color[] SeparationColors;
 
    public a()
    {
        SeparationColors = new System.Drawing.Color[MAX_COLORS];
    }
}

Open in new window

0
 
Daniel WilsonAuthor Commented:
I knew I was missing something simple!

Thanks!
0
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
Fernando SotoRetiredCommented:
Try it like this:

private System.Drawing.Color[] SeparationColors = new System.Drawing.Color[MAX_COLORS];
0
 
CuteBugCommented:
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
 
CebikCommented:
Hi ;)

class a
{
    private const byte MAX_COLORS = 25;
    private byte[] SeparationColors = new byte[MAX_COLORS];
 
    public a()
    {
    }
}

Open in new window

0
 
tcullerCommented:
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
 
CebikCommented:
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
 
cauosCommented:
private System.Drawing.Color[] SeparationColors = new System.Drawing.Color[MAX_COLORS];
0
 
CebikCommented:
@tculler:

Thanks ;)
I don't speek english very well, thats why there was no explanation
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now