検索の取り組み:
そして、私が覚えていないもう少し...
先入観: C#でのすべての「内蔵型」(例えばint
、float
、char
など)クラスであり、からC#の継承におけるすべてのクラスObject
のクラス。したがって、すべての「組み込み型」はObject
クラスから継承します。
その先入観を念頭に置いて、double
たとえば変数を設定するには、「通常の」構文を使用していくつかのプロパティを設定する必要があると思います。これが私が意味することです:
double number = new double();
number.leftSide= 5;
number.rightSide = 23;
Console.Write(number);
// Output:
// 5.23
しかし、C#には、double
変数を作成するための特別な同等の構文があります(上記のコードが実際に機能するのではなく、上記で実行しようとしたことを実行する方法で):
double number = 5.23;
コンパイラーは、浮動小数点が数値を5と23の2つに分割することを理解しています。
私の質問は、自分のクラスでも同じことができるかどうかです。たとえば、自分のTime
クラスがある場合(これは単なる例なので、組み込みの時間クラスの使用を提案しないでください)、次のようにインスタンス化するオプションが必要です。
Time time = 10:25;
そしてコンパイラーは、コロンが数値を時間と分に区切ることを理解します(これは、Time
クラスで作成する必要のあるプロパティだと思います)。
Roslyn CTPについて聞いたことがありますが、私が説明したことを実行するための、より単純で組み込みの方法を探しています。
できますか?
現在、これはC#では不可能です。最も近い方法は、からstring
への暗黙的な変換を定義することですDate
。例えば
public class Time
{
public static implicit operator Time(string value)
{
// Initialize your object with value
// Similar to
var values = value.Split(':');
var hour = Convert.ToInt32(values[0]);
var min = Convert.ToInt32(values[1]);
. . .
}
. . . // Your fields, properties and methods
}
これはあなたを可能にします
Time time = "10:25";
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加