乔恩斯基特建议在他的单身执行,如果你需要为你的最大的懒惰单身,你应该添加静态构造函数,这将使编译器标记类型beforefieldinit.
但是,我做了一些测试,如果没有 beforefieldinit ,它似乎更懒.
代码示例(私有构造函数调用输出到控制台并验证字段是否已初始化:
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();
public static string Stub()
{
return "123";
}
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
//static Singleton()
//{
//}
private Singleton()
{
Console.WriteLine("private ctor");
}
public static Singleton Instance
{
get
{
return instance;
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我调用Singleton.Stub()时,私有构造函数没有被命中,当我取消注释静态构造函数时,总是调用私有构造函数.
这是我可以跟踪静态构造函数的唯一区别.
在我尝试理解beforefieldinit之间的区别时,我也读过Skeet 在这篇文章中的答案,尝试将false传递给DoSomething() - 无论是否有静态构造函数,私有构造函数都没有被调用.
public static void …
Run Code Online (Sandbox Code Playgroud) 每当我在 VS 2010 中打开一个新的(Web)项目时,默认构建配置都会设置为“活动(调试)”。我在某处读到,如果我将这样的项目上传到服务器,会对性能产生轻微影响(这是真的吗?),所以我必须手动转到属性并在构建选项卡中更改它以发布。有没有办法告诉 VS 2010 在“发布”配置中打开每个新项目?
是否需要此代码,或者因为页面的 UnLoad 事件会处置页面上的所有控件,所以编写此类代码是没有意义的:
fu.PostedFile.InputStream.Flush();
fu.PostedFile.InputStream.Close();
fu.FileContent.Dispose();
Run Code Online (Sandbox Code Playgroud)
我问这个问题是因为在msdn的示例中我看到他们编写的代码如下
FileUpload1.SaveAs(savePath);
Run Code Online (Sandbox Code Playgroud)
但之后不要费心处理流,但我看到有些人在保存后明确处理输入流?
我需要制作可扩展的流程.该进程主要具有I/O操作和一些次要CPU操作(主要是反序列化字符串).该进程在数据库中查询url列表,然后从这些url中获取数据,将下载的数据deserilize到对象,然后将一些数据保存到crm动态以及另一个数据库中.之后我需要更新第一个处理网址的数据库.部分要求是使并行度可配置.
最初我想通过一系列任务实现它,等待并使用Semaphore限制并行性 - 非常简单.然后我读了@Stephen Cleary的一些帖子和答案,建议使用TPL Dataflow,我认为它可能是一个很好的候选人.但是,我想通过使用Dataflow来确保我使代码"复杂化",这是值得的.我也有一个建议使用ForEachAsync扩展方法也很简单,但是我不确定它是否会因为它对集合进行分区而导致内存开销.
TPL Dataflow是否适合这种情况?它如何比Semaphore或ForEachAsync方法更好 - 如果我通过TPL DataFlow在每个其他选项(Semaphore/ForEachASync)上实现它,我将获得什么好处?
如何动态重命名datagridview的列标题?
到现在为止我使用了这段代码:
dataGridView1.Columns[0].HeaderText = "my_title";
Run Code Online (Sandbox Code Playgroud)
问题是Columns [0]可能会随着时间而改变..
如何迭代所有列标题并执行类似操作
if (Column.HeaderText=="customer_id") {Column.HeaderText="my_title"} ?
Run Code Online (Sandbox Code Playgroud) 如何在lambda表达式中正确使用async/await关键字?这是代码:
public async Task<IHttpActionResult> GetUsers() {
var query = await _db.Users.ToListAsync();
var users = query.Select(async u => new
{
FirstName = u.FirstName,
LastName = u.LastName,
IsGeek = await _userManager.IsInRoleAsync(u.Id, "Geek")
});
return Ok(users);
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,此代码在webapi控制器中运行,它编译时没有任何错误,问题是它需要额外的 await
某处,因为此操作永远不会返回.
请注意,_db
并且_usermanager
是应用程序的DbContext
和UserManager
.
谢谢.
更新:
这个等效的代码永远不会失败(但它不是优雅的:():
var query = await _db.Users.ToListAsync();
var users = new List<object>();
foreach (var u in query)
{
bool IsGeek = await _userManager.IsInRoleAsync(u.Id, "IsGeek");
users.Add( new {
FirstName = u.FirstName,
LastName …
Run Code Online (Sandbox Code Playgroud) 如果我使用实体框架进行连接,我怎样才能在sql语言中使用sql查询?我从这篇文章中了解到,ObjectContext.ExecuteStoreQuery无济于事,因为它只适用于某些查询(不是1:1到sql语言).
提到的另一个选项是使用ObjectContext.Connection并从那里编写"经典"ADO.NET代码,但我无法弄清楚如何.
有人可以写一个非常简单的代码示例如何执行简单的查询,如
select MAX(customer_id) from Customers
Run Code Online (Sandbox Code Playgroud)
与实体框架?我知道Linq-To-Sql存在,但我更喜欢使用sql语言,它看起来更简单,我对它更熟悉.
c# ×4
ado.net ×1
asp.net ×1
async-await ×1
dataflow ×1
datagridview ×1
debugging ×1
default ×1
dispose ×1
file-upload ×1
lambda ×1
linq ×1
linq-to-sql ×1
release ×1
semaphore ×1
singleton ×1
sql ×1
task ×1
tpl-dataflow ×1
webforms ×1
winforms ×1