Convertクラスと解析
ConvertとTryParseで解析と変換を行います。
「Convertクラスと解析」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
文字列から数値への変換
ユーザー入力はテキストとして受け取ります。それを計算に使うには、文字列を数値に変換する必要があります。C#にはConvert、Parse、TryParseが用意されています。
using System;
class Program
{
static void Main()
{
string input = "42";
int number = int.Parse(input);
Console.WriteLine(number + 8);
}
}int.Parse
int.Parseは数値を表す文字列をintに変換します。テキストが有効な数値でない場合はFormatExceptionをスローします。
using System;
class Program
{
static void Main()
{
try
{
int n = int.Parse("abc");
Console.WriteLine(n);
}
catch (FormatException)
{
Console.WriteLine("Not a valid number");
}
}
}int.TryParse
int.TryParseは例外を回避します。成功するとtrueを返して結果をoutパラメーターに格納し、失敗するとfalseを返します。
using System;
class Program
{
static void Main()
{
if (int.TryParse("123", out int n))
Console.WriteLine("Parsed: " + n);
else
Console.WriteLine("Failed");
}
}安全な入力には TryParse
TryParseは、信頼できない入力を処理する推奨の方法です。無効なテキストをクラッシュさせず、適切に処理できます。
using System;
class Program
{
static void Main()
{
string[] inputs = { "10", "oops", "30" };
int total = 0;
foreach (var s in inputs)
{
if (int.TryParse(s, out int v))
total += v;
}
Console.WriteLine("Total of valid: " + total);
}
}Convert クラス
Convertクラスは、さまざまな基本型の間で変換を行います。たとえば、Convert.ToInt32、Convert.ToDouble、Convert.ToBooleanなどがあります。
using System;
class Program
{
static void Main()
{
int i = Convert.ToInt32("256");
double d = Convert.ToDouble("3.14");
bool b = Convert.ToBoolean("true");
Console.WriteLine(i + ", " + d + ", " + b);
}
}Convert による null の処理
int.Parseとは異なり、Convert.ToInt32(null)は例外をスローせずに 0 を返します。便利な場合もありますが、意外な結果になることもあります。
using System;
class Program
{
static void Main()
{
string s = null;
int n = Convert.ToInt32(s); // returns 0
Console.WriteLine("Result: " + n);
}
}数値型間の Convert
Convertは、ある数値型を別の数値型に変換することもできます。浮動小数点値を整数に変換する場合は、切り捨てではなく丸めが行われます。
using System;
class Program
{
static void Main()
{
double d = 7.6;
int cast = (int)d; // truncates -> 7
int converted = Convert.ToInt32(d); // rounds -> 8
Console.WriteLine("cast=" + cast + ", convert=" + converted);
}
}その他の型の解析
ほとんどの組み込み型には、それぞれのParse/TryParseがあります。たとえば、double.TryParse、bool.TryParse、DateTime.TryParseなどです。
using System;
class Program
{
static void Main()
{
bool okD = double.TryParse("2.5", out double d);
bool okB = bool.TryParse("True", out bool flag);
Console.WriteLine(okD + ":" + d + ", " + okB + ":" + flag);
}
}逆変換には ToString
数値をテキストに戻すには、ToString()を呼び出します。必要に応じて書式文字列も指定できます。
using System;
class Program
{
static void Main()
{
int n = 255;
double price = 12.5;
Console.WriteLine(n.ToString());
Console.WriteLine(price.ToString("C")); // currency format
}
}適切なツールの選択
信頼できないユーザー入力にはTryParseを使い、入力が必ず有効だと保証できる場合はParseを使います。null の処理や多くの型の間で変換する場合はConvertを使ってください。
using System;
class Program
{
static void Main()
{
string userInput = "55x";
int value = int.TryParse(userInput, out int v) ? v : -1;
Console.WriteLine(value == -1 ? "Invalid input" : "Got " + value);
}
}まとめ
堅牢な入力処理の流れでは、TryParseで検証し、失敗時には既定値を設定してから、安全に計算を行います。
using System;
class Program
{
static int ReadAge(string input)
{
if (int.TryParse(input, out int age) && age >= 0)
return age;
return 0; // safe default
}
static void Main()
{
Console.WriteLine("Age: " + ReadAge("28"));
Console.WriteLine("Age: " + ReadAge("bad"));
}
}確認問題
解析と変換についての理解度を確認しましょう。
要点の復習
テキストを数値に変換するには、無効な入力で例外をスローするint.Parse、安全に処理して bool とout値を返すint.TryParse、または null を処理し、多くの型を変換できるConvertクラスを使います。信頼できない入力にはTryParseを優先し、逆方向の変換にはToString()を使ってください。
using System;
class Program
{
static void Main()
{
if (int.TryParse("99", out int n))
Console.WriteLine("Value: " + n);
Console.WriteLine("Convert: " + Convert.ToInt32("7"));
}
}よくある質問
「Convertクラスと解析」レッスンは無料ですか?
はい。「Convertクラスと解析」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「Convertクラスと解析」で何を学びますか?
ConvertとTryParseで解析と変換を行います。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Convertクラスと解析」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 値型と参照型
- ボックス化とボックス化解除
- 暗黙的変換と明示的変換
- Convertクラスと解析