小编And*_*ndy的帖子

我们什么时候需要使用System.AppContext?

似乎AppContext只有一个叫做的属性BaseDirectory.但是Environment类似乎有更多的属性和方法.

所以AppContext被替换Environment类呢?

c#

9
推荐指数
1
解决办法
5257
查看次数

为什么List <T>实现了这么多接口?

List<T> 派生自以下接口:

public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
Run Code Online (Sandbox Code Playgroud)

我只是想知道为什么它需要所有这些接口(在类声明中)?

IList本身已经从派生ICollection<T>,IEnumerable<T>UND IEnumerable.

那么为什么以下不够呢?

public class List<T> : IList<T>, IList
Run Code Online (Sandbox Code Playgroud)

我希望你能解决我的困惑.

c# derived-class

8
推荐指数
1
解决办法
293
查看次数

postgresql:在标题上强制引用

我尝试在标题上强制行情.

Copy (
    SELECT *
    FROM "table"
)
TO <path> CSV HEADER FORCE QUOTE *;
Run Code Online (Sandbox Code Playgroud)

有了这个,我得到标题,除了标题之外所有都在引号中.所以我想要完全相反.

TO <path> CSV HEADER FORCE QUOTE HEADER;
Run Code Online (Sandbox Code Playgroud)

TO <path> CSV FORCE QUOTE HEADER;
Run Code Online (Sandbox Code Playgroud)

不工作.

知道如何管理吗?

sql csv postgresql header quote

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

在控制台中隐藏滚动条而不会闪烁

我在一秒钟内多次在控制台窗口中写入.

我想出了如何删除滚动条:

Console.BufferWidth = Console.WindowWidth = 35;
Console.BufferHeight = Console.WindowHeight;
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好.但是当我想写一行的最后一列时,它会添加一个新行!这是合乎逻辑的,但如何避免这种情况?

我试图调整控制台的大小:

Console.BufferWidth++;
Console.BufferHeight++;

// Write to the last column of a line

Console.BufferWidth--;
Console.BufferHeight--;
Run Code Online (Sandbox Code Playgroud)

但这会闪烁,因为这些线会在一秒钟内多次执行!

任何想法或我将不得不与滚动条一起生活?

c# scrollbar console-application

3
推荐指数
2
解决办法
6393
查看次数

如何在观察CancellationToken的同时等待一个等待对象?

我有一个等待的对象不是Task(例如,IObservable<T>安装了RX).我想创建一个Task,如果提供CancellationToken被取消将最终取消,否则返回等待对象的结果.我想出了以下代码:

public static Task ObserveTokenAsync(CancellationToken token)
{
    TaskCompletionSource<Unit> tcs = new TaskCompletionSource<Unit>();
    token.Register(() => tcs.SetCanceled());
    return tcs.Task;
}

public static async Task<T> WrapObservableAsync<T>(IObservable<T> obs)
{
    return await obs;
}

public static async Task<T> AwaitWhileObservingTokenAsync<T>(IObservable<T> obs, CancellationToken token)
{
    var obsTask = WrapObservableAsync(obs);
    var tokenTask = ObserveTokenAsync(token);
    await Task.WhenAny(obsTask, tokenTask).ConfigureAwait(false);
    token.ThrowIfCancellationRequested();
    return obsTask.Result;
}
Run Code Online (Sandbox Code Playgroud)

使用这种方法,我将需要为我将使用的每个等待类型重载/重写最后两种方法.有没有更好的方法来做到这一点?我的猜测是INotifyCompletion界面可能在某种程度上有用.

此外,ObserveTokenAsync如果提供的令牌不会被取消,该方法是否会导致某种资源/内存泄漏?如果是,将在TaskCompletionSource方法结束时设置为完成AwaitWhileObservingTokenAsync将是一个很好的方法来解决它?

c# asynchronous task-parallel-library system.reactive async-await

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

将字符串和字符放在一起的性能

当我选择将一个字符串或一个char添加到常量字符串时,我想知道是否存在性能影响.

所以我写了一个小型控制台应用程序:(.NET 4)

static class Program
{
    const string STR = "string ";

    static void Main()
    {
        var arr = new string[99999999];

        Stopwatch timer = new Stopwatch();

        Console.ReadLine();

        timer.Start();

        //for (uint i = 0; i < 99999999; i++)
        //{
        //  arr[i] = STR + 'C';
        //}

        for (uint i = 0; i < 99999999; i++)
        {
            arr[i] = STR + "C";
        }

        timer.Stop();

        Console.WriteLine(timer.ElapsedMilliseconds);

        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

你必须评论一个for循环.

所以,STR + "C"需要大约1300毫秒.

因为STR + 'C'我还没有看到结果.这需要太长时间,似乎很难打扰我的电脑.

所以,我的问题是.这种性能影响如何可能?我知道在实际使用中不会经常出现99999999个值的数组,但它仍然是一个巨大的差异.

提前致谢!

.net c# types

2
推荐指数
1
解决办法
151
查看次数

CSS中的'property:0.5px'或'property:.5px'?

我已经看过这个符号使用了很多,我想知道,这两个符号之间有什么明显的区别吗?

element#id
{
  property: 0.5px;
}
Run Code Online (Sandbox Code Playgroud)

element#id
{
  property: .5px;
}
Run Code Online (Sandbox Code Playgroud)

property: .5px;一直在使用,因为我发现它看起来更干净.

有谁知道哪一个更好还是更正确?我没有在w3规范中找到这种情况.

谢谢!

css properties zero

0
推荐指数
1
解决办法
1172
查看次数

如何从List <dynamic>()获取数据?

我的代码是这样的

var eventDocs = new List<dynamic>();     
foreach (var node in eventtypeNode.GetDescendantNodes())
{
    string files = node.GetProperty("document").Value;
    eventDocs.Add(new { Id = node.Id, Name = node.Name, CreatedOn = node.CreateDate, Path = files });
}
Run Code Online (Sandbox Code Playgroud)

这很好用.现在我试图从这个动态列表中获取数据

foreach (var eventDoc in eventDocs)
{
     eventDoc.----  //nothing comes on intellisence
}
Run Code Online (Sandbox Code Playgroud)

IntelliSense上没有任何东西?我做错了吗?

c# dynamic

0
推荐指数
1
解决办法
667
查看次数