Time to start learning about the C# language itself! Learn which basic data types you can use and how they relate to their RPG counterparts in the first hands-on TechTip of this series.
This is probably the moment you’re waiting for if you’ve been following this series of TechTips since its inception. It’s time for some hands-on work. So fire up Visual Studio and get ready to write some C# code!
Start by creating a new Console Application project, following the steps described in the second TechTip of the series. Name your project “ExploringDataTypes.” You should get something similar to Figure 1:
Figure 1: The screen shows your recently created ExploringDataTypes project’s source code.
Now place the cursor just after the opening curly brace below the static void Main(string[] args) line and press Enter. In this new line, type int integerTest; and Visual Studio’s smart code assistance tools will underline integerTest with a green squiggly line. This means the IDE found something odd—not exactly an error but not “normal” either: it’s trying to tell you, “Hey, look, you created a variable, but what for? You didn’t assign a value to it.” As you probably know, this is nothing new or amazing: RPG’s compiler does the same with the RNF7031 informational messages.
Let’s stop for a second to analyze the int integerTest; statement: int tells the compiler you want to create a new integer data type variable and integerTest is its name. Note the mixed case used to name the variable: it’s called camel case, because there’s a “hump” in the middle of the variable’s name, caused by the use of an uppercase letter on each new word of the variable name to make it more readable. You can also use the underscore character (_) to separate the words. In this case, it would be something like integer_test. C#’s standards mandate that all variables start with a lowercase letter (in case you’re wondering, yes, C# is case-sensitive and a bit picky with some things, but don’t worry; the IDE’s code-assistance tools will help you navigate these oddities). As you can see, the syntax for declaring variables is
<data type> <variable name>;.
Optionally, you can initialize the variable in the same statement. Let’s change the statement you just wrote to do that. Simply add “ = 0” between the name of the variable and the semicolon. You’ll still see the green squiggly line, but with a different message: now it’s complaining that your variable is assigned (has a non-null value) but its value is never used. Let’s ignore that for now and create some additional variables of different data types. Type the following statements, one per line:
decimal usedForCurrency = 0;
float aDifferentNumberFormat = 0.01234567890F;
double andYetAnotherOne = 0.01234567890D;
The data types declared here have RPG “cousins” with similar functionality. However, in RPG you need to indicate the length in digits of the variable, whereas C# handles that by itself. You might have noticed the special notation of the values assigned to the float and decimal variables. This is required so that the 0.01234567890 value is compatible with the data type: The F suffix indicates a float value, and D indicates a double value. The difference is, as you’ll see later, in the precision (number of decimal places) of the value. This MSDN document provides detailed information about the language’s basic data types and their limits. If you’re wondering why I keep calling them basic data types, it’s because an object is also a data type, albeit a complex one. I’ll explain this in depth much later in the series.
Now let’s output these variables’ values. Type or copy+paste the following code below the last variable declaration line:
Console.WriteLine("integerTest's value is " + integerTest
+ ", usedForCurrency holds " + usedForCurrency
+ ", aDifferentNumberFormat's value is " + aDifferentNumberFormat
+ ", while andYetAnotherOne stores " + andYetAnotherOne);
As explained in the prequel article to this series, the WriteLine method will output a line of text to the console. Text being the key word here, because our variables are of numerical data types. But that’s not a problem, because C# takes care of the necessary data type conversions. Figure 2 shows the output produced by this code:
Figure 2: Our little program generated this output.
Note how the float and double variables produce a different output, even though they supposedly store the same 0.01234567890 value. This is a simple example of the precision of a variable, and it works exactly the same in almost any programming language. Here, it’s explicitly indicated with the F and D suffixes when the value 0.01234567890 is assigned to the float and decimal variables.
That’s all the time I have for now, but I’ll be back with more on data types in the next TechTip. Here’s the complete source code of the program built in this article:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ExploringDataTypes
{
class Program
{
static void Main(string[] args)
{
int integerTest = 0;
decimal usedForCurrency = 0;
float aDifferentNumberFormat = 0.01234567890F;
double andYetAnotherOne = 0.01234567890D;
Console.WriteLine("integerTest's value is " + integerTest
+ ", usedForCurrency holds " + usedForCurrency
+ ", aDifferentNumberFormat's value is " + aDifferentNumberFormat
+ ", while andYetAnotherOne stores " + andYetAnotherOne);
}
}
}
It can (and will) be improved, but let’s leave that for the next TechTip. Until then, feel free to use the Comments section below to share your opinion about this article and this series!
LATEST COMMENTS
MC Press Online