変数とは何か?
今まで、文字列や数値などを学んできましたが、次は、変数というものを学んでいきます。
今回は、C#の変数について説明したいと思います。変数とは、プログラムで使われるデータを一時的に保存するための箱のようなものです。変数には、名前と型があります。名前は、変数を識別するためのもので、自由に決めることができます。型は、変数が保存できるデータの種類を決めるもので、C#にはいくつかの基本的な型があります。例えば、int型は整数、double型は小数、string型は文字列などです。変数を使うには、まず宣言する必要があります。宣言とは、変数の名前と型を指定することです。では、具体的にコードを書いて説明します。
以前の復習
下記のコードは、以前にも紹介しました簡単な文字列表示プログラムです。
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } }
まず、これを実行してみましょう。実行の仕方は、下記を参照してください。
実行結果は
Hello World!
になります。覚えておられると思います。
変数を使用する
では、このコードに変数という一時記憶いておくを箱のようなコードを入れてみましょう!
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { string str; str = "Hello World!"; Console.WriteLine(str); } } }
実行結果は
Hello World!
実行結果は同じです。
このコードの9行目の「str」が変数といわれるもので値を入れる箱のようなものです。今回は「str」という名前を使いましたが、名前の付け方は任意(aとか、sssとかでもよい※参考)です。しかし、予約語と呼ばれるものがあり、それを使用するとエラーになります(※予約語とは、C#で使われている命令語のことです)。
9行目のstringはデータ型で「文字列」を示しています。
上記は「変数の宣言」といいます。
10行目は「str」の箱の 「Hello World!」 という値を入れます。
これは、「値の代入」といいます。
Console.WriteLine(str);の結果は、strの箱に Hello World! が入っているので
Console.WriteLine(“Hello World!”);と同じ
Hello World! になります。
※参考 変数strをaにかえても同じです。aという箱のようなものにHello World!が格納され、Console.WriteLine(a);で Hello World! が表示されます。
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { string a; a = "Hello World!"; Console.WriteLine(a); } } }
変数の宣言と値の代入を1列にできます
string str; //変数の宣言
str = “Hello World!”; //文字列の代入
の2行を1行にするには、string str = “Hello World!”; で可能です。
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { string str = "Hello World!"; Console.WriteLine(str); } } }
実行結果は
Hello World!
結果は同じです。
内容を変えてみよう
strの内容を変えてみましょう! Hello World!を Hello Japan!にかえてみます。
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { string str = "Hello Japan!"; Console.WriteLine(str); } } }
実行結果は
Hello Japan!
strという箱のようなものにHello Japan!が格納されたことがわかります。
Console.WriteLine(str);を2行入力してみよう
では、 Console.WriteLine(str); を 2行入力したらどうなるでしょうか?
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { string str = "Hello Japan!"; Console.WriteLine(str); Console.WriteLine(str); } } }
実行結果は
Hello Japan!
Hello Japan!
strという箱のようなものに入ったらすぐに消えるわけではありません。そのため、Hello Japan!が2行表示されます。
複数の変数を使ってみよう
では、 str1という変数に「日本の首都」、 str2という変数に「東京」という文字列を格納し表示してみましょう
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { string str1 = "日本の首都"; string str2 = "東京"; Console.WriteLine(str1); Console.WriteLine(str2); } } }
実行結果は
日本の首都
東京
になります。これを1行にするにはどうしたらいいでしょう。
str1 + str2 で1行にできます。
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { string str1 = "日本の首都"; string str2 = "東京"; Console.WriteLine(str1 + str2); } } }
実行結果は
日本の首都東京
になります。では、 日本の首都は東京 にしたい場合はどうしたらいいでしょうか?
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { string str1 = "日本の首都"; string str2 = "東京"; Console.WriteLine(str1 + "は" + str2); } } }
実行結果は
日本の首都は東京
str1 + “は” + str2 で、「は」は文字列で変数ではありませんので「””」ダブルクォーテーションが必要です。
文字列変数
C#における文字列変数は、文字列を格納するために使用されます。
文字列とは、1つ以上の文字から構成されるデータであり、例えば「Hello, world!」のようなメッセージや、「1234」といった数字の列などが含まれます。
C#では、文字列を表すために、文字列型(string)というデータ型が用意されています。
string型の変数を宣言する場合は、次のように記述します。
string message;
上記のコードでは、変数名をmessageとし、string型であることを示しています。
文字列を変数に割り当てるには、次のように記述します。
message = “Hello, world!”;
上記のコードでは、変数messageに文字列”Hello, world!”を割り当てています。文字列を割り当てる場合は、ダブルクォーテーションで囲みます。
また、文字列変数の宣言と同時に初期化することもできます。次のように記述します。
string message = “Hello, world!”;
文字列変数に格納された文字列を表示するには、Console.WriteLineメソッドなどを使用します。
Console.WriteLine(message);
上記のコードでは、変数messageに格納された文字列を表示しています。
文字列変数は、文字列の連結などにも使用されます。
文字列を連結する場合は、+演算子を使用します。
string name = “John”;
string greeting = “Hello, ” + name + “!”;
Console.WriteLine(greeting);
上記のコードでは、変数nameに”John”を、変数greetingに”Hello, “とnameと”!”を連結して割り当て、最終的にConsole.WriteLineメソッドで変数greetingに格納された文字列を表示しています。
文字列変数には、多くの便利なメソッドやプロパティが用意されています。
例えば、文字列の長さを取得するLengthプロパティ、部分文字列を取得するSubstringメソッド、文字列の置換を行うReplaceメソッドなどがあります。
これらのメソッドやプロパティを使用することで、文字列操作を簡単に行うことができます。
数値変数
前項では、文字列の変数を覚えましたが、今回は、数値変数について覚えましょう!
数値変数を使用する
では、数値変数を用いてみましょう!
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { int number; number= 5; Console.WriteLine(number); } } }
実行結果は
5
実行結果は同じです。
9行目のintのデータ型は「整数型」を示しています。
上記は「変数の宣言」といいます。
10行目は「number」の箱の 「5」 という数値を入れます。
数値は、””(ダブルクォーテーション)は、必要ありません。
Console.WriteLine( number );の結果は、 number の箱に 5 が入っているので
5 になります。
※参考 変数 number をaにかえても同じです。aという箱のようなものに5が格納され、Console.WriteLine(a);で 5 が表示されます。
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { int a; a = 5; Console.WriteLine(a); } } }
変数の宣言と値の代入を1列にできます
int number ; //変数の宣言
number = 5; //数値の代入
の2行を1行にするには、int number = 5; で可能です。
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { int number = 5; Console.WriteLine(number); } } }
実行結果は
5
結果は同じです。
小数点を扱う数値の場合は
では、numberの値を5から5.55にかえてみよう。
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { int number = 5.55; Console.WriteLine(number); } } }
実行結果は
ERR
エラーになってしまいます。なぜかというと、intは、整数を扱う、変数だからです。
下記は、データ型の一部です。intは整数ですので、小数点が扱えません。この場合、 doubleなら扱えます。
int | 整数 |
float | 単精度実数 |
double | 倍精度実数 |
bool | 論理型(falseかtrue) |
string | 文字列型 |
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { double number = 5.55; Console.WriteLine(number); } } }
実行結果は
5.55
正しく、実行できます。変数を宣言するときは注意が必要です。
そのほかの数値型変数についても紹介しておきます。
C# 型 | .NET 型 | 説明 | データの範囲 |
sbyte | System.SByte | 符号付きバイト | -128 ~ 127 |
byte | System.Byte | 符号無しバイト | 0 ~ 255 |
short | System.Int16 | 符号付き16ビット整数 | -32768 ~ 32767 |
ushort | System.UInt16 | 符号無し16ビット整数 | 0 ~ 65535 |
int | System.Int32 | 符号付き32ビット整数 | -2147483648 ~ 2147483647 |
uint | System.UInt32 | 符号無し32ビット整数 | 0 ~ 4294967295 |
long | System.Int64 | 単精度浮動小数点 | -9223372036854775808 ~ 9223372036854775807 |
ulong | System.UInt64 | 符号付き64ビット整数 | 0 ~ 18446744073709551615 |
float | System.Single | 符号無し64ビット整数 | -3.402823E+38 ~ 3.402823E+38 |
double | System.Double | 倍精度浮動小数点 | -1.79769313486232E+308 ~ 1.79769313486232E+308 |
decimal | System.Decimal | 10進数浮動小数点 | -79228162514264337593543950335 ~ 79228162514264337593543950335 |
参考
C#における数値変数は、整数や小数などの数値を格納するために使用されます。C#には、数値型としてint、double、float、long、short、decimalなどのデータ型が用意されています。
int型は、32ビットの整数を格納することができます。宣言する場合は、次のように記述します。
int num;
上記のコードでは、変数名をnumとし、int型であることを示しています。
数値を変数に割り当てるには、次のように記述します。
num = 100;
上記のコードでは、変数numに数値100を割り当てています。
また、数値変数の宣言と同時に初期化することもできます。次のように記述します。
int num = 100;
double型は、倍精度浮動小数点数を格納することができます。宣言する場合は、次のように記述します。
double price;
上記のコードでは、変数名をpriceとし、double型であることを示しています。
数値を変数に割り当てるには、次のように記述します。
price = 3.14;
上記のコードでは、変数priceに数値3.14を割り当てています。
また、double型の数値を宣言と同時に初期化することもできます。次のように記述します。
double price = 3.14;
数値変数は、四則演算や比較演算などの数学的演算にも使用されます。数値型の変数同士で演算を行う場合は、次のように記述します。
int x = 10; int y = 5; int result = x + y;
上記のコードでは、変数xに10、変数yに5を割り当て、変数resultに変数xと変数yの和を割り当てています。
数値変数には、多くの便利なメソッドやプロパティが用意されています。例えば、数値を文字列に変換するToStringメソッド、数値の絶対値を取得するMath.Absメソッド、指数関数を計算するMath.Expメソッドなどがあります。これらのメソッドやプロパティを使用することで、数学的操作を簡単に行うことができます。