[Mono-devel-list] Performance w/ boxing

Jonathan Pryor jonpryor at vt.edu
Sat Feb 21 07:57:00 EST 2004


Below...

On Sat, 2004-02-21 at 10:10, Jonathan Gilbert wrote:
<snip/>
> We are talking at different reference levels here :-) 

That's the problem with language.  Even when you're trying to be
explicit, you can still misunderstand others. :-)

<snip/>

> Well, that, or explicit boxing as I mentioned. The design that I presented
> was aimed to solve the "can be null" problem, and you no doubt read Joshua
> Tauberer's post which further addresses the performance issue.

Now that you provide that description, you remind me of the
System.Data.SqlTypes structures, which wrap a value, and provide a way
of asking whether it's "null" or not:

	void function (SqlInt32 n)
	{
		if (n.IsNull) {/* ... */}
		else {/* compute something with n.Value */}
	}

	void Test ()
	{
		function (new SqlInt32());	// IsNull == true
		function (new SqlInt32(42));	// IsNull == false
	}

> Joshua Tauberer's struct, being a value type, is effectively no different
> from using a separate 'bool' parameter to indicate whether the variable is
> present, except that it wraps it up nicely into a single parameter.

And conveniently enough, this construct is already in .NET.  Wish I'd
remembered this before.

<snip/>

Of course, in the future we'll have a generics-based equivalent,
Nullable<T> or something, which provides the same functionality.

 - Jon





More information about the Mono-devel-list mailing list