मेरे पास WriteableBitmap
है जो मैं पिक्सेल प्लॉट करने के लिए एक असुरक्षित विधि का उपयोग करता हूं। अनिवार्य हिस्सा इस तरह दिखता है:मैं सी # में पॉइंटर जेनेरिक कैसे बना सकता हूं?
private unsafe void DrawBitmap(WriteableBitmap bitmap, byte[] pixels)
{
// Boilerplate omitted...
fixed (byte* pPixels = pixels)
{
for (int y = 0; y < height; y++)
{
var row = pPixels + (y * width);
for (int x = 0; x < width; x++)
{
*(row + x) = color[y + height * x];
}
}
}
bitmap.WritePixels(new Int32Rect(0, 0, width, height), pixels, width*pf.BitsPerPixel/8, 0);
}
हालांकि, यह निश्चित उपयोगकर्ता क्या चाहता है कि साजिश प्रकार byte
की है करने के लिए नहीं है, और यह समझ बनाने के लिए इस विधि का सामान्य (यानी DrawBitmap<T>
) बनाने के लिए होगा, लेकिन कैसे कर सकते हैं मैं प्रकार के सूचक pPixels
बनाते हैं?
क्या कोई अन्य चाल है जो मेरे DrawBitmap
जेनेरिक बनाती है?
"जेनेरिक" का अर्थ है कि एक ही विधि (एक ही आईएल) * सभी * प्रकारों के लिए काम करता है, न कि केवल आप वास्तव में टाइप पैरामीटर के रूप में उपयोग कर रहे हैं। विभिन्न पूर्णांक प्रकार (बाइट, int, ...) को अलग-अलग आईएल की आवश्यकता होती है, ताकि आप विधि को सामान्य नहीं बना सकें। – dtb
मुझे नहीं लगता कि 'pPixels' या 'pixels' कहां से आ रहा है? सभी कोड पोस्ट करें? – LukeHennerley
लेकिन जैसा कि @ डीटीबी कहते हैं, आपको एक प्रकार की आवश्यकता है जो 'ऑब्जेक्ट' से सरल शब्दों में प्राप्त होता है, सामान्य प्रकारों में मूल्य प्रकारों का उपयोग नहीं किया जा सकता है। मैं इसके बजाय विधि के विभिन्न ओवरलोड का उपयोग करने पर विचार करता हूं। – LukeHennerley