# Calling overloaded methods

**URL:** <https://www.ruby-forum.com/t/calling-overloaded-methods/157342>\
**Category:** IronRuby\
**Created:** [January 9, 2009, 5:16pm UTC](https://www.ruby-forum.com/t/calling-overloaded-methods/157342 "2009-01-09T17:16:58Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![alex\_2k8](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e9a140/32.png) [@alex\_2k8](https://www.ruby-forum.com/u/alex_2k8)\
**Post date:** [January 9, 2009, 5:16pm UTC](https://www.ruby-forum.com/t/calling-overloaded-methods/157342/1 "2009-01-09T17:16:58Z")

</div>

Hello,

C#  
public class Cls {  
public void foo(object a) {  
Console.WriteLine(“foo #1”);  
}  
public void foo(object[] a) {  
Console.WriteLine(“foo #2”);  
}  
}

Ruby:

```
Cls.new.foo(7)
Cls.new.foo([3, 4])

```

Output:  
foo #1  
foo #1 \<-- Calling foo(object a) again

So how can I call foo(object[] a)?

- Alex

---

<div class="post-metadata">

**Author:** ![alex\_2k8](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e9a140/32.png) [@alex\_2k8](https://www.ruby-forum.com/u/alex_2k8)\
**Post date:** [January 9, 2009, 6:34pm UTC](https://www.ruby-forum.com/t/calling-overloaded-methods/157342/2 "2009-01-09T18:34:45Z")

</div>

You’ll need to build a CLR array rather than a Ruby array.

require ‘mscorlib’  
System::Array.create\_instance(System::Object.to\_clr\_type, 2)  
o = System::Array.create\_instance(System::Object.to\_clr\_type, 2)

> > > o[0] = 3  
> > > o[1] = 4

You can monkey-patch Array and add this as a helper:

class Array  
def to\_clr\_ary  
o = System::Array.create\_instance(System::Object.to\_clr\_type,  
length)  
each\_with\_index { |obj, i| o[i] = obj }  
o  
end  
end

CLR arrays and Ruby arrays are totally different; Ruby arrays are much  
more similar to “List” than to “object[]”. So it’s unlikely  
that IronRuby would ever do this conversion automatically for you.

---

<div class="post-metadata">

**Author:** ![alex\_2k8](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e9a140/32.png) [@alex\_2k8](https://www.ruby-forum.com/u/alex_2k8)\
**Post date:** [January 9, 2009, 6:41pm UTC](https://www.ruby-forum.com/t/calling-overloaded-methods/157342/3 "2009-01-09T18:41:48Z")

</div>

[3,4] is not an array of objects. It’s a RubyArray.

You can create a CLR array like this:

v = System::Array.of(Object).new(3)  
[1,2,3].each\_with\_index { |x,i| v[i] = x }

Tomas

---

<div class="post-metadata">

**Author:** ![alex\_2k8](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e9a140/32.png) [@alex\_2k8](https://www.ruby-forum.com/u/alex_2k8)\
**Post date:** [January 9, 2009, 9:12pm UTC](https://www.ruby-forum.com/t/calling-overloaded-methods/157342/4 "2009-01-09T21:12:03Z")

</div>

Thank you!
