【问题标题】:Implementation of `Class` like `String` Class`Class` 的实现,如`String` 类
【发布时间】:2011-10-27 20:08:07
【问题描述】:

我想实现类,即我们在 .Net 中有 String 类。在那,如果你检查我们何时编码......

C#:

String strString = "Value-12346- .";
String[] strArray = strString.Substring(0, strString.Length - 1).TrimEnd().ToUpper().Split("-".ToCharArray());

在此示例中,如果您检查我们正在调用 String 类的多个函数,则在每个函数上,即调用 Substring 函数 TrimEndTrimEnd Split 函数。我想实现类似的。请帮帮我。

非常感谢!!!

【问题讨论】:

    标签: c# function interface methods


    【解决方案1】:

    正如 manojlds 上面指出的那样,您可以通过让类的成员方法返回其所有者类的类型来实现这一点。现在,特别是,String 的方法每次都返回一个新的字符串实例(而不是“修改”源并返回它),因此您可能希望在您的方法中创建“this”的深层副本,然后对新对象并返回它。不仅如此,String 类也是不可变的。

    抱歉太详细了。

    【讨论】:

      【解决方案2】:

      确保每个方法都返回相同类型(或您想要的类型)的对象,然后您可以像那样调用对象上的方法(级联或链式)。字符串示例中的上述每个方法都返回一个新字符串(注意这里的字符串是不可变的),因此您可以再次应用字符串函数等等。

      在相关说明中,请参阅 Fluent Interface 的工作原理。显示非流利和流利 API 的 C# 示例就是一个很好的例子:http://en.wikipedia.org/wiki/Fluent_interface

      public IConfigurationFluent SetColor(string newColor)
              {
                  this.color = newColor;
                  return this;
              }
      

      【讨论】:

      • 让我们再强调一点。由于字符串是不可变的,因此每个函数都返回一个新的字符串对象。如果在手机或嵌入式等资源受限的环境中工作,则应注意这一点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 2015-10-08
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多