小编Sha*_*ari的帖子

如何在C#中实现C++样式函数指针,而不使用委托

我正在学习C#中的指针,并且好奇是否可以在C#中使用C++样式函数指针.是的,我知道C#有自己的等效功能指针概念(称为委托).但我只是想知道使用C#中的指针是否可以实现相同,而不使用委托.

如果在C#中使用指针是完全合法的(使用不安全选项)并且指针语义几乎与C/C++类似,那么在我看来,也应该能够使用C/C++样式函数指针.请指导我这个.可能吗?如果是的话怎么样?如果不是那么为什么?

请注意C#和C/C++中指针使用的相似性,如下例所示

/* Using pointers in C# (Very similar to C/C++) */
using System;

namespace UnsafeCodeApplication
{
   class TestPointer
   {
      public unsafe static void Main()
      {
         int[]  list = {10, 100, 200};
         fixed(int *ptr = list)

         /* let us have array address in pointer */
         for ( int i = 0; i < 3; i++)
         {
            Console.WriteLine("Address of list[{0}]={1}",i,(int)(ptr + i));
            Console.WriteLine("Value of list[{0}]={1}", i, *(ptr + i));
         }

         Console.ReadKey();
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

c# c++ delegates pointers function-pointers

4
推荐指数
2
解决办法
976
查看次数

为什么在没有C#参与继承的情况下可以覆盖ToString()方法?

请找到以下示例:

using System;

 class MyClass 
 {
   static int count = 0;
   int id;

   public MyClass() 
   {
     id = count;
     count++;
   }

 public override string ToString() 
 {
   return "MyClass object #" + id;
 }
}

 class Test 
 {
   static void Main() 
   {
     MyClass ob1 = new MyClass();
     MyClass ob2 = new MyClass();
     MyClass ob3 = new MyClass();
     Console.WriteLine(ob1);
     Console.WriteLine(ob2);
     Console.WriteLine(ob3);
   }
 }
Run Code Online (Sandbox Code Playgroud)

程序的输出如下所示:

MyClass对象#0
MyClass对象#1
MyClass对象#2

正如您在此处所见,方法ToString()在名为"MyClass"的类中被重写,但"MyClass"不是从任何类派生的,根本不存在继承.如果没有涉及继承如何使用'覆盖'?

如果我们将ToString()更改为任何其他方法名称说'HelloString()',如下面的代码片段所示:

 public class Program
 {
    public static void Main(string[] args)
    {            
        MyClass ob1 = …
Run Code Online (Sandbox Code Playgroud)

c# inheritance tostring

-5
推荐指数
1
解决办法
584
查看次数