Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El operador * o -> debe aplicarse a un puntero de datos
El operador * o -> se usó con un tipo que no es de puntero o con un puntero de función. Los punteros de función no se pueden desreferenciar en C#. Para obtener más información, vea Tipos de puntero y punteros de función.
El ejemplo siguiente genera el error CS0193:
// CS0193.cs
using System;
public struct Age
{
public int AgeYears;
public int AgeMonths;
public int AgeDays;
}
public class MyClass
{
public static void SetAge(ref Age anAge, int years, int months, int days)
{
anAge->Months = 3; // CS0193, anAge is not a pointer
// try the following line instead
// anAge.AgeMonths = 3;
}
public static void Main()
{
Age MyAge = new Age();
Console.WriteLine(MyAge.AgeMonths);
SetAge(ref MyAge, 22, 4, 15);
Console.WriteLine(MyAge.AgeMonths);
}
}
En el ejemplo siguiente se muestra que los punteros de función no se pueden desreferenciar en C#, a diferencia de C/C++:
unsafe class FunctionPointerExample
{
public static void Log() { /* ... */ }
public static unsafe void Example()
{
delegate*<void> fp = &Log; // pointer to managed function Log()
fp(); // OK; call Log() via function pointer
(*fp)(); // Error; CS0193, function pointers cannot be dereferenced
}
}