لماذا لا تقول C # أن IterativeTask على CCR هو غير عام؟

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

  •  20-09-2019
  •  | 
  •  

سؤال

وأنا باستخدام التزامن والتنسيق وقت التشغيل و أكتب رمز مشابهة لما هو موضح في وثائق. فشل السطر التالي لتجميع:

yield return new IterativeTask<string,Object,Object,long[]>("Hi",a,b,ls, itfunc);

والمترجم يعطي رسالة الخطأ هذه:

The non-generic type 'Microsoft.Ccr.Core.IterativeTask' cannot be used with type arguments

ما هو mistifying لاستخدامات الوثائق التي الأسلوب مع الحجج نوع وانها بوضوح عامة.

و(انا ذاهب للنشر الإجابة الخاصة بي هنا، أن في <لأ href = "https://meta.stackexchange.com/questions/12513/stackoverflow-should-i-answer-my-own-question-or -Not "> شجع كما أفهمها)

هل كانت مفيدة؟

المحلول

واتضح أن هناك حد اقصى لعدد من المعلمات عامة واحدة يمكنك استخدامها مع IterativeTask: يمكن أن يستغرق ثلاثة لكن ليس أكثر

وهكذا، هذا الرمز برمجيا (مرة واحدة قمت بتغيير itfunc لاستخدام واحد أقل حجة):

yield return new IterativeTask<string,Object,long[]>("Hi",a,ls, itfunc);

إذا كنت حقا في حاجة إلى كل المعلومات في الحجج، يمكنك إنشاء نوع تحميلهم:

struct Z {
  string msg;
  Object one;
  Object two;
  long[] ls;
}

Z z = new Z { msg="Hi", one=a, two=b, ls= longs };
yield return new IterativeTask<Z>(z, itfunc);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top