为什么C#语言设计者可能不支持这样的东西(从计算机程序的结构和解释,第二版,第30页):
/// <summary>Return the square root of x.</summary>
double sqrt(double x) {
bool goodEnough(double guess) {
return Math.Abs(square(guess) - x) < 0.001;
}
double improve(double guess) {
return average(guess, x / guess);
}
double sqrtIter(double guess) {
return goodEnough(guess) ? guess : sqrtIter(improve(guess));
}
sqrtIter(1.0);
}
Run Code Online (Sandbox Code Playgroud) 我的代码看起来像这样:
var ds = new DataSet();
var fooIDToFoo = new Dictionary<string, Foo> {{"Foo1", foo1}, {"Food2", foo2}};
var sql = "SELECT * FROM Foo WHERE FooID IN ('Foo1', 'Foo2')";
var da = new SqlDataAdapter(sql, dbConnection);
da.SelectCommand.CommandTimeout = 60;
// Can't set da.InsertCommand.CommandTimeout because db.InsertCommand is null.
// Can't set da.UpdateCommand.CommandTimeout because db.UpdateCommand is null.
var cb = new SqlCommandBuilder(da);
var fooTable = "Foo";
da.Fill(ds, fooTable);
var fooTable = ds.Tables[fooTable];
var existingFooIDSet = new Set<string>(); // Modify any Foo that's in DB. …Run Code Online (Sandbox Code Playgroud)