相关疑难解决方法(0)

声明一个数组类型

在讨论关于SO的另一个问题时,我被告知语法

int[] numbers = new int[10];
Run Code Online (Sandbox Code Playgroud)

比.更好

Array numbers = Array.CreateInstance(typeof(int), 10);
Run Code Online (Sandbox Code Playgroud)

我的问题是,第一个语法何时有用,何时第二个语法有用?为什么?

c# arrays

7
推荐指数
2
解决办法
3572
查看次数

无法从double [] []转换为double [*,*]

我有一个看起来像(或多或少)的代码:

public void INeedHolidaysNow(double[,]){
     //... Code to take a break from coding and fly to Hawaii
}

double[][] WageLossPerVacationDay = new  double[10][5];

INeedHolidays(WageLossPerVacationDay); // >>throws the Exception in the Title
Run Code Online (Sandbox Code Playgroud)

我在这篇文章中找到了解决方案,其中包括循环而不是尝试野蛮演员

所以我的问题是:为什么?在内存分配的幕后发生了什么,阻止了看起来似乎 - 至少乍一看,是一个可行的演员?我的意思是在结构上,这两种表达方式似乎都很相似.我在这里失踪的是什么?

编辑:我必须使用"double [] []",因为它是由外部库提供的.

c# arrays

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

C#使用Linq从锯齿状数组中获取列

如何使用Linq从锯齿状数组中获取列的元素作为平面数组????

public class Matrix<T>
{
    private readonly T[][] _matrix;

    public Matrix(int rows, int cols)
    {
        _matrix = new T[rows][];
        for (int r = 0; r < rows; r++)
        {
            _matrix[r] = new T[cols];
        }
    }

    public T this[int x, int y]
    {
        get { return _matrix[x][y]; }
        set { _matrix[x][y] = value; }
    }

    // Given a column number return the elements
    public IEnumerable<T> this[int x]
    {
        get
        {
        }
    }
}

Matrix<double> matrix = new Matrix<double>(6,2);
matrix[0, 0] = …
Run Code Online (Sandbox Code Playgroud)

c# linq jagged-arrays

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

内存切片管理和大对象C#

我有一组存储在3D数组类型中Int16的图像,我缓存的图像数量最多可达600个图像或更多,这会影响内存性能的垃圾收集性能.我听说内存切片可以增强内存管理,因为它将子数组元素设置在一个单独的块中.
- 在我的情况下,我可以使用内存平铺吗?
- 如果是,我该如何使用它?

c# memory memory-leaks memory-management

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

多维数组表示法(object [] []和object [,]之间的区别)

我想知道在C#中定义多维数组的两种方法有什么区别.

您可以使用object[][]object[,]处理多维数组.

有功能差异吗?

c# multidimensional-array

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

记忆混乱

我有一个应用程序,我正在尝试创建一个非常大的字节"立方体".一个3维数组(~1000x1000x500)保存了我感兴趣的所有值 - 但是我遇到了内存问题.虽然这是预期的,但我所获得的各种OOM消息的行为却令人困惑.第一:

Foo[,,] foo1 = new Foo[1000, 1000, 500];

因OOM错误而失败,但这不会:
Foo[,,] foo1 = new Foo[250, 1000, 500];
Foo[,,] foo2 = new Foo[250, 1000, 500];
Foo[,,] foo3 = new Foo[250, 1000, 500];
Foo[,,] foo4 = new Foo[250, 1000, 500];

这两组代码不应该消耗基本相同的内存量吗?

此外,我最初在消耗〜1.5GB时收到错误消息,但我认为通过将其切换到64位应用程序会让我在失败之前使用更多内存.

我是否遇到了堆栈空间限制?如果是这样,我怎样才能完全在堆上实例化这个结构,而不必在堆栈上存在(作为单个实体)?

在此先感谢 - 我期待任何人都可以对这种行为进行抨击.

c# vb.net memory memory-management

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

C#:double [] []和double [,]

我在C#中混淆了double [] []和double [,].
我的队友给我一个这样的功能:

public double[][] Do_Something(double[][] A)
{
     .......
}
Run Code Online (Sandbox Code Playgroud)

我想使用这个功能:

double[,] data = survey.GetSurveyData(); //Get data
double[,] inrma = Do_Something(data);
Run Code Online (Sandbox Code Playgroud)

它导致错误:无效的参数.
我不想编辑我队友的代码.
有没有办法转换double[][]double [,]

谢谢!

c# multidimensional-array

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

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

C#中string [] []和string [,]之间有什么区别?

语法略有不同,但它们之间有什么区别.

public static string[][] str1 = { new string[] { Total, "N2" }};
public static string[,] str2 = { { Total, "N2" } }; 
Run Code Online (Sandbox Code Playgroud)

每种使用的准则是什么?

c# arrays string multidimensional-array

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

C#中[,]和[][]的区别

我目前正在尝试学习 C#,我遇到了以下问题:

C# 中的类型[,][][]类型之间有什么区别?

c# mono multidimensional-array

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