小编SLa*_*aks的帖子

工具查看编译器生成的代码

有没有人知道查看C#编译器生成的委托代码的工具?

我想验证以下内容

class X
{
     public event D Ev;
}
Run Code Online (Sandbox Code Playgroud)

编译为:

class X
{
     private D __Ev;  // field to hold the delegate

     public event D Ev {
           add {
                lock(this) { __Ev = __Ev + value; }
           }

           remove {
                lock(this) { __Ev = __Ev – value; }
           }
     }
}
Run Code Online (Sandbox Code Playgroud)

c#

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

你能让Asp.net MVC View连线编译时安全吗?

获取控制器的标准return语句:

return View("Index");
Run Code Online (Sandbox Code Playgroud)

有没有办法让这个东西编译时安全?使用静态反射或其他一些技巧?

.net c# asp.net-mvc static-reflection

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

在c#中为多维数组添加维度

我有一个多维数组

byte[,] matrix;
Run Code Online (Sandbox Code Playgroud)

我希望复制三维数组

byte[,,] 3dplan; 
Run Code Online (Sandbox Code Playgroud)

通过这种方式

3dplan[,,0]=matrix
Run Code Online (Sandbox Code Playgroud)

在c#中完成此任务的最快方法是什么?

.net c# arrays multidimensional-array

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

急切地处理ManualResetEvent

我有一个类允许其他线程等到它使用a完成一个操作ManualResetEventSlim.(操作通常很简短)

这个类没有明确的生命周期,因此没有一个地方可以轻松关闭事件.
相反,我希望在事件结束后立即关闭事件 - 一旦发出信号,并且在任何等待的线程唤醒之后.

出于性能原因,我宁愿不使用锁.

这段代码是否是线程安全的,是否可以更快?

volatile bool isCompleted;
volatile int waitingCount;
ManualResetEventSlim waiter = new ManualResetEventSlim();

//This method is called on any thread other than the one that calls OnCompleted
public void WaitForCompletion() {
    if (isCompleted)
        return;

    Interlocked.Increment(ref waitingCount);
    Thread.MemoryBarrier();
    if (!isCompleted)
        waiter.Wait();

    if (0 == Interlocked.Decrement(ref waitingCount)) {
        waiter.Dispose();
        waiter = null;
    }
    return;
}

//This method is called exactly once.
protected internal virtual void OnCompleted(string result) {
    Result = result;
    isCompleted = true;
    Thread.MemoryBarrier(); …
Run Code Online (Sandbox Code Playgroud)

.net c# thread-safety

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

Bentley-Ottmann算法实现

在C#或Java中是否存在任何现有的Bentley-Ottmann算法实现/库?

c# java line-intersection line-segment computational-geometry

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

在Android中如何连接base64编码的字符串?

请帮我解决这个问题:

我有两个字符串用于电子邮件ID和密码

String name = "xyz@gmail.com";
String pass = "abc";
Run Code Online (Sandbox Code Playgroud)

我将这两个编码为Base64字符串

String encoded_name = new String(Base64.encode(name.getBytes(), 0));
String encoded_pass = new String(Base64.encode(pass.getBytes(), 0));
Run Code Online (Sandbox Code Playgroud)

我需要用空格连接这两个编码的字符串

String merge = encoded_name + " " + encoded_pass;
Run Code Online (Sandbox Code Playgroud)

我在控制台中检查了这个字符串

System.out.print("Concatenate string= " + merge);
Run Code Online (Sandbox Code Playgroud)

但是在控制台中,我得到了两行这样的结果

11-18 00:25:29.898: INFO/System.out(1244): Merge= eHl6QGdtYWlsLmNvbQ==
11-18 00:25:29.908: INFO/System.out(1244):  YWJj
Run Code Online (Sandbox Code Playgroud)

为什么这个讨厌的结果对我来说意外是为什么它不是单行打印.请帮我解决这个问题.

谢谢

android

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

c#泛型类型的重载错误

我想使用方法重载来根据不同的泛型类型获得不同的结果.这是行不通的.我的代码清楚地表明了

static class Helper
{

    public static bool Can(int i)
    {
        return true;
    }

    public static bool Can(Object o)
    {
        return false;
    }
}

class My<T>
{
    public static bool can = Helper.Can(default(T));
}

Console.WriteLine(Helper.Can(default(int)));//True,it is OK

Console.WriteLine(My<int>.can);//false?? why the overload doesn't work
Console.WriteLine(My<Object>.can);//false
Run Code Online (Sandbox Code Playgroud)

为什么My<int>调用Helper.Can(Object o)而不是Helper.Can(int i)?

c# generics overloading

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

可以在LINQ中更改搜索方法吗?

我有3万行的csv文件.我必须根据许多条件选择许多值,因此在许多循环和"如果"的情况下我决定使用linq.我写了一堂课来读csv.它实现了IEnumerable以与linq一起使用.这是我的普查员:

class CSVEnumerator : IEnumerator
{

    private CSVReader _csv;

    private int _index;

    public CSVEnumerator(CSVReader csv)
    {
        _csv = csv;
        _index = -1;
    }

    public void Reset(){_index = -1;}


    public object Current
    {
        get
        {
            return new CSVRow(_index,_csv);
        }
    }


    public bool MoveNext()
    {
        return ++_index < _csv.TotalRows;
    }

}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但速度很慢.假设我想在范围100; 150行中选择A列中的最大值.

max  = (from CSVRow r in csv where r.ID > 100 && r.ID < 150 select r).Max(y=>y["A"]);
Run Code Online (Sandbox Code Playgroud)

这将工作,但linq搜索30 000行而不是48的最大值.正如我所说,我可以使用循环,但只有在这个示例情况下,条件是"残酷的":)

