我有點困惑。爲什麼DllImport需要標識符?
在代碼:
[DllImport("library.dll")]
public static extern void function(int x);
爲什麼需要X?這不應該是足夠的,因爲這只是一個定義而不是一個聲明?
我有點困惑。爲什麼DllImport需要標識符?
在代碼:
[DllImport("library.dll")]
public static extern void function(int x);
爲什麼需要X?這不應該是足夠的,因爲這只是一個定義而不是一個聲明?
中的期望值請記住,語言的問題不是「爲什麼我的功能缺失?」這是「[爲什麼不添加我的功能](http://blogs.msdn.com/b/ericlippert/archive/2009/06/22/why-doesn-tc-implement-top-level-methods.aspx) ?」這個特殊的功能需要對函數聲明解析器進行上下文敏感的更改。 (它必須知道它聲明瞭什麼類型的函數。)這會使語法複雜化,而獲得相對較少的好處。 –
等一下,我很困惑。爲什麼不用x表示它不知道它聲明瞭什麼類型的函數? void函數(int)是一個函數,它接受一個int並不返回任何內容。 'x'加上了什麼?當然,它需要「函數」,因爲這是要導入的函數的名稱...... – cwm9
這意味着'DllImport'聲明(參數名稱是可選的)必須與非'DllImport'聲明不同地進行解析(參數名稱是必需的)。這意味着函數聲明解析器需要知道它正在解析哪種類型的聲明,這使得這種方法顯得更加複雜,而且效果相對較小。 「我想添加此功能,以便編寫較少可讀代碼更容易。」 –