首页 > 解决方案 > C#:变量前面的符号

问题描述

我见过在变量名前有 &、* 和 ^ 的代码,但在线搜索只能找到 @ 的含义。原来的3是什么意思?还有其他这样的吗?

3个片段:

static bool FName(array<double, 2> ^matrix)

pin_ptr<const double> p_pdMatrix = &matrix[0, 0];

sum += *(pdRoot + c + j * nSize)

次要的:您如何寻找诸如这些简单运算符的含义?以上可能是重复的,但我的搜索没有显示任何内容。

标签: c#

解决方案


这些在 C# 中用于Unsafe Code 和 Pointers。它们的工作方式与 C++ 指针非常相似,但通常还需要将对象固定在内存中以避免垃圾收集器移动它们。
它们是一元运算符(即它们对值执行某些操作),与@仅用于将保留字显式解析为变量名不同

这是(C# 参考)中的一个简单示例unsafe

// compile with: -unsafe

class UnsafeTest
{
   // Unsafe method: takes pointer to int:
   unsafe static void SquarePtrParam(int* p)
   {
      *p *= *p;
   }

   unsafe static void Main()
   {
      int i = 5;
      // Unsafe method: uses address-of operator (&):
      SquarePtrParam(&i);
      Console.WriteLine(i);
   }
}
// Output: 25

所有这些都具有安全运算符的附加含义 - 按位xor、按位and和乘法 - 但不太可能是这种情况 - 通常这种用法很清楚。

仔细观察 - 一元^不包含在 C# 中,因此上述评论可能是正确的 - 您可能正在查看C++/CLI


推荐阅读