有没有办法覆盖linq集合搜索.类似于:查看我的枚举器上使用的查询,看看,如果"where"中的任何linq条件包含"行ID过滤器",并根据此提供另一个数据.

我不想将部分数据复制到另一个数组/集合,问题不在我的csv阅读器中.通过id访问每一行很快,唯一的问题是当你访问所有这30 000个时.任何帮助appriciated :-)

c# linq csv

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

反序列化Gson中的通用列表

我想编写一个泛型函数,用Gson反序列化泛型类型List,代码如下:

private <T> List<T> GetListFromFile(String filename)
    {
        //Read textfile
        BufferedReader reader;
        String data="";
        try 
        {
            reader = new BufferedReader(new FileReader(filename));
            data = reader.readLine();
            reader.close();
        } 
        catch (FileNotFoundException ex) 
        {

        } 
        catch (IOException ex) 
        {

        }
        if (data == null) 
        {
            List<T> Spiel = new ArrayList<T>();
            return Spiel;
        }
        else
        {
            //get list with Deserialise
            Gson gson = new Gson();
            List<T> something = gson.fromJson(data, new TypeToken<List<T>>(){}.getType());
            return something;
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是这段代码不起作用,我得到一个奇怪的结构,但不是我的类型列表

当我使用时:

List<concreteType> something = gson.fromJson(data, new TypeToken<List<T>>(){}.getType());
Run Code Online (Sandbox Code Playgroud)

我的工作我得到了List<concreteType>!! …

java generics serialization json gson

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

致命错误:google/protobuf/port_def.inc:没有这样的文件或目录#include &lt;google/protobuf/port_def.inc&gt;

我有窗户。我想使用库 tensorflow 创建一个 C++ op。从这个网站https://www.tensorflow.org/guide/extend/op#compile_the_op_using_your_system_compiler_tensorflow_binary_installation我明白我应该做以下:

TF_CFLAGS=( $(python -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_compile_flags()))') )
TF_LFLAGS=( $(python -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_link_flags()))') )
g++ -std=c++11 -shared zero_out.cc -o zero_out.so -fPIC ${TF_CFLAGS[@]} ${TF_LFLAGS[@]} -O2
Run Code Online (Sandbox Code Playgroud)

我就是这么做的。但我遇到了下一个问题:

In file included from C:\Python\Python37\lib\site-packages\tensorflow\include/tensorflow/core/framework/op_def_builder.h:24,
                 from C:\Python\Python37\lib\site-packages\tensorflow\include/tensorflow/core/framework/op.h:23,
                 from zero_out.cc:4:
C:\Python\Python37\lib\site-packages\tensorflow\include/tensorflow/core/framework/op_def.pb.h:10:10: fatal error: google/protobuf/port_def.inc: No such file or directory
 #include google/protobuf/port_def.inc
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

Run Code Online (Sandbox Code Playgroud)

我不明白我该如何解决这个问题。如果你能帮我解决这个问题,我将不胜感激

c++ windows g++ protobuf-c tensorflow

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