小编use*_*923的帖子

ThreadStatic与ThreadLocal <T>:比属性更通用吗?

[ThreadStatic]ThreadLocal<T>使用泛型时使用属性定义.为什么选择不同的设计方案?在这种情况下使用泛型over属性有哪些优缺点?

c# generics attributes thread-local threadstatic

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

异步迭代器任务<IEnumerable <T >>

我正在尝试实现一个返回迭代器的异步函数.这个想法如下:

    private async Task<IEnumerable<char>> TestAsync(string testString)
    {
        foreach (char c in testString.ToCharArray())
        {
            // do other work
            yield return c;
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,有一个错误消息,该函数不能是迭代器块,因为Task<IEnumerable<char>>它不是迭代器接口类型.有解决方案吗?

.net c# clr iterator asynchronous

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

集成测试和托管 ASP.NET Core 6.0,无需启动类

要在以前版本的 .NET Core 中设置单元测试,我可以通过以下方式在测试项目中托管我的 Web 应用程序或 Web API:

IHost host = Host.CreateDefaultBuilder()
    .ConfigureWebHostDefaults(config =>
    {
        config.UseStartup<MyWebApp.Startup>();
        config.UseUrls("https://localhost:44331/");
        ...    
    })
    .Build();
Run Code Online (Sandbox Code Playgroud)

当前.NET 6.0不使用Startup类概念,因此无法引用。如何以正确、干净的方式在测试项目中托管 ASP.NET Core 应用程序?

c# unit-testing asp.net-core .net-6.0

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

转换为C#中的反射类型

请考虑以下代码:

object objFoo = MakeFoo(); // object MakeFoo(){return new Foo();}
MethodInfo methodInfo = typeof(Program).GetMethod("Baz"); // Foo Baz(){return foo;}
Type typeFoo = methodInfo.ReturnType;
var result = (typeFoo)objFoo;
Run Code Online (Sandbox Code Playgroud)

我需要做一些魔法typeFoo来获得结果吗?

c# reflection types casting

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

具有未知数量参数的Func <>

请考虑以下伪代码:

TResult Foo<TResult>(Func<T1, T2,...,Tn, TResult> f, params object[] args)
{
    TResult result = f(args);
    return result;
}
Run Code Online (Sandbox Code Playgroud)

该函数接受Func<>未知数量的泛型参数和相应参数的列表.是否可以用C#编写?如何定义和调用Foo?我怎么传递argsf

.net c# generics clr functional-programming

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

PowerShell是否编译脚本?

假设我有一个简单的PowerShell脚本:

1..3 | Write-Host 
Run Code Online (Sandbox Code Playgroud)
  • PowerShell如何处理它?
  • 它是构建内存中的程序集还是一些临时的.dll文件?
  • 我可以使用一些工具(例如ILSpy,VS,WinDbg)检查这个程序集和MSIL吗?
  • PowerShell是否以相同的方式处理文件脚本和REPL命令行输入(即编译/解释)?
  • 我可以将此编译的程序集与C#和其他.Net语言一起使用吗?
  • PS脚本可以编译为本机二进制代码吗?

.net c# debugging powershell cil

10
推荐指数
1
解决办法
3226
查看次数

App.config vs Web.config:哪个优先?

假设一个项目同时包含App.config和Web.config文件以及一些有冲突的信息.是否有哪些规则具有更高优先级的规则?或者应用程序必须忽略它们并抛出异常?

.net c# configuration app-config web-controls

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

在C#中使用静态方法实现接口

假设我有以下ILAsm代码:

    .class public interface abstract ITest
    {
        .field public static int32 counter

        .method public static void StaticMethod(string str)
        {
            ldarg.0
            call void [mscorlib]System.Console::WriteLine(string)
            ret
        }

        .method public virtual abstract void InstMethod(string) { }
    }
Run Code Online (Sandbox Code Playgroud)

是否可以在C#中定义实现此ITest接口的类?

我可以在ILAsm中实现这个接口:

    .class public TestImpl extends [mscorlib]System.Object implements ITest
    {
        .method public virtual void InstMethod(string str)
        {
            ldarg.1
            call void ITest::StaticMethod(string)
            ret
        }

        .method public specialname rtspecialname instance void .ctor()
        {
            ldarg.0
            call instance void .base::.ctor()
            ret
        }
    }
Run Code Online (Sandbox Code Playgroud)

并成功使用C#代码中实现的类:

        var testImpl = new …
Run Code Online (Sandbox Code Playgroud)

.net c# clr il

7
推荐指数
1
解决办法
2867
查看次数

Array.Sort in with nontrivial comparison function

在Nutshell中考虑C#5.0中的以下代码,p.289:

int[] numbers = { 1, 2, 3, 4, 5 };
Array.Sort (numbers, (x, y) => x % 2 == y % 2 ? 0 : x % 2 == 1 ? -1 : 1); 
Run Code Online (Sandbox Code Playgroud)

给出了结果{3, 5, 1, 2, 4}.

我在纸上尝试了这个并得到了 {1, 3, 5, 2, 4}.

为什么计算机排序3 > 5 > 1

c# sorting algorithm lambda

6
推荐指数
2
解决办法
3226
查看次数

命名参数在C#中调用可变参数编号

假设我有以下C#函数:

void Foo(int bar, params string[] parpar) { }
Run Code Online (Sandbox Code Playgroud)

我想使用命名参数调用此函数:

Foo(bar: 5, parpar: "a", "b", "c");
Run Code Online (Sandbox Code Playgroud)

编译器给出错误消息:"命名参数不能位于位置",因为我在"b"和"c"之前没有名称.

有没有办法使用命名参数而不手动将params表示为数组?

c# function params

6
推荐指数
2
解决办法
3330
查看次数