小编Pab*_*ney的帖子

为什么这两个字符串比较会返回不同的结果?

这是一小段代码:

String a = "abc";

Console.WriteLine(((object)a) == ("ab" + "c")); // true 
Console.WriteLine(((object)a) == ("ab" + 'c')); // false 
Run Code Online (Sandbox Code Playgroud)

为什么?

c# string reference pre-compilation

35
推荐指数
1
解决办法
2358
查看次数

使用以管理员身份运行的可执行文件的完整路径时,Windows 10无法访问指定的设备,路径或文件

注意:我用a和exe 替换目录,b.exe我重复我做的每一个测试,以确保它不是一个输入语法.

我有一个非常简单的部分代码,从Windows XP到Windows 7完美运行.

var processPath = @"c:\a\b.exe" ; // this exe exists on my computer
Process.Start(processPath); 
Run Code Online (Sandbox Code Playgroud)

并且

Directory.Exists(@"c:\a\") returns false on Windows 10. 
Run Code Online (Sandbox Code Playgroud)

由于Windows 10(我尚未测试8和8.1),第一个代码将抛出System.ComponentModel.Win32Exception("未找到指定文件"),第二个将返回false..

我也注意到当我使用Windows运行窗口(Windows Key + R)运行"c:\ a\b.exe"时,它的行为也是一样的.

有没有解决这个问题的解决方法?优先考虑的是一种不需要重新编译的解决方案.

NB:

  • 我以管理员身份运行Windows
  • 用户可以访问该文件(为计算机中的每个人启用安全属性).
  • c:\b.exe 工作!!
  • 我不是在寻找像更改应用程序工作目录和运行Process.Start("b.exe")之类的解决方案.

谢谢你们,

编辑:

  • 指定的路径不是错误的,文件不会丢失.
  • 计算机的每个用户作为总控制级别加入文件夹和文件(a目录和b.exe)
  • 我把exe放在根目录下时工作:"c:\ b.exe"
  • 与.bat文件相同的行为只有"echo Hello inside"
  • Console.WriteLine(String.Join("\r\n", Directory.GetDirectories(@"c:\"))) 显示目录 c:\a

更新:

结果icalcs c:\a\:

c:\a\ Tout le monde:(OI)(CI)(F)
         BUILTIN\Administrateurs:(I)(OI)(CI)(F)
         AUTORITE NT\SystŠme:(I)(OI)(CI)(F)
         BUILTIN\Utilisateurs:(I)(OI)(CI)(RX)
         AUTORITE NT\Utilisateurs …
Run Code Online (Sandbox Code Playgroud)

c# windows filesystems encoding windows-10

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

如何在并行块中正确继承线程文化?

我在ASP MVC网站上使用自动全球化.它工作正常,直到达到并行块:

public ActionResult Index() 
{
     // Thread.CurrentThread.CurrentCulture is automatically set to "fr-FR"
     // according to the requested "Accept-Language" header

     Parallel.Foreach(ids, id => {
        // Not every thread in this block has the correct culture. 
        // Some of them still have the default culture "en-GB"
     }) ; 

     return View()
}
Run Code Online (Sandbox Code Playgroud)

使并行块继承文化的最佳方法是什么?除了这个解决方案:

public ActionResult Index() 
{
     var currentCulture = Thread.CurrentThread.CurrentCulture  ;

     Parallel.Foreach(ids, id => {
         // I don't know if it's threadsafe or not. 
         Thread.CurrentThread.CurrentCulture = currentCulture ; 

     }) ; 

     return …
Run Code Online (Sandbox Code Playgroud)

c# globalization asp.net-mvc multithreading currentculture

6
推荐指数
1
解决办法
554
查看次数

WebHost.CreateDefaultBuilder(string [] args) 可能的命令行参数有哪些?

我经常使用命令行在WebHost.CreateDefaultBuilder(args)ASP.NET Core 应用程序上启动 kestrel 服务器。args我无法在任何地方找到这些命令行参数的文档。我的目标是在启动应用程序时更改侦听端口,而无需编辑任何配置文件。

public class Program
{
    // I need to change listening port by specifying args
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
}
Run Code Online (Sandbox Code Playgroud)

ASP.NET 核心 2.1/.NET 核心 2.2

c# .net-core asp.net-core

5
推荐指数
1
解决办法
2289
查看次数

LINQ to SQL如何知道委托中的内容?

使用实体框架,我们可以:

MyContext context = ... // a normal EF context 

var products =  context.Products.Where(p => p.Location == "France") ; 
Run Code Online (Sandbox Code Playgroud)

要么

var products =  context.Products.Where(p => p.CategoryId == 54) ;
Run Code Online (Sandbox Code Playgroud)

哪些都在它们的等效SQL查询中进行转换.

好的,但在那里的某个地方,有一段代码处理这个:

public static IEnumerable<T> Where(Func<bool, T> func) {
     ......
}
Run Code Online (Sandbox Code Playgroud)

从那个Where功能,怎么LINQ to SQL知道实现的是func什么?

答案可能很明显,但我找不到它.

c# linq-to-entities entity-framework linq-to-sql

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

检查IEnumerable <T>是否由yield关键字创建的正确方法

检查IEnumerable<T>yield关键字是否生成的正确方法是什么?

样品:

public IEnumerable<int> GetMeSomeInts() 
{
   // Unknown implementation
}
Run Code Online (Sandbox Code Playgroud)

某处:

IEnumerable<int> someInts = GetMeSomeInts() ;

if (someInts is generatedbyayield) // <- What should be this condition ? 
      someInts = someInts.ToList() ; 
Run Code Online (Sandbox Code Playgroud)

c# ienumerable

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

如何强制更新 ng-init ?

我发现在更新 rowIndex 后 ng-init 没有更新。

<div ng-init="item = getItem(rowIndex)">
   {{ item.Name }} 
</div>
Run Code Online (Sandbox Code Playgroud)

更改 rowIndex 后不会更新项目(即使使用 $timeout 进行更改)

是否有其他指令可以避免使用以下肮脏的技巧:

<div ng-repeat="item in [getItem(rowIndex)]">
   {{ item.Name }} 
</div>
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

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

返回HelpText类而不是字符串意外地工作

我正在使用CommandLine ParserAPI来处理我的应用程序的命令行参数.

示例页面中,有一段代码:

 [HelpOption]
  public string GetUsage() {
    return HelpText.AutoBuild(this, (HelpText current) => HelpText.DefaultParsingErrorsHandler(this, current));
  }
Run Code Online (Sandbox Code Playgroud)

它确实编译.

但是,实际上返回值HelpText.AutoBuild()是HelpText实例,它继承了immediatly对象.而且,AFAIK,string是一个密封类,不能继承.

怎么会这样?

c# implicit-conversion

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

使用 Angular 设置 float/double 格式

这可能是一个愚蠢的问题,但我对 Angular 很陌生。如何格式化浮点数/双精度数以在分隔符后仅显示两位小数。

 <input type="text" name="whatever" value="{{model.Rate}}" />
Run Code Online (Sandbox Code Playgroud)

我在 SO 中看到了一些问题,但我相信这样的基本操作可以用更简单的方式完成。

angularjs

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

为什么取消Task.Delay会变慢?

我创建了一个运行1000个任务的测试程序,它Task.Delay在20到30秒之间随机延迟.看起来取消此操作需要大约10秒..

这是我的测试程序:

class Program
{
    static async Task MainAsync()
    {
        CancellationTokenSource tokenSource = new CancellationTokenSource();

        List<Task> allTask = new List<Task>();
        Random r = new Random(9);

        async Task SafeDelay(int delay, CancellationToken token)
        {
            try
            {
                await Task.Delay(delay, token);
            }
            catch (TaskCanceledException)
            {
            }
        }

        for (int i = 0; i < 1000; i++)
        {
            var randomDelay = r.Next(20000, 30000);
            allTask.Add(SafeDelay(randomDelay, tokenSource.Token));
            ;
        }

        Stopwatch stopwatch = new Stopwatch();

        var cancelTask = Task.Delay(1000).ContinueWith(t =>
        {
            Console.Out.WriteLine("1000ms elapsed. Cancelation request start");; …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous

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