相关疑难解决方法(0)

monad只是endofunctors类别中的幺半群,问题是什么?

谁首先说了以下几点?

monad只是endofunctors类别中的幺半群,问题是什么?

在一个不太重要的注意事项上,这是真的,如果是这样,你能给出一个解释(希望有一个可以被没有Haskell经验的人理解的那个)吗?

monads haskell category-theory monoids

708
推荐指数
6
解决办法
15万
查看次数

C#是否支持使用静态局部变量?

相关: 如何在Java中创建静态局部变量?


如果这是重复,请原谅; 我很确定以前会问这个问题,我看了一下,但没有找到傻瓜.

我可以在C#中创建一个静态局部变量吗?如果是这样,怎么样?

我有一个很少使用的静态私有方法.静态方法使用正则表达式,我想初始化一次,并且仅在必要时.

在C中,我可以使用本地静态变量来完成此操作.我可以用C#做​​这个吗?

当我尝试编译此代码时:

    private static string AppendCopyToFileName(string f)
    {
        static System.Text.RegularExpressions.Regex re =
            new System.Text.RegularExpressions.Regex("\\(copy (\\d+)\\)$");
    }
Run Code Online (Sandbox Code Playgroud)

......它给了我一个错误:

错误CS0106:修饰符'static'对此项无效


如果没有本地静态变量,我想我可以通过创建一个小的新私有静态类来近似我想要的,并将方法和变量(字段)插入到类中.像这样:

public class MyClass 
{
    ...
    private static class Helper
    {
        private static readonly System.Text.RegularExpressions.Regex re =
            new System.Text.RegularExpressions.Regex("\\(copy (\\d+)\\)$");

        internal static string AppendCopyToFileName(string f)
        {
            // use re here...
        }
    }

    // example of using the helper
    private static void Foo() 
    {
       if (File.Exists(name)) 
       {
           // helper gets JIT'd first time through this …
Run Code Online (Sandbox Code Playgroud)

c# static

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

C#初始化局部变量一次

我认为我的问题将是完全愚蠢的,但我必须知道答案.

在这种情况下,是否可以初始化变量一次?

    static void Main()
    {
        while (true)
        {
            MethodA();
            MethodB();
        }
    }

    private static void MethodA()
    {
        string dots = string.Empty;    // This should be done only once

        if (dots != "...")
            dots += ".";
        else
            dots = string.Empty;

        Console.WriteLine(dots + "\t" + "Method A");
        System.Threading.Thread.Sleep(500);
    }

    private static void MethodB()
    {
        string dots = string.Empty;    // This should be done only once

        if (dots != ".....")
            dots += ". ";
        else
            dots = string.Empty;

        Console.WriteLine(dots + "\t" + …
Run Code Online (Sandbox Code Playgroud)

c# initialization

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

值类型有 Type 对象吗?

我确定标题是否具有解释性,但我需要一些帮助来理解这个概念。

我们有类(引用类型),它具有与 Type 对象关联的方法表。除了方法表之外,类型对象还包含所有静态字段、类型 obj 指针和同步块索引。

在引用类型的实例上调用方法时,CLR 会引用此方法表。

方法表包含用于更改实例字段状态的特定方法的 IL。

类似地,我们可以为结构(值类型)定义方法。

在运行时,当在值类型上调用方法时,CLR 从何处引用在值类型的实例上调用的方法的 IL。

struct A
{
    // for Immutability of value type
    public readonly int a;

    public void MethodOnValueType()
    {
        // Some code here
    }
}
Run Code Online (Sandbox Code Playgroud)

CLR 在哪里引用查找名为“MethodOnValueType”的方法的 IL?

托管堆中的值类型是否有任何类型对象?

我确定引用类型的情况,但对值类型感到困惑。

谢谢。

.net c# clr

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

C#中的局部静态变量?

受JavaScript Closures的启发我尝试使用Func <> Delegate在C#中模拟局部静态变量...这是我的代码..

public Func<int> Increment()
    {
        int num = 0;
        return new Func<int>(() =>
        {
            return ++num;
        });
    }

Func<int> inc = Increment();
Console.WriteLine(inc());//Prints 1
Console.WriteLine(inc());//Prints 2
Console.WriteLine(inc());//Prints 3
Run Code Online (Sandbox Code Playgroud)

我很想知道在C#中是否还有其他模拟局部静态变量的方法?谢谢.

.net javascript c#

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