gpt4 book ai didi

c# - 如何创建用于在 C# 中描述对象的自定义语法?

转载 作者:太空狗 更新时间:2023-10-29 22:21:37 24 4
gpt4 key购买 nike

搜索努力:

  1. 谷歌:
  2. 计算器:

还有一些我不记得了...


先入之见:c#中的每个“内置类型”(例如intfloatchar etc.) 是一个类,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;

编译器理解 float 将数字分成两部分:5 和 23。

我的问题是我是否可以对自己的类(class)做同样的事情。例如,如果我有自己的 Time 类(这只是一个示例,所以请不要建议使用内置时间类),我希望可以选择实例化它所以:

Time time = 10:25;

并且编译器会理解冒号将数字分隔为小时和分钟(我认为这是我需要在 Time 类中创建的属性)。

我听说过 Roslyn CTP但我正在寻找一种更简单的内置方式来完成我所描述的事情。

我可以吗?

最佳答案

目前这在 C# 中是不可能的。最接近的做法是定义从 stringDate 的隐式转换。例如

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";

关于c# - 如何创建用于在 C# 中描述对象的自定义语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37523932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com