考虑:
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
C c = new C();
c.FooAsync(); // warning CS4014: Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the 'await' operator to the result of the call.
((I)c).FooAsync(); // No warning
}
}
class C : I
{
public async Task FooAsync()
{
}
}
interface I
{
Task FooAsync();
}
Run Code Online (Sandbox Code Playgroud)
如果我直接在c对象上调用async方法,我会收到编译器警告.这里可能有一个错误,所以我很高兴发出警告.
但是,如果我在接口方法上进行相同的调用,则不会收到警告.在这段代码中让一个错误过去很容易.
我如何确保不犯这个错误?我可以申请保护自己的模式吗?
我正在尝试组合一些List<T> where T:IGetTime(即T总是有方法getTime()).
然后我想为了通过项目DateTime即getTime()返回.
我的LINQ看起来像这样:
public static List<T> Combine(List<T> one, List<T> two, List<T> three)
{
var result = from IGetTime item in one
from IGetTime item2 in two
from IGetTime item3 in three
select new{ item, item2, item3 };
return result.ToList();
}
Run Code Online (Sandbox Code Playgroud)
我还没有补充一下orderby.哪个应该看起来像这样:
var thestream = from T item in this
orderby item.getTime() descending
select item;
Run Code Online (Sandbox Code Playgroud)
无论如何都要结合并订购最终清单????
提前致谢,
罗伯托
微软刚刚宣布了新的C#Async功能.到目前为止,我见过的每个例子都是关于从HTTP异步下载的东西.当然还有其他重要的异步事物吗?
假设我没有编写新的RSS客户端或Twitter应用程序.C#Async对我有什么好玩的?
编辑我有一个啊哈!看安德斯的PDC会议的那一刻.在过去,我一直致力于使用"观察者"线程的程序.这些线程正在等待某些事情发生,比如观察要更改的文件.他们没有做工作,他们只是空闲,并在发生事情时通知主线程.这些线程可以在新模型中替换为await/async代码.
那里有很多建议你不应该公开地公开你的字段,而是使用普通的属性.我一遍又一遍地看到它.
我理解这些论点,但在大多数情况下我认为这不是一个好建议.
有没有人有一个真正重要的时间的例子?在写一个琐碎的财产时,将来可能会有一些重要的事情(或者当没有使用它时会让他们陷入真正的麻烦)?
编辑:DataBinding参数是正确的,但不是很有趣.DataBinding代码中的一个错误是它不接受公共字段.因此,我们必须编写属性来解决该bug,而不是因为属性是明智的类设计选择.
编辑:要清楚,我正在寻找现实世界的例子,而不是理论.真正重要的时刻.
编辑:在setter上设置断点的能力似乎很有价值.为调试器设计我的代码是不幸的:我宁愿调试器变得更聪明,但考虑到我们的调试器,我将采用这种能力.好东西.
假设我有一个如下的switch语句
switch(alphabet) {
case "f":
//do something
break;
case "c":
//do something
break;
case "a":
//do something
break;
case "e":
//do something
break;
}
Run Code Online (Sandbox Code Playgroud)
现在假设我知道Alphabete 的频率最高,然后分别是a,c和f.所以,我只是重新构建了case语句顺序,并按如下方式进行了修改:
switch(alphabet) {
case "e":
//do something
break;
case "a":
//do something
break;
case "c":
//do something
break;
case "f":
//do something
break;
}
Run Code Online (Sandbox Code Playgroud)
第二个switch陈述会比第一个switch陈述更快吗?如果是的话,如果在我的计划中,我需要switch多次称这个声明,这会是一个实质性的改进吗?或者,如果没有,我如何使用我的频率知识来提高性能?
注意:我正在使用ConvertTo-XML,不能使用Export-Clixml:
我创建一个简单的PSObject:
$a = New-Object PSObject -Property @{
Name='New'
Server = $null
Database = $null
UserName = $null
Password = $null
}
Run Code Online (Sandbox Code Playgroud)
然后我使用ConvertTo-XML以下方法将其转换为XML :
$b = $a | Convertto-XML -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)
XML看起来像这样:
<?xml version="1.0"?>
<Objects>
<Object>
<Property Name="Password" />
<Property Name="Name">New</Property>
<Property Name="Server" />
<Property Name="UserName" />
<Property Name="Database" />
</Object>
</Objects>
Run Code Online (Sandbox Code Playgroud)
我无法找出点符号或XPath查询来提取属性/元素并转换$b回原始PSObject.
我需要创建一个XmlDocument包含多个名称空间的根元素.我使用的是C#2.0或3.0
这是我的代码:
XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("JOBS", "http://www.example.com");
doc.AppendChild(root);
XmlElement job = doc.CreateElement("JOB", "http://www.example.com");
root.AppendChild(job);
XmlElement docInputs = doc.CreateElement("JOB", "DOCINPUTS", "http://www.example.com");
job.AppendChild(docInputs);
XmlElement docInput = doc.CreateElement("JOB", "DOCINPUT", "http://www.example.com");
docInputs.AppendChild(docInput);
XmlElement docOutput = doc.CreateElement("JOB", "DOCOUTPUT", "http://www.example.com");
docOutputs.AppendChild(docOutput);
Run Code Online (Sandbox Code Playgroud)
目前的输出:
<JOBS xmlns="http://www.example.com">
<JOB>
<JOB:DOCINPUTS xmlns:JOB="http://www.example.com">
<JOB:DOCINPUT />
</JOB:DOCINPUTS>
<JOB:DOCOUTPUTS xmlns:JOB="http://www.example.com">
<JOB:DOCOUTPUT />
</JOB:DOCOUTPUTS>
</JOB>
</JOBS>
Run Code Online (Sandbox Code Playgroud)
但是,我想要的输出是:
<JOBS xmlns:JOBS="http://www.example.com" xmlns:JOB="http://www.example.com">
<JOB>
<JOB:DOCINPUTS>
<JOB:DOCINPUT />
</JOB:DOCINPUTS>
<JOB:DOCOUTPUTS>
<JOB:DOCOUTPUT />
</JOB:DOCOUTPUTS>
</JOB>
</JOBS>
Run Code Online (Sandbox Code Playgroud)
我的问题:我如何创建一个XmlDocument包含多个名称空间的根元素?
我只是想知道你什么时候有:
var dir = new DirectoryInfo(@"C:\Temp");
Run Code Online (Sandbox Code Playgroud)
是否有更简单/更清晰的方法将新文件添加到该目录?
var file = new FileInfo(Path.Combine(dir.FullName, "file.ext"));
Run Code Online (Sandbox Code Playgroud)
我想我可能只是做一个扩展方法或者什么,但好奇如果已经存在的东西在这里看不到......我的意思是DirectoryInfo确实有GetFiles()方法.
这可以节省我这么多时间.有时我发现自己在手表或即时窗口中写这样的东西:
MyObject.Function1.Fuction2.Fuction3.Fuction2
Run Code Online (Sandbox Code Playgroud)
相反,我可以声明几个新变量,并以更结构化的方式执行此操作.
但是不允许这样做.
有什么方法可以做到这一点吗?在未来的版本中是否会支持我想要的东西?
我的应用程序遍历目录树,并在每个目录中尝试打开具有特定名称的文件(使用File.OpenRead()).如果此调用抛出,FileNotFoundException则它知道该文件不存在.我宁愿在此File.Exists()之前打电话来检查文件是否存在?这会更有效吗?
c# ×8
.net ×5
async-await ×2
xml ×2
c#-5.0 ×1
debugging ×1
directory ×1
file ×1
generics ×1
linq ×1
namespaces ×1
performance ×1
powershell ×1
xmldocument ×1