如:
private string Test()
{string houseInfo = String.Empty; //是定义到这里好
for (int i=0;i<dt.Rows.Count;i++)
{
string houseInfo = dt.Rows[i]["HOUSE_NAME"].ToString(); //还是定义到这里好
//之后在循环体中多次用到这个变量做各种操作
}
return
}
private string Test()
{string houseInfo = String.Empty; //是定义到这里好
for (int i=0;i<dt.Rows.Count;i++)
{
string houseInfo = dt.Rows[i]["HOUSE_NAME"].ToString(); //还是定义到这里好
//之后在循环体中多次用到这个变量做各种操作
}
return
}
{ string houseInfo = String.Empty; //定义到这里好
for (int i=0;i <dt.Rows.Count;i++)
{
string houseInfo = dt.Rows[i][ "HOUSE_NAME "].ToString(); }
return
}
private string Test()
{
StringBuilder sb = new StringBuilder();
string houseInfo = String.Empty; //是定义到这里好
for (int i=0;i <dt.Rows.Count;i++)
{
string houseInfo = dt.Rows[i][ "HOUSE_NAME "].ToString(); //还是定义到这里好
//之后在循环体中多次用到这个变量做各种操作
sb.Append().Append(houseInfo.SubString());
}
return sb.ToString();
}
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace stringInloop
{
class Program
{
private static Random random = new Random(); static void Main(string[] args)
{
string a = string.Empty;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; i++)
{
a = random.Next().ToString();
sb.Append(a);
} Console.WriteLine(sb.ToString());
}
}
}using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace stringInloop2
{
class Program
{
private static Random random = new Random(); static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; i++)
{
string a = random.Next().ToString();
sb.Append(a);
} Console.WriteLine(sb.ToString());
}
}
}
IL1文件
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 64 (0x40)
.maxstack 2
.locals init ([0] string a,
[1] class [mscorlib]System.Text.StringBuilder sb,
[2] int32 i,
[3] int32 CS$0$0000)
IL_0000: ldstr ""
IL_0005: stloc.0
IL_0006: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor()
IL_000b: stloc.1
IL_000c: ldc.i4.0
IL_000d: stloc.2
IL_000e: br.s IL_002f
IL_0010: ldsfld class [mscorlib]System.Random stringInloop.Program::random
IL_0015: callvirt instance int32 [mscorlib]System.Random::Next()
IL_001a: stloc.3
IL_001b: ldloca.s CS$0$0000
IL_001d: call instance string [mscorlib]System.Int32::ToString()
IL_0022: stloc.0
IL_0023: ldloc.1
IL_0024: ldloc.0
IL_0025: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
IL_002a: pop
IL_002b: ldloc.2
IL_002c: ldc.i4.1
IL_002d: add
IL_002e: stloc.2
IL_002f: ldloc.2
IL_0030: ldc.i4.s 10
IL_0032: blt.s IL_0010
IL_0034: ldloc.1
IL_0035: callvirt instance string [mscorlib]System.Object::ToString()
IL_003a: call void [mscorlib]System.Console::WriteLine(string)
IL_003f: ret
} // end of method Program::MainIL2文件.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 58 (0x3a)
.maxstack 2
.locals init ([0] class [mscorlib]System.Text.StringBuilder sb,
[1] int32 i,
[2] string a,
[3] int32 CS$0$0000)
IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor()
IL_0005: stloc.0
IL_0006: ldc.i4.0
IL_0007: stloc.1
IL_0008: br.s IL_0029
IL_000a: ldsfld class [mscorlib]System.Random stringInloop2.Program::random
IL_000f: callvirt instance int32 [mscorlib]System.Random::Next()
IL_0014: stloc.3
IL_0015: ldloca.s CS$0$0000
IL_0017: call instance string [mscorlib]System.Int32::ToString()
IL_001c: stloc.2
IL_001d: ldloc.0
IL_001e: ldloc.2
IL_001f: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
IL_0024: pop
IL_0025: ldloc.1
IL_0026: ldc.i4.1
IL_0027: add
IL_0028: stloc.1
IL_0029: ldloc.1
IL_002a: ldc.i4.s 10
IL_002c: blt.s IL_000a
IL_002e: ldloc.0
IL_002f: callvirt instance string [mscorlib]System.Object::ToString()
IL_0034: call void [mscorlib]System.Console::WriteLine(string)
IL_0039: ret
} // end of method Program::Main
是编译器在编译的时候 将a处理掉了。这样的话 写在外面相对来说比较慢。不如直接
sb.Append().Append(dt.Rows[i][ "HOUSE_NAME "].ToString());像如梦那样。