- 浏览: 3053418 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (430)
- Programming Languages (23)
- Compiler (20)
- Virtual Machine (57)
- Garbage Collection (4)
- HotSpot VM (26)
- Mono (2)
- SSCLI Rotor (1)
- Harmony (0)
- DLR (19)
- Ruby (28)
- C# (38)
- F# (3)
- Haskell (0)
- Scheme (1)
- Regular Expression (5)
- Python (4)
- ECMAScript (2)
- JavaScript (18)
- ActionScript (7)
- Squirrel (2)
- C (6)
- C++ (10)
- D (2)
- .NET (13)
- Java (86)
- Scala (1)
- Groovy (3)
- Optimization (6)
- Data Structure and Algorithm (3)
- Books (4)
- WPF (1)
- Game Engines (7)
- 吉里吉里 (12)
- UML (1)
- Reverse Engineering (11)
- NSIS (4)
- Utilities (3)
- Design Patterns (1)
- Visual Studio (9)
- Windows 7 (3)
- x86 Assembler (1)
- Android (2)
- School Assignment / Test (6)
- Anti-virus (1)
- REST (1)
- Profiling (1)
- misc (39)
- NetOA (12)
- rant (6)
- anime (5)
- Links (12)
- CLR (7)
- GC (1)
- OpenJDK (2)
- JVM (4)
- KVM (0)
- Rhino (1)
- LINQ (2)
- JScript (0)
- Nashorn (0)
- Dalvik (1)
- DTrace (0)
- LLVM (0)
- MSIL (0)
最新评论
-
mldxs:
虽然很多还是看不懂,写的很好!
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 -
HanyuKing:
Java的多维数组 -
funnyone:
Java 8的default method与method resolution -
ljs_nogard:
Xamarin workbook - .Net Core 中不 ...
LINQ的恶搞…… -
txm119161336:
allocatestlye1 顺序为 // Fields o ...
最近做的两次Java/JVM分享的概要
看到了这样一个方法:
乍一看觉得挺无聊的,干嘛还要特意写个接收StringBuilder的ToString()重载呢,直接把要返回的东西写在这个方法里不就好了么。转念一想,觉得这样写好神:这个类是一组类的基类,这些类的实例在运行时会构成一个树状结构。而为了提供更"user-friendly"的字符串表示,有必要将一个对象中嵌套着的对象的信息也放在自己字符串里。这样一来使用带StringBuilder的ToString()重载就很合理了。
赞啊~
=============================
P.S. 这棵树是个expression tree...
就是类似这样的情况咯~
public override string ToString() { StringBuilder sb = new StringBuilder(); ToString(sb); return sb.ToString(); }
乍一看觉得挺无聊的,干嘛还要特意写个接收StringBuilder的ToString()重载呢,直接把要返回的东西写在这个方法里不就好了么。转念一想,觉得这样写好神:这个类是一组类的基类,这些类的实例在运行时会构成一个树状结构。而为了提供更"user-friendly"的字符串表示,有必要将一个对象中嵌套着的对象的信息也放在自己字符串里。这样一来使用带StringBuilder的ToString()重载就很合理了。
赞啊~
=============================
P.S. 这棵树是个expression tree...
评论
2 楼
RednaxelaFX
2008-09-05
public class Base { public override string ToString( ) { StringBuilder sb = new StringBuilder(); ToString(sb); return sb.ToString(); } protected internal abstract void ToString(StringBuilder sb); } public class Derived1 : Base { //... protected internal void ToString( StringBuilder sb ) { sb.Append( desc ); } } // other derived classes public class CompositeDerived : Base { private List<Base> _args; public CompositeDerived( ) : this( null ) { } public CompositeDerived( IEnumerable<Base> args ) { _args = new List<Base>( ); if ( null != args ) { _args.AddRange( args ); } } public IEnumerable<Base> Arguments { get { return _args; } } protected internal void ToString( StringBuilder sb ) { sb.Append( "(" ); var n = _args.Count; for ( var i = 0; i < n; ++i ) { _args.ToString( sb ); if ( n - 1 != i ) { sb.Append( ", " ); } } } }
就是类似这样的情况咯~
1 楼
lwwin
2008-09-05
看的不是很明白……里面的ToString(sb)会做什么?
发表评论
-
字符串的一般封装方式的内存布局 (1): 元数据与字符串内容,整体还是分离?
2013-11-07 17:44 22410(Disclaimer:未经许可请 ... -
字符串的一般封装方式的内存布局
2013-11-01 12:55 0(Disclaimer:未经许可请 ... -
关于string,内存布局,C++ std::string,CoW
2013-10-30 20:45 0(Disclaimer:未经许可请 ... -
对象的重量
2011-08-21 17:15 0http://domino.research.ibm.com/ ... -
GetCustomAttribute()每次都返回新Attribute实例
2009-11-10 10:30 0Jeffrey Zhao: 一次失败的尝试(上):原来GetC ... -
委托与方法和隐藏参数
2009-09-07 15:32 3312之前正好发了些帖子是关于CLR里的委托的,然后看到老赵说事件也 ... -
要让CLR挂掉的话(第二弹)……
2009-09-04 03:26 12880(Disclaimer:如果需要转 ... -
要让CLR挂掉的话……
2009-09-02 16:53 4786(Disclaimer:如果需要转载请先与我联系。 作者:Re ... -
趣味编程:函数式链表的快速排序
2009-08-31 08:53 3452(恢复自2009-08-28的备份 ... -
事件处理器导致内存泄漏
2009-08-25 15:03 0Memory leak via event handlers ... -
C# 3.0的类型推导
2009-08-23 12:24 0Howard Dierking: Lambda, Lambda ... -
把lock的意思给弄混了 T T
2009-08-20 17:49 2605悲剧啊……前几天有个同学不停问我Java里的同步问题,今天写C ... -
把IEnumerable<T>和IObservable<T>粘起来?
2009-07-23 03:02 0Channel 9: Expert to Expert: Br ... -
Scott Peterson: Variance, Thy Name is Ambiguity
2009-07-01 23:49 1639原文作者:Scott Peterson 原文地址:http:/ ... -
void无法协变
2009-06-30 11:17 0Eric Lippert The void is invari ... -
同一个表达式算出来的浮点数结果会不相等?
2009-05-30 03:27 0浮点数有很多可把玩的地方。例如下面这段C程序: #includ ... -
C#开始默认引用Microsoft.CSharp.dll
2009-05-20 16:14 0记得VB6的运行时么?留意到VB.NET的程序都需要额外的VB ... -
反射与显式实现接口的方法
2009-05-20 11:43 4063在前一帖里,我用到了下面三处Expression.Call() ... -
看到一个关于ref参数与多态的问题,记一下
2009-05-18 10:48 1946刚才读到Alan McGovern的一帖,问为什么形式参数是r ... -
C#的+=运算符两例
2009-05-06 18:18 2041刚偶尔看到了justjavac写的java解惑 - 半斤八两( ...
相关推荐
它有多个重载版本,可以接受各种类型的参数,如字符串、整型、浮点型、布尔值甚至其他对象。例如,`sb.append("Hello").append(" ").append("World")`将生成"Hello World"。 2. `delete(int start, int end)`:此...
在Java中,为了实现运算符重载,我们需要使用方法名和参数列表来模拟运算符的行为。例如,我们可以通过以下方式定义加法和减法操作: ```java public Bigint add(Bigint other) { Bigint resultBigInt = new ...
1. **方法重载(Overloading)**:在同一类中,方法名相同但参数列表不同(参数个数、类型或者顺序不同)的方法称为重载方法。重载是在同一个类中实现的,它提高了代码的可读性和复用性。 2. **方法重写(Overriding)*...
在 Java 中,字符串连接使用 `+` 操作符时,实际上是创建了一个新的 `StringBuilder` 对象来进行拼接,最后转换成 `String` 返回。 #### 2.21 == 和 equals() 都可用于比较两个操作数是否相等,它们有什么区别吗? ...
* writeIni() 方法(重载):用于写入 ini 文件,不管 Section,默认放在 default 里,接受两个参数:Key 和 Value。 * readIni() 方法:用于读取 ini 文件,接受两个参数:Section 和 Key。 读取 ini 文件 使用 ...
- 方法重载是在同一个类中定义多个同名方法,但参数列表不同。 - 方法隐藏是在派生类中声明与基类中同名的方法,但不使用`override`关键字。 - 方法重写是在派生类中覆盖基类中的虚方法。 - **正确答案解析:** ...
- **方法重载**:解释什么是方法重载,并给出示例。 - **多态性**:通过实例展示多态性的实现方式。 - **递归**:使用递归方法实现阶乘计算。 - **字符串操作**:包括字符串的创建、拼接等操作。 #### 二、设计模式...
`StringBuilder`的`ToString()`方法用于将内部存储的字符串转换为`String`对象,可以有重载版本,如`ToString(int startIndex, int length)`,这实际上调用了`String`类的`Substring`方法,截取指定范围的子字符串。...
例如,Circle类有无参数构造器和带参数构造器,Student类也有带参数的构造方法,用于设置对象的初始状态。 3. **访问修饰符**:如题目中的`private`关键字,用于限制成员变量或方法的访问权限,确保数据的安全性。 ...
StringBuilder sb = new StringBuilder(); for (int i = 0; i ; i++) sb.Append(i.ToString()); string result = sb.ToString(); ``` #### 4. XML与Html的区别 - **XML**(eXtensible Markup Language)是一...
6. 利用`operator`声明且仅声明了`==`,会有一个错误,因为重载了`"=="`就必须重载`"!="`以保持一致性。 7. 委托声明的关键词是`__?(delegate)`。委托在C#中是一种类型,它代表了一组方法的签名,可以用来传递...
StringBuilder strSql = new StringBuilder(); strSql.Append("select count(1) from tbl_JW_Score"); strSql.Append("where"); strSql.Append("CourseID=@CourseID and"); strSql.Append("StudentID=@...
5. **方法重载**:根据需求,可以创建一个自定义方法,如`public String numberString(String input, int length)`,其中`length`参数表示编号的位数。 6. **递归**:如果字符串编号涉及到嵌套或层级,递归方法可能...
14.4 获取对象的字符串表示:ToString 14.4.1 指定具体的格式和语言文化 14.4.2 将多个对象格式成一个字符串 14.4.3 提供定制格式化器 14.5 解析字符串来获取对象:Parse 14.6 编码:字符和字节的相互转换 ...
- 避免使用带有变长参数的方法重载,可能导致调用混乱。 - 了解并遵循Java的覆写规则,如变长参数的方法重载需谨慎。 - 注意自增操作符的副作用,避免潜在的并发问题。 - 尽量少用静态导入,避免命名冲突。 - ...
String reversedStr = new StringBuilder(strN).reverse().toString(); int symmetric = Integer.parseInt(reversedStr); int diff1 = Math.abs(n - symmetric); int diff2 = Math.abs(n - (symmetric + 1)); ...