c# - 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# 中用于Unsafe Code 和 Pointers。它们的工作方式与 C++ 指针非常相似,但通常还需要将对象固定在内存中以避免垃圾收集器移动它们。
它们是一元运算符(即它们对值执行某些操作),与@
仅用于将保留字显式解析为变量名不同。
// 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。
推荐阅读
- html - 更改颜色背景幻灯片白色渐变 IONIC 3
- charts - 图表中的 Crystal Reports 共享变量
- python - tf.contrib.slim.conv2d 和 tf.contrib.layers.conv2d 有什么区别?
- vba - 如何使用 Powershell 在打开的 Excel 工作簿上运行 vba 程序
- python - python解释器,如何在分配变量时停止执行函数?
- list - 从递减列表中随机选择
- autodesk-forge - 如何获取bucket文件的urn
- java - 如何使用 groovy 中的 pdfbox 进行编译(无法解析 org.apache.pdfbox.util.Splitter 类)?
- python - 在不同位置加入字符串的 Pythonic 方法
- java - 实现 Kotlin 类的 java 接口