Click here to Skip to main content
12,952,273 members (45,834 online)
Rate this:
 
Please Sign up or sign in to vote.
See more:
Hi, what would be the closest equivalent F# code to a C# array of objects?

Example:

In C# I would create:

object[,] tableA = new object[30,2];

tableA [0, 0] = "dog";
tableA [0, 1] = 2;
tableA [1, 0] = "cat";
tableA [1, 1] = 31;


and so on ....


In F# I could create

let tableA_FS = Map( [("dog", 2); ("cat", 31)] );


However I cannot cast a map into a type object[,]



what is the closest type in F# to obj[,]?
Posted 2-Jul-12 7:06am
tagad484
Rate this: bad
 
good
Please Sign up or sign in to vote.

Solution 1

In this particular case, you can use array2D:
http://msdn.microsoft.com/en-us/library/ee620670.aspx[^].

See also the section "Multidimensional Arrays" in the documentation page on F# arrays:
http://msdn.microsoft.com/en-us/library/dd233214.aspx[^].

—SA
  Permalink  
Comments
tagad 2-Jul-12 14:31pm
   
Hi SA,

thanks for your reply. An array2D can be specified in 1 type. In my example I am using string and integer as types. I am not clear from the reference you pointed how to initialize an array2D in 2 different types.


thanks
   
No, you are not using different types! You use one polymorphic type System.Object. It has nothing to do with the array rank, could be in single-dimensional array in exact same way. You can do exactly the same thing in F#.
--SA
Rate this: bad
 
good
Please Sign up or sign in to vote.

Solution 2

A possible way to do it is

let myArray2D : obj[,] = Array2D.create 2 2 (box())
myArray2D.[0,0] <- box("cc")
myArray2D.[0,1] <- box(2.0)
...


this has type obj[,]
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

    Print Answers RSS
Top Experts
Last 24hrsThis month
OriginalGriff 6,239
CHill60 3,490
Maciej Los 3,083
Jochen Arndt 1,975
ppolymorphe 1,880


Advertise | Privacy | Mobile
Web02 | 2.8.170525.1 | Last Updated 3 Jul 2012
Copyright © CodeProject, 1999-2017
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100