Featured post

c# - Usage of Server Side Controls in MVC Frame work -

i using asp.net 4.0 , mvc 2.0 web application. project requiremrnt have use server side control in application not possibl in noraml case. ideally want use adrotator control , datalist control. i saw few samples , references in codepleax mvc controllib howwver found less useful. can tell how utilize theese controls in asp.net application along mvc. note: please provide functionalities related adrotator , datalist controls not equivalent functionalities thanks in advace. mvc pages not use normal .net solution makes use of normal .net components impossible. a normal .net page use event driven solution call different methods service side mvc use actions , view completly different way handle things. also, mvc not use viewstate normal .net controlls require. found article discussing mixing of normal .net , mvc.

c# - How does the StringBuilder decide how large its capacity should be? -


i know stringbuilder object allocates more memory when use sb.append(..) when sb @ capacity. how capacity increase?

    stringbuilder sb = new stringbuilder(5);     sb.append("0123456789"); 

now capacity of sb , why? multiplier?

just clarity. asking capacity , not length.

thanks!

the capacity doubles each time apart special cases:

  • if doubling not enough capacity further increased exact amount required.
  • there upper limit - 0x7fffffff.

you can see algorithm using .net reflector or downloading reference source.

i can't post source code official .net implementation here's code mono implementation:

// try double buffer, if doesn't work, set length capacity if (size > capacity) {      // first time string appended, set _cached_str     // , _str it. allows optimizations.     // below, take account.     if ((object) _cached_str == (object) _str && capacity < constdefaultcapacity)         capacity = constdefaultcapacity;      capacity = capacity << 1;  // means "capacity *= 2;"      if (size > capacity)         capacity = size;      if (capacity >= int32.maxvalue || capacity < 0)         capacity = int32.maxvalue;      if (capacity > _maxcapacity && size <= _maxcapacity)         capacity = _maxcapacity; } 

i recommend don't write code relies on specific algorithm implementation detail, , not guaranteed interface.


Comments

Popular posts from this blog

c# - Usage of Server Side Controls in MVC Frame work -

cocoa - Nesting arrays into NSDictionary object (Objective-C) -

ios - Very simple iPhone App crashes on UILabel settext -