State of the Values
Dan Howard
sproket at videotron.ca
Mon May 5 15:02:53 UTC 2014
I think we have to be careful here.
One of the nice features of Java is that generally you can look at piece
of code and know what it's doing so I'm not sure going the C# route on
value types is really worth it.
Consider the following code in C#:
class Program
{
static void Main(string[] args)
{
Account account = new Account();
account.AcccountNumber = "1234";
account.Name = "Savings";
account.Balance = 10;
Console.WriteLine("BEFORE: " + account);
adjustAccountBalance(account, 10);
Console.WriteLine("AFTER: " + account);
Console.ReadLine();
}
static void adjustAccountBalance(Account account, float balance)
{
account.Balance += balance;
}
}
Question: What is the result? In Java the answer is obvious but in C#
the correct answer is *unknown*. It all depends on whether Account is a
class or struct. It's possible in C# to simply change a class to a
struct - everything will compile fine but I've potentially just
introduced a mountain of Heisenbugs as developers can easily
misinterpret how their "object" will behave when passed to a method.
Have we considered just a simple struct like in C?
// Lowercase to avoid convention collision with classes.
struct account {
String accountNumber;
String name;
float balance;
}
Wouldn't this solve the issue at hand without introducing unwanted
complexity?
---
This email is free from viruses and malware because avast! Antivirus protection is active.
http://www.avast.com
More information about the coin-dev
mailing list