在面向对象编程中,一切都应该是一个对象。从这个 postula 开始,是否可以向文字对象添加方法和字段,例如数字、字符串、 bool 值或字符?
我注意到在 C# 中,我们可以从数学表达式中使用“Integer”类的一些方法和字段:
var a = (2 + 2).ToString();
我认为访问“Integer”类和与数学表达式(和/或其值)实际相关的方法是更多的语法糖。
但是在C#中是否可以单独将方法和字段之一定义为文字对象?比如这些例子:
"Hello, world!".print();
var foo = 9.increment();
这可能没什么用,但是语言是面向对象的,这应该是可行的。如果这在 C# 中是不可能的,我们如何使用面向对象的范例来做到这一点?
最佳答案
当然,您可以实现一个扩展方法并拥有所需的语法(但是,Int32
类不会 被更改):
public static class IntExtensions {
public static int increment(this int value) {
return value + 1;
}
}
...
// Syntax sugar: the actual call is "int foo = IntExtensions.increment(9);"
var foo = 9.increment();
在当前的 C# 版本 (7.2) 中,我们无法添加扩展属性、扩展事件等。这些选项可以出现在 C# 8.0(扩展一切,https://msdn.microsoft.com/en-us/magazine/mt829270.aspx):
关于c# - 如何向文字对象添加方法和字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52413400/