ضعف [،]، كثافة العمليات []، منطقي [] ... مصفوفة، ملحقات ناقلات التلاعب في C #

StackOverflow https://stackoverflow.com/questions/1421125

  •  07-07-2019
  •  | 
  •  

سؤال

ولست بحاجة (لسرعة النماذج والمكتبات التكامل) شيئا من هذا القبيل (ملحقات للصفائف المعتادة)


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 # مكتبة ل ملحقات اختبار يستند تصميم رمز جيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top