这是我最近想到的,引自维基百科:"要初始化一个函数指针,你必须在它的程序中给它一个函数的地址."
所以,我不能指出一个任意的内存地址,但如果我用一个与之前相同大小的数据覆盖函数地址的内存而不是通过指针调用它呢?如果这样的数据对应于实际函数并且两个函数具有匹配的签名,则应该调用后者而不是第一个.
理论上可行吗?
如果由于我应该注意的一些非常明显的原因这是不可能的,我道歉.
好吧,我的问题是数学性的.我有一个字节数组,其长度为X,我需要找到两个最接近的数字,它们相乘X.我需要这样做,因为我从一个字节数组建一个位图,我需要使位图看起来像一个正方形尽可能多.我在C#中对此进行编码,但不要担心语法,任何算法或伪代码都可以.在此先感谢您的帮助
我的问题是我有一个类,其构造函数将System.Delegate对象作为参数,我不知道如何将方法分配给System.Delegate对象.这是我现在的代码
class TestClass
{
Delegate c = TestMetod;
static void TestMetod()
{
MessageBox.Show("it worked !");
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为奇怪的是,System.Delegate是一个非委托类型,如msdna所述.我怎么应该做我需要的,因为不可能"将方法组TestMetod分配给非委托类型'System.Delegate'"
作为进入合并排序的第一次尝试,我生成了以下代码,这些代码适用于字符串,因为它们比列表更容易处理.
class Program
{
static int iterations = 0;
static void Main(string[] args)
{
string test = "zvutsrqponmlihgfedcba";
test = MergeSort(test);
// test is sorted after 41 iterations
}
static string MergeSort(string input)
{
iterations++;
if (input.Length < 2)
return input;
int pivot = 0;
foreach (char c in input)
pivot += c;
pivot /= input.Length;
string left = "";
string right = "";
foreach (char c in input)
if (c <= (char)pivot)
left += c;
else
right += c; …
Run Code Online (Sandbox Code Playgroud)