Tag: 数组

在C#类库中使用MATLAB MWArray.dll

我正在尝试在C#类库中使用带有Matlab .net Complier的MATLAB构建的.dll,但程序会在每次初始化MWArray.dll的对象时抛出exception,例如: MWNumericArray m = new MWNumericArra(10,10); 例外: System.TypeInitializationException was caught HResult=-2146233036 Message=The type initializer for ‘MathWorks.MATLAB.NET.Arrays.MWNumericArray’ threw an exception. Source=MWArray TypeName=MathWorks.MATLAB.NET.Arrays.MWNumericArray StackTrace: at MathWorks.MATLAB.NET.Arrays.MWNumericArray.op_Implicit(Double[] values) at VolCalc.Vol.CalculateVolatility(Double[] data) InnerException: System.TypeInitializationException HResult=-2146233036 Message=The type initializer for ‘MathWorks.MATLAB.NET.Arrays.MWIndexArray’ threw an exception. Source=MWArray TypeName=MathWorks.MATLAB.NET.Arrays.MWIndexArray StackTrace: at MathWorks.MATLAB.NET.Arrays.MWIndexArray..ctor() at MathWorks.MATLAB.NET.Arrays.MWNumericArray..ctor(Double scalar) at MathWorks.MATLAB.NET.Arrays.MWNumericArray.get__Inf() at MathWorks.MATLAB.NET.Arrays.MWNumericArray..cctor() InnerException: System.Security.SecurityException […]

.net 32​​位最大字节数组大小是否<2gb?

我一直在寻找一些与字节数组的最大大小相关的SO问题( 这里和这里 ),并且已经使用了一些数组并获得了一些我不太了解的结果。 我的代码如下: byte[] myByteArr; byte[] myByteArr2 = new byte[671084476]; for (int i = 1; i < 2; i++) { myByteArr = new byte[671084476]; } 这将编译并在执行时将在myByteArr的初始化时抛出’System.OutOfMemoryException’ 。 如果我将for循环中的2更改为1或者我注释掉其中一个初始化( myByteArr2或myByteArr )它将正常运行。 另外, byte[] myByteArr = new byte[Int32.MaxValue – 56]; 抛出同样的exception。 为什么在编译为32位时会发生这种情况? 它们不在2gb范围内吗?

C#属性为数组表示法

使用JavaScript可以使用点表示法或数组表示法访问对象。 var myArray = {e1:”elem1″,e2:”elem2″,e3:”elem3″,e4:”elem4″}; var val1 = myArray[“e1”]; var val2 = myArray.e1; 是否可以使用C#实现这一目标? 这就是我的尝试: [AcceptVerbs(HttpVerbs.Post)] public ActionResult Edit(int id, FormCollection frmVals) { string value; Owner owner = new Owner(); foreach (var key in frmVals.AllKeys) { value = frmVals[key]; owner[key] = value; } }

将类型数组转换为通用数组?

问题的简短版本 – 为什么我不能这样做? 我只限于.NET 3.5。 T[] genericArray; // Obviously T should be float! genericArray = new T[3]{ 1.0f, 2.0f, 0.0f }; // Can’t do this either, why the hell not genericArray = new float[3]{ 1.0f, 2.0f, 0.0f }; 更长的版本 – 我在这里使用Unity引擎,虽然这并不重要。 是什么 – 我试图在其固定的Vector2(2个浮点数)和Vector3(3个浮点数)和我的通用Vector 类之间进行转换。 我无法将类型直接转换为通用数组。 using UnityEngine; public struct Vector { private readonly T[] […]

C#:使用if / switch时出错:“已在此范围内定义的局部变量”

我是C#的新手,我的问题可能很简单,但我不明白: 我需要根据条件为数组赋值。 所以我可以使用“if”的“switch”语句来检查条件。 但是,如果我使用“switch”,那么我会收到错误“已在此范围内定义的局部变量”。 如果我使用“if”然后我得到一个错误“在当前上下文中不存在” 例: int x; x=1; //1: //a) does work… if (x==1) { string[,] arraySpielfeld2d = { {“1”, “1” }, {“1”, “1” } }; } else { string[,] arraySpielfeld2d = { {“1”, “1” }, {“1”, “1” } }; } //b) but this does not work MessageBox.Show(arraySpielfeld2d[0,0]); //error: does not exist in current […]

2Darrays与1Darrays

我已经阅读了二维数组与一维数组的性能问题 但最后说它可能是相同的(取决于地图自己的地图function,C会自动执行此操作)?… 我有一个矩阵,它有1000列和440,000,000行 ,其中每个元素都是C#的两倍 … 如果我在内存中进行一些计算,哪一个可以更好地用于性能方面? (请注意,我有需要存储这样一个monstruos数量的信息)…

为什么我不能在通用IEnumerable对象上调用ToArray?

public static T[] ToArray(IEnumerable e) { return e.ToArray(); } 我收到以下编译器错误: 错误1 System.Collections.Generic.IEnumerable不包含ToArray的定义,也没有扩展方法ToArray接受System.Collections.Generic.IEnumerable类型的第一个参数(你是否缺少using指令)或汇编参考? 但是MSDN参考列出了这种方法。 这有什么不对?

将项添加到Jagged数组

我已经看过一些数组主题,但我仍然感到难过。 我希望在我的锯齿状数组中添加一个新行 – 并且我正在努力使语法正确。 int[][] intJaggedArray = new int[7][]; intJaggedArray[0] = new int[3] { 1, 1, 1 }; intJaggedArray[1] = new int[3] { 2, 2, 2 }; intJaggedArray[2] = new int[3] { 3, 3, 3 }; intJaggedArray[3] = new int[3] { 4, 4, 4 }; intJaggedArray[4] = new int[3] { 5, 5, 5 }; intJaggedArray[5] […]

最快的arrays初始化?

在我的应用程序中,我需要一个大的常量(实际上是static readonly )对象数组。 数组在类型的静态构造函数中初始化。 该数组包含超过一千个项目,当首次使用该类型时,我的程序经历了严重的减速。 我想知道是否有办法在C#中快速初始化大型数组。 public static class XSampa { public class XSampaPair : IComparable { public XSampaPair GetReverse() { return new XSampaPair(Key, Target); } public string Key { get; private set; } public string Target { get; private set; } internal XSampaPair(string key, string target) { Key = key; Target = target; } […]

是否有一个函数在C#中为字节数组做圆形位移?

我似乎无法找到是否有内置的方法来执行字节数组的循环位移,C的ROL和ROR用于单个字节? 让我解释一下,比方说,我有一个数组(二进制): [0] = 11001110 [1] = 01000100 [2] = 10100001 然后如果我想做ROL_Array(1 bit)或向左移动1位,我会得到: [0] = 10011100 [1] = 10001001 [2] = 01000011 或者,如果我想做ROR_Array(2 bits)或向右移动2位,我会得到: [0] = 00110011 [1] = 01010001 [2] = 10101000