小编Jay*_*uzi的帖子

当我在接口方法调用上忘记`await`时没有警告

考虑:

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方法,我会收到编译器警告.这里可能有一个错误,所以我很高兴发出警告.

但是,如果我在接口方法上进行相同的调用,则不会收到警告.在这段代码中让一个错误过去很容易.

我如何确保不犯这个错误?我可以申请保护自己的模式吗?

c# async-await

23
推荐指数
1
解决办法
1296
查看次数

LINQ-组合多个列表<T>并按值排序(.Net 3.5)

我正在尝试组合一些List<T> where T:IGetTime(即T总是有方法getTime()).

然后我想为了通过项目DateTimegetTime()返回.

我的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)

无论如何都要结合并订购最终清单????

提前致谢,

罗伯托

.net c# linq generics

21
推荐指数
1
解决办法
3万
查看次数

什么是新的C#异步功能的非网络示例?

微软刚刚宣布了新的C#Async功能.到目前为止,我见过的每个例子都是关于从HTTP异步下载的东西.当然还有其他重要的异步事物吗?

假设我没有编写新的RSS客户端或Twitter应用程序.C#Async对我有什么好玩的?

编辑我有一个啊哈!看安德斯的PDC会议的那一刻.在过去,我一直致力于使用"观察者"线程的程序.这些线程正在等待某些事情发生,比如观察要更改的文件.他们没有做工作,他们只是空闲,并在发生事情时通知主线程.这些线程可以在新模型中替换为await/async代码.

c# async-await c#-5.0

20
推荐指数
3
解决办法
2418
查看次数

有没有琐碎的财产保存你的培根?

那里有很多建议你不应该公开地公开你的字段,而是使用普通的属性.我一遍又一遍地看到它.

我理解这些论点,但在大多数情况下我认为这不是一个好建议.

有没有人有一个真正重要的时间的例子?在写一个琐碎的财产时,将来可能会有一些重要的事情(或者当没有使用它时会让他们陷入真正的麻烦)?

编辑:DataBinding参数是正确的,但不是很有趣.DataBinding代码中的一个错误是它不接受公共字段.因此,我们必须编写属性来解决该bug,而不是因为属性是明智的类设计选择.

编辑:要清楚,我正在寻找现实世界的例子,而不是理论.真正重要的时刻.

编辑:在setter上设置断点的能力似乎很有价值.为调试器设计我的代码是不幸的:我宁愿调试器变得更聪明,但考虑到我们的调试器,我将采用这种能力.好东西.

.net c#

19
推荐指数
5
解决办法
2679
查看次数

Switch语句中的大小写顺序是否会改变性能?

假设我有一个如下的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多次称这个声明,这会是一个实质性的改进吗?或者,如果没有,我如何使用我的频率知识来提高性能?

c# performance switch-statement micro-optimization

19
推荐指数
1
解决办法
8113
查看次数

将XML转换为PSObject

注意:我正在使用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.

xml powershell

19
推荐指数
1
解决办法
3万
查看次数

如何使用XmlDocument向根元素添加多个名称空间?

我需要创建一个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包含多个名称空间的根元素?

.net c# xml xmldocument namespaces

18
推荐指数
2
解决办法
5万
查看次数

C#:在您拥有DirectoryInfo的目录中创建新的FileInfo

我只是想知道你什么时候有:

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()方法.

c# directory file

18
推荐指数
1
解决办法
3万
查看次数

为什么我不能在即时窗口中声明新变量?

这可以节省我这么多时间.有时我发现自己在手表或即时窗口中写这样的东西:

MyObject.Function1.Fuction2.Fuction3.Fuction2
Run Code Online (Sandbox Code Playgroud)

相反,我可以声明几个新变量,并以更结构化的方式执行此操作.

但是不允许这样做.

有什么方法可以做到这一点吗?在未来的版本中是否会支持我想要的东西?

.net debugging visual-studio

18
推荐指数
4
解决办法
1万
查看次数

做异常降低性能?

我的应用程序遍历目录树,并在每个目录中尝试打开具有特定名称的文件(使用File.OpenRead()).如果此调用抛出,FileNotFoundException则它知道该文件不存在.我宁愿在此File.Exists()之前打电话来检查文件是否存在?这会更有效吗?

.net c# exception-handling

18
推荐指数
5
解决办法
1523
查看次数