ضعف [،]، كثافة العمليات []، منطقي [] ... مصفوفة، ملحقات ناقلات التلاعب في C #
سؤال
ولست بحاجة (لسرعة النماذج والمكتبات التكامل) شيئا من هذا القبيل (ملحقات للصفائف المعتادة)
double[] d;
d.SetRow(1,{ 1.1 , 2.0 ,3.3});
var r = d.GetRow(1);
d = d.AppendRight(new int[]{1,2,3});
...
هل توجد شيء من هذا القبيل في أي مكان؟ على أي شخص قد يكون تنفيذ ذلك حتى لا حاجة لي هل أنا بالنسبة لي نفسي؟
المحلول
وهذا لا ينبغي أن يكون من الصعب جدا لكتابة نفسك.
ووالشيء المهم أن نكون حذرين للغاية من هو كيف يمكن تحرير صفائف من الخصائص.
وشيء من هذا القبيل (رمز لم تختبر صعبة للغاية، ولكن يجب أن تعطيك فكرة):
public class ArrayRow<T> {
//add your own ..ctor etc
T[,] matrix; //don't make this public see http://msdn.microsoft.com/en-us/library/k2604h5s.aspx
public int Index { get; private set; }
//note that this will be a copy
public T[] GetValues() {
T[] retval = new T[matrix.GetLength(1)];
for ( int i = 0; i < retval.Length; i++ )
retval[i] = matrix[Index, i];
return retval;
}
public void SetValues(T[] values)
//..and so on, you get the idea
}
وبعد ذلك يمكنك توسيع مجموعة:
public static ArrayExtensions {
public void SetRow<T> ( this T[,] matrix, int rowIndex, T[] values ) {
//check rowIndex in range and array lengths match
}
public ArrayRow<T> GetRow<T> ( this T[,] matrix, int rowIndex ) {
//check rowIndex in range
return new ArrayRow<T> ( matrix, rowIndex );
}
}
وبعد ذلك يمكنك الاعتماد على معلمة نوع يتم الاستدلال.
نصائح أخرى
وإلقاء نظرة على Math.NET . وهي مكتبة الرياضيات مفتوحة المصدر. قد تجد ما تحتاجه.
لغات مثل القوائم دعم بايثون مع أنواع مختلطة. يمكنك إنشاء برنامج نصي و IronPython ومن ثم يطلق عليه من هاتفك C # التطبيق. تابع <وهو أ href = "http://blogs.microsoft.co.il/blogs/berniea/archive/2008/12/04/extending-your-c-application-with-ironpython.aspx" يختلط = "نوفولو noreferrer" > هذا الرابط لنرى كيف يمكنك الاتصال النصي و IronPython من التطبيق الخاص بك.
مصفوفة الامتدادات C # مكتبة ل ملحقات اختبار يستند تصميم رمز جيل.