lambda和属性人口之间的差异?

时间:2017-09-04 13:40:25

标签: c# lambda

我使用的库(return Populate(x => { x.ViewName = "Welcome"; recipients.ForEach(r => x.To.Add(r)); }); )使我们编写代码,例如

var populatedObject = new ObjectToPopulate();

populatedObject.ViewName = "Welcome";
recipients.ForEach(r => populatedObject.To.Add(r));

return populatedObject;

我开始想知道它是否只是一个设计选择,或者上面的lambda版本是否具有比以下代码更好的功能/性能?

+++INFO+++20170904_13:21:10 Application.main - Starting up...
+++ERROR+++20170904_13:21:12 Application.main - AuditTrailException at AuditTrailDatabase.<init>(AuditTrailDatabase.java:671) caused by SQLException(ORA-28040: No matching authentication protocol
) at DatabaseError.throwSqlException(DatabaseError.java:112)
com.ac.audit.trail.AuditTrailException
        at com.ac.audit.trail.database.AuditTrailDatabase.<init>(AuditTrailDatabase.java:671)
        at com.ac.audit.trail.Application.main(Application.java:154)
Caused by: com.ac.jdbc.JDBCInterfaceException: Error connecting to the database
        at com.ac.jdbc.JDBCInterface.getConnection(JDBCInterface.java:194)
        at com.ac.audit.trail.database.AuditTrailDatabase.<init>(AuditTrailDatabase.java:179)
        ... 1 more
Caused by: java.sql.SQLException: ORA-28040: No matching authentication protocol

        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:283)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)
        at oracle.jdbc.driver.T4CTTIoauthenticate.receiveOsesskey(T4CTTIoauthenticate.java:288)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:357)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
        at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:297)
        at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:221)
        at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPhysicalConnection(OracleConnectionPoolDataSource.java:157)
        at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:94)
        at oracle.jdbc.pool.OracleImplicitConnectionCache.makeCacheConnection(OracleImplicitConnectionCache.java:1529)
        at oracle.jdbc.pool.OracleImplicitConnectionCache.getCacheConnection(OracleImplicitConnectionCache.java:464)
        at oracle.jdbc.pool.OracleImplicitConnectionCache.getConnection(OracleImplicitConnectionCache.java:333)
        at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:404)
        at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:189)
        at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:165)
        at com.ac.jdbc.JDBCInterface.getConnection(JDBCInterface.java:182)
        ... 2 more

这种差异纯粹是语法上的还是超出了简单的写作偏好?

1 个答案:

答案 0 :(得分:1)

如果Populate函数刚刚调用了lambda表达式,那就没有区别了 - 这只是方便/语法的问题。

查看您的特定示例 - Mvc.Mailer似乎在Populate内部有一些额外的管道(即PopulateBody方法),因此在您的情况下结果可能会有所不同。