将运算符添加到本机类

时间:2013-12-23 02:09:36

标签: c# operator-keyword

我最近开始学习Ruby,我看到了以下格式化字符串的方法:

"%d"        % 123         #=> "123"
"%08b %02x" % [15, 15]    #=> "00001111 0f"

有没有办法在C#中实现这一点?我尝试了很多,但所有尝试都失败了。以下是我尝试之一的示例:

public static string operator % (string format, IFormatable[] items) {
    for (int n = 0; n < items.Length; n++) format.Replace("%" + n, items[n].ToString());
    return format;
}

"%0 %1" % new string[] { "Foo", "Bar" } // Expected result => "Foo Bar"

我知道类似ToString()和PadLeft()的方法,但我想知道,如果所谓的方法扩展也适用于运算符。

1 个答案:

答案 0 :(得分:1)

在方法Convert.ToString()之间:

  

将16位有符号整数的值转换为其等效字符串   在指定基础上的表示。

提供了

ToString() formats,您拥有所需的所有功能。您也可以使用String.PadLeft向左添加0。

int num = 15;
string binNum = Convert.ToString(num, 2).PadLeft(8,'0'); // value 00001111
string hexNum = Convert.ToString(num, 16).PadLeft(2, '0'); // value 0f