相关疑难解决方法(0)

实际使用`stackalloc`关键字

有没有人stackalloc在C#编程时实际使用过?我知道它的作用是什么,但它出现在我的代码中的唯一一次是偶然的,因为Intellisense在我开始输入时建议它static,例如.

虽然它与使用场景无关,但stackalloc我实际上在我的应用程序中做了大量的遗留互操作,因此我偶尔会使用unsafe代码.但是,我通常会找到unsafe完全避免的方法.

而且由于.Net中单个线程的堆栈大小约为1Mb(如果我错了,请纠正我),我使用时更加保留stackalloc.

是否有一些实际案例可以说:"这对我来说是不正确的数据和处理不安全和使用stackalloc"?

c# keyword stackalloc

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

C# 清除数组但不填充 0 替代 List.Clear(将大小恢复为 0)

是否可以在 C# 中完全删除数组但不用 0 填充它:

for(int i=0;i<a.Length;i++)
{
a[i]=0;
}
Run Code Online (Sandbox Code Playgroud)

或者Array.Clear(a,0,a.Length);

但要以 List.Clear() 的方式清除它,使其大小再次像填充之前一样为 0。我尝试过 a=new int[15];,但以前的值仍然存在。谢谢!

c# arrays

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

Array.Reverse是如何工作的?

我有这段简单的代码..

bool isTrue(char[] number)
{
    char[] reverse = number;
    Array.Reverse(reverse);
}
Run Code Online (Sandbox Code Playgroud)

在调试应用程序时,我看到这个数字也是相反的.有人能解释一下为什么吗?它与char数组的工作方式有关,还是我遗漏了什么?

c# arrays reverse char

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

为什么参数发送到函数会发生变化

我记得在谈论函数传递参数时,据说参数在函数执行期间不会改变它的值.但在我的例子中,我观察到我的初始参数值发生了变化:

public static void main()
{
    int[] a = new int[]{some int array};
    int[] b = SortArray(a);
    Output(a);
}

internal static int[] SortArray(int[] a)
{
    int[] c = new int[a.length];
    //Sort process, during which, both c[] and a[] are changing
    return c;
}
Run Code Online (Sandbox Code Playgroud)

执行时Output(a);我发现我a的不再是原来的了.这里的诀窍是什么?

c#

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

C#:int[] 可以为空而不声明它吗?

我正在尝试使用ILGPU来扰乱我的GPU上的CUDA

当我尝试加载内核并向其传递一些数据时:

var krnl = gpu.LoadAutoGroupedStreamKernel<Index1, ArrayView<byte>, int[]>(krnCopyStringToCard);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误,这确实令人困惑:

类型“int[]”必须是不可为 null 的值类型才能将其用作参数...

查看可为空的文档(对我来说是新的),似乎int 可以,但前提是您如此声明。我绝对不会这样做,那有什么用呢?

c# integer nullable nullable-reference-types

-1
推荐指数
1
解决办法
142
查看次数