搜索努力:
还有一些我不记得了......
预想:每个"内置型" C#(如int,float,char等等)是一个类,并且在C#每类从继承Object类.因此,每个"内置类型"都继承自Object该类.
考虑到这种先入为主,我假设要设置一个double变量,例如,我需要使用"普通"语法设置一些属性.这就是我的意思:
double number = new double();
number.leftSide= 5;
number.rightSide = 23;
Console.Write(number);
// Output:
// 5.23
Run Code Online (Sandbox Code Playgroud)
但是C#有用于创建一个特殊的,相当于语法double变量(在某种程度上,它会做什么,我试图做以上,不就是上面的代码将实际工作):
double number = 5.23;
Run Code Online (Sandbox Code Playgroud)
编译器理解浮点将数字分成两个:5和23.
我的问题是我是否可以对自己的课程做同样的事情.例如,如果我有自己的Time类(这只是一个例子,所以请不要建议使用内置的时间类),我希望有这样的选项来实例化它:
Time time = 10:25;
Run Code Online (Sandbox Code Playgroud)
并且编译器会理解冒号将数字分成小时和分钟(我认为,这是我需要在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
}
Run Code Online (Sandbox Code Playgroud)
这会让你
Time time = "10:25";
Run Code Online (Sandbox Code Playgroud